
Zhvilluesit e projektit 3DMMEx arriti në lançimin e klasikes Microsoft 3D Movie Maker në Linux pa Wine dhe makina virtuale. Rreth punës së kryer foli Ben Stone, autori i portit origjinal 3DMMEx. Sipas tij, projekti arriti një prag të rëndësishëm: tani programa mund të ndërtohet dhe të ekzekutohet në Linux, duke e bërë 3DMMEx degën e parë të njohur të 3D Movie Maker, që funksionon jashtë Windows. Publikimi rreth portimit është datuar 9 Maj 2026.
Microsoft 3D Movie Maker â njĂ« program fĂ«mijĂ«sh i vitit 1995 pĂ«r krijimin e animacioneve tĂ« thjeshta tre-dimensionale: pĂ«rdoruesi zgjidhte skenat, vendoste personazhet dhe objektet, caktonte veprime pĂ«r to, shtonte replika, zĂ« dhe muzikĂ«. PĂ«r njĂ« kohĂ« tĂ« gjatĂ«, projekti mbeti njĂ« artefakt historik i mbyllur i epokĂ«s Windows 95, por nĂ« maj 2022, Microsoft hapi kodin burimor tĂ« 3D Movie Maker nĂ«n licencĂ«n MIT. Depoja zyrtare e Microsoft Ă«shtĂ« e disponueshme nĂ« GitHub; nĂ« pĂ«rshkrim theksohet qartĂ« se ky Ă«shtĂ« kodi burimor i projektit origjinal tĂ« vitit 1995, publikuar si software me burim tĂ« hapur nĂ«n licencĂ«n MIT.
Hapja e burimeve u bë pikënisje për disa përpjekje për të rikthyer programin. Fillimisht u shfaq projekti 3DMMForever, i angazhuar në modernizimin e përmbledhjes dhe përgatitjen për kompilimin me mjete moderne. Më vonë, kur puna mbi të ngadalësoi, Ben Stone krijoi një degë 3DMMEx. Qëllimi i projektit është të ruajë përvojën e klasike të punës me 3D Movie Maker, por të shtojë disa përmirësime të vogla dhe të bëjë kodin të transferueshëm në sistemet moderne.
Transferimi nuk ishte një thjesht rikompilim i kodit të vjetër. Burimet e 3D Movie Maker ishin shkruar për një dialekt të vjetër C++, Microsoft Visual C++, Win32 API dhe modelin 32-bit të memories. Për më tepër, në bibliotekat e brendshme ishin përdorur varësitë statike, assembleri i integruar x86, supozimet e vjetra për madhësinë e treguesve dhe lidhja me nën-sistemat specifike të Windows.
ĂfarĂ« duhej tĂ« bĂ«hej
Të zëvendësohej shtresa Win32 me SDL. 3D Movie Maker përdor një kornizë aplikacioni të brendshme Kauai, e cila fillimisht abstenoi një pjesë të funksioneve sistemore, por në praktikë, përsëri mbështetej në Win32. Në 3DMMEx, implementimi i ndërfaqes grafike u transferua në SDL2. Kjo lejoi zëvendësimin e nëndër-sistemit të dritareve, trajtimin e inputit dhe vizatimin, duke ruajtur arkitekturën e vjetër të aplikacionit.
Rikthej vizatimin dhe inputin. Disa disa operacione, të cilat në Win32 kryhen me një thirrje, në SDL duhet të implementoheshin manualisht. Për shembull, për punën me fonte në Windows janë përdorur funksione të gatshme për enumerimin dhe krijimin e fonteve, ndërsa në versionin e portuar, ky logjik duhet të shkruhej ndaras për platforma. Po ashtu, sistemi i kombinimeve të çelësave u realizua nga e para, pasi implementimi i vjetër për Windows nuk mund të përdorej drejtpërdrejt në Linux.
Nxjerrë assemblin e ndërtuar. Në Kauai dhe komponentët e lidhur u përdor assemblin e optimizuar manualisht për x86, përfshirë në funksionet e kopjimit të memories, përpunimit të imazheve dhe kompresimit të të dhënave. Për qëllime portimi, këto pjesë u zëvendësuan me varianta në C/C++. Sipas autorit, kjo jo vetëm që e thjeshtoi ndërtimin jashtë Windows, por në disa raste madje përmirësoi performancën për shkak të implementimeve moderne të memcpy dhe memmove në bibliotekën standarde C.
TĂ« kuptojmĂ« me bibliotekat statike. 3D Movie Maker kishte dy varĂ«si tĂ« rĂ«ndĂ«sishme tĂ« jashtme: BRender dhe AudioMan. BRender â njĂ« motor 3D nga Argonaut Software, i pĂ«rdorur pĂ«r grafikĂ«. Kodi i tij burimor gjithashtu Ă«shtĂ« hapur, por ndante shumĂ« x86-assembler. PĂ«r 3DMMEx pĂ«rdoret njĂ« variant, ku pjesĂ«t e assemblerit janĂ« zĂ«vendĂ«suar me kod tĂ« bartshĂ«m.
Zëvendëso AudioMan për Linux. Biblioteka AudioMan ishte përgjegjës jo vetëm për riprodhimin e zërit, por edhe për importimin dhe regjistrimin e tingujve brenda aplikacionit. Duke qënë se ishte ngushtësisht e lidhur me zërin e Windows dhe ndërfaqet COM, zhvilluesit nuk e transferuan atë drejtpërdrejt. Për sistemet jo-Windows u shtua një moduli i ri për riprodhimin dhe regjistrimin e zërit bazuar në miniaudio.
Shtoni mbështetje për MIDI dhe video-insert. Për portimin në Linux janë integruar FluidSynth për riprodhimin e MIDI dhe GStreamer për shfaqjen e videove. Gjithashtu, duhej të zgjidheshin problemet tipike për kalimin e programeve të vjetra Windows në mjedisin POSIX: ndjeshmëria e emrave të skedarëve ndaj rastit, shenjat e prapme në rrugë, funksionet platformë për operimin me skedarët dhe detaje të tjera, të cilat së bashku prishin nisjen e aplikacionit.
Përgatitni kodin për sisteme 64-bit. Një pjesë e madhe e kodit të vjetër supozonte një ambient 32-bit. Gjatë transferit u identifikuan vende ku treguesit ishin konvertuar në numra 32-bit, dhe strukturat që ruheshin në disk varetin nga madhësia e treguesit. Për të ruajtur kompatibilitetin me skedarët e projekteve 3D Movie Maker, kodi u pasurua me kontroll të madhësive të strukturave dhe logjikë të veçantë serializimi.
Përmirësoni debugimin dhe testimin. Një pjesë e testeve të brendshme Kauai janë transferuar në Google Test, dhe në kod u shtuan kontrollime të tjera dhe regjistrat e ekzekutimit të skenarëve të ndërfaqes. Kjo është e rëndësishme sepse një pjesë e madhe e logjikës së 3D Movie Maker jeton jo në kodin e zakonshëm C++, por në skenaret e veta të aplikacionit.
Tani në repository 3DMMEx është shpallur mbështetje për Linux, grafikë dhe input përmes SDL2, ndërtim me Visual Studio 2022, Clang dhe GCC, ndërtimet 64-bit për x64 dhe ARM64, zëvendësimi i assembler-it të integruar me C++ të portueshëm, testime modulare, përmirësimi i punës me miun, kombinime të reja të tastierës dhe import më cilësor të zërit. Për ndërtimin në Linux nevojiten CMake, Ninja, GCC dhe bibliotekat zhvillimore SDL2, SDL2_ttf, GStreamer, GTK3, iconv dhe Fontconfig.
Aktualisht, versioni për Linux duhet të ndërtohet nga burimet. Autorit planifikon të përgatisë ndërtimet binare të gatshme më vonë për distribucionet popullore. Megjithatë, porti vetë është funksional: sipas Ben Stone, të gjitha funksionalitetet e 3DMMEx punojnë në versionin SDL/Linux, megjithëse ka ende probleme me përpunimin e mausit kur tërhiqen aktorët në skenë. Po ashtu, mes drejtimeve të mundshme të ardhshme përmenden kaluarja në macOS dhe një variant përmes Emscripten për të funksionuar në shfletues.
Kështu, hapja e burimeve të Microsoft në 2022 gradualisht çoi jo vetëm në ruajtjen e programit të vjetër në një format arkivor, por në një transferim të plotë në platformat moderne. 3D Movie Maker tani mund të konsiderohet jo vetëm si një ekspozitë e muzeut të epokës Windows 95, por edhe si një shembull se si publikimi i kodit nën një licencë të lirë mund të lejojë, pas dekadash, rikthimin në jetë të një aplikacioni të braktisur për një kohë të gjatë.
Burimi: linux.org.ru
