3D Movie Maker on portitud Linuxile

3D Movie Maker on portitud Linuxile

Projekti arendajad 3DMMEx saius klassikalise Microsoft 3D Movie Maker Linuxis ilma Wine'i ja virtuaalmasinata. Töö kohta rÀÀkis Ben Stone, 3DMMEx originaalse pordi autor. Tema sĂ”nul on projekt saavutanud olulise verstaposti: programmi saab nĂŒĂŒd kokku panna ja kĂ€ivitada Linuxis, mis teeb 3DMMEx'ist esimese teadaoleva 3D Movie Maker'i haru, mis töötab Windows'ist vĂ€ljaspool. Publikatsioon ĂŒleviimisest on dateeritud 9. mai 2026.

Microsoft 3D Movie Maker — 1995. aastal lasteprogramm, mis vĂ”imaldas luua lihtsaid kolmemÔÔtmelisi multifilme: kasutaja valis stseene, paigutas tegelasi ja objekte, mÀÀras neile tegevusi, lisas dialooge, heli ja muusikat. Pikka aega oli projekt suletud ajalooline artefakt Windows 95 ajast, kuid mai 2022. aastal avas Microsoft 3D Movie Maker'i lĂ€htekoodi MIT litsentsi alusel. Microsofti ametlik hoidla on saadaval GitHubis; kirjelduse kohaselt on see 1995. aasta originaalprojekti lĂ€htekood, mis on avalikustatud avatud tarkvarana MIT litsentsi alusel.

LĂ€htekoodide avamine oli alguspunktiks mitmele katsele programmi ellu Ă€ratada. Esmalt ilmus projekt 3DMMForever, mis tegeles versiooni moderniseerimise ja tĂ€napĂ€evaste vahenditega kompileerimise ettevalmistamisega. Hiljem, kui töö selle kallal aeglustus, lĂ”i Ben Stone haru 3DMMEx. Projekti eesmĂ€rk on sĂ€ilitada klassikaline kogemus 3D Movie Maker'iga, kuid lisada vĂ€ikeseid parandusi ja muuta kood kaasaegsete sĂŒsteemidega ĂŒhilduvaks.

Ülekanne ei osutunud lihtsaks vanade koodide ĂŒmberkompileerimiseks. 3D Movie Maker'i lĂ€htekood oli kirjutatud vana C++ dialekti, Microsoft Visual C++, Win32 API ja 32-bitise mĂ€lumudeli jaoks. Lisaks kasutasid sisemised raamatukogud staatilisi sĂ”ltuvusi, sisseehitatud x86 assembly keelt, vanu eeldusi nĂ€itajate suuruse kohta ja sidumist Windowsi-spetsiifiliste sĂŒsteemidega.

Mida tuli teha

  • Asendada Win32 kiht SDL'iga. 3D Movie Maker'is kasutatakse sisemist rakendusraamistiku Kauai, mis algselt abstraktseeris osa sĂŒsteemifunktsioone, kuid praktikas tugines see siiski Win32-le. 3DMMEx'is viidi graafilise kasutajaliidese rakendus ĂŒle SDL2. See vĂ”imaldas asendada aknasĂŒsteemi, sisendi töötlemise ja renderdamise, sĂ€ilitades samas vanade rakenduse arhitektuuri.

  • Renderdamise ja sisendi ĂŒmbersalvestamine. MĂ”ned toimingud, mis Win32-s tehti ĂŒhe kutsungi kaudu, tuli SDL-is kĂ€sitsi teostada. NĂ€iteks Windowsis kasutati fonte tuvastamiseks ja loomiseks valmis funktsioone, kuid kaasaskantavas versioonis tuli see loogika eraldi platvormide jaoks kirjutada. Samamoodi taastati klaviatuuri otseteed, kuna vana Windowsi versioon ei olnud vĂ”imalik otse Linuxis kasutada.

  • Eemalda sisse ehitatud assembler. Kauai ja sellega seotud komponentides kasutati kĂ€sitsi optimeeritud assemblerit x86 jaoks, sealhulgas mĂ€lu kopeerimise, pilditöötluse ja andmete tihendamise funktsioonides. Üksnes kaasaskantavuse nimel asendati need osad C/C++ variantidega. Autori sĂ”nul lihtsustas see mitte-Windowsi keskkondades kokkupanekut ja mĂ”nel juhul isegi parandas jĂ”udlust modernsete memcpy ja memmove teostushaarudes C standardraamatukogus.

  • Selgeks teha staatilised raamatukogud. 3D Movie Maker'il olid kaks olulist vĂ€list sĂ”ltuvust: BRender ja AudioMan. BRender on Argonaut Software'i kolmemÔÔtmeline mootor, mida kasutati graafikas. Tema lĂ€htekood oli samuti avatud, kuid sisaldas ka palju x86-assemblerit. 3DMMEx-i kasutatakse varianti, kus assembleri osad on asendatud kaasaskantava koodiga.

  • Asenda AudioMan Linuxi jaoks. Raamatukogu AudioMan vastutas mitte ainult heli taasesituse, vaid ka helide importimise ja salvestamise eest rakenduses. Kuna see oli tihedalt seotud Windowsi heli ja COM-liidestega, siis ei otsustanud arendajad seda otse portida. Mitte-Windowsi sĂŒsteemide jaoks on lisatud uus heli taasesituse ja salvestamise moodul, mis pĂ”hineb miniaudio.

  • Lisa MIDI ja videoklipi tugi. Linuxi portimiseks on integreeritud FluidSynth MIDI taasesitamiseks ja GStreamer videoklipi esitamiseks. Samuti tuli lahendada tĂŒĂŒpilised probleemid vana Windowsi programmide kandmisel POSIX keskkonda: failinimede tundlikkus suur- ja vĂ€ike­tĂ€htede suhtes, tagasipoole kaldkaarte teedess, platvormipĂ”hised failihaldusfunktsioonid ja muud pisiasjad, mis kokku rikuvad rakenduse kĂ€ivitamist.

  • Valmistada kood 64-bitiste sĂŒsteemide jaoks ette. Oluline osa vanast koodist eeldas 32-bitist keskkonda.. Üleviimisel ilmnesid kohad, kus nĂ€idikud muudeti 32-bitisteks numbriteks ning struktuurid, mis salvestati kettale, sĂ”ltusid nĂ€idiku suurusest. Et mitte rikkuda 3D Movie Maker projektifailide ĂŒhilduvust, lisati koodi struktuuride suuruse kontrollid ja eraldi serialiseerimise loogika.

  • Parandada silumist ja testimist. Osa Kauai sisetestidest viidi ĂŒle Google Test, ning koodile lisati tĂ€iendavad kontrollid ja kasutajaliidese skriptide tĂ€itmise logid. See on oluline, kuna suur osa 3D Movie Maker loogikast elu ei ela tavalises C++ koodis, vaid omaette rakenduse skriptides.

Praegu 3DMMEx hoidlas on vĂ€lja kuulutatud Linuxi tugi, graafika ja sisend lĂ€bi SDL2, kompileerimine Visual Studio 2022, Clang ja GCC, 64-bitised kogumikud x64 ja ARM64, sisseehitatud assembleri asendamine ĂŒlekantava C++-ga, moodulitestimine, parem hiire kasutatavus, uued klaviatuurikombinatsioonid ja kvaliteetsem heli import. Linuxi kogumise jaoks on vajalikud CMake, Ninja, GCC ja SDL2, SDL2_ttf, GStreamer, GTK3, iconv ning Fontconfig arendusteegid.

Kuni Linuxi versioon tuleb koostada lÀhtekoodist. Valmis binaarsed kogud plaanib autor hiljem valmistada populaarsete distributsioonide jaoks. Samas on port juba funktsionaalne: Ben Stone'i sÔnul töötavad kÔik 3DMMExi vÔimalused SDL/Linux versioonis, kuigi hiire kÀsitlemisega, kui tegelasi stseenis lohistatakse, on endiselt probleeme. Samuti on ulatuslike tulevaste suundade seas nimetatud portimist macOS-ile ja varianti Emscripteni kaudu brauseris kÀivitamiseks.

Seega viis Microsofti lĂ€htekoodide avamine 2022. aastal jĂ€rk-jĂ€rgult mitte lihtsalt vana programmi arhiveerimise sĂ€ilitamiseni, vaid ka tĂ€ieliku ĂŒleviimiseni kaasaegsetele platvormidele. 3D Movie Makerit saab nĂŒĂŒd pidada mitte ainult Windows 95 ajastu muuseumieksponaadiks, vaid ka nĂ€iteks sellest, kuidas koodi avalikustamine vabade litsentside alusel vĂ”imaldab aastakĂŒmnete möödudes ellu Ă€ratada ammu hĂŒlgatud rakenduse.

Allikas: linux.org.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster