3D Movie Maker është portuar në Linux

3D Movie Maker është portuar në Linux

Zhvilluesit e projektit 3DMMEx arritën e nisjes së klasikes Microsoft 3D Movie Maker në Linux pa Wine dhe makinën virtuale. Rreth punës së kryer folësi ishte Ben Stone, autori i portit të origjinës 3DMMEx. Sipas tij, projekti arriti një etapë të rëndësishme: programi tani mund të ndërtohet dhe të nishet në Linux, duke e bërë 3DMMEx degën e parë të njohur të 3D Movie Maker që funksionon përtej Windows. Publikimi për transferimin është datuar 9 maj 2026.

Microsoft 3D Movie Maker — një program për fëmijë nga viti 1995 për krijimin e filmave të thjeshtë 3D: përdoruesi zgjidhte skenat, vendoste personazhet dhe objektet, përcaktonte veprimet, shtonte replika, zë dhe muzikë. Për një kohë të gjatë, projekti mbeti një të kaluar historike të epokës së Windows 95, por në maj 2022, Microsoft hapi kodin burimor të 3D Movie Maker nën licencën MIT. Depozita zyrtare e Microsoft është e aksesueshme në GitHub; në përshkrim është e qartë se kjo është kodi burimor i projektit origjinal të vitit 1995, i publikuar si softuer i hapur sipas licencës MIT.

Hapja e kodit burimor u bë pika fillestare për disa përpjekje për të ringjallur programin. Fillimisht, projekti 3DMMForever, ishte angazhuar në modernizimin e ndërtimit dhe përgatitjen për kompilimin me mjete moderne. Më vonë, kur puna mbi të ngadalësohej, Ben Stone krijoi një degë 3DMMEx. Qëllimi i projektit është të ruajë përvojën klasike të përdorimit të 3D Movie Maker, por të shtojë disa përmirësime të vogla dhe ta bëjë kodin të portueshëm për sisteme moderne.

Transferimi nuk ishte thjesht një rikompilim i kodit të vjetër. Kodet burimore të 3D Movie Maker ishin shkruar nën një dialekt të vjetër C++, Microsoft Visual C++, Win32 API dhe modelin e 32-bitëve të memorjes. Për më tepër, biblioteka të brendshme përdoreshin varësi statike, asamble x86 të integruar, supozime të vjetra mbi madhësinë e treguesve dhe lidhje me nën-sistemat specifike për Windows.

Çfarë duhej bërë

  • Zëvendësimi i shtresës Win32 me SDL. Në 3D Movie Maker përdoret një kuadër aplikativ të brendshëm Kauai, i cili fillimisht e abtraksionoi një pjesë të funksioneve sistemike, por në praktikë gjithmonë mbështetej në Win32. Në 3DMMEx, implementimi i ndërfaqes grafike u transferua në SDL2. Kjo mundësoi zëvendësimin e nën-sistemit të dritareve, përpunimin e hyrjeve dhe vizatimin, duke ruajtur kështu arkitekturën e vjetër të aplikacionit.

  • Rikodimi i vizatimit dhe hyrjeve. Disa disa operacione që në Win32 janë realizuar me një thirrje, në SDL duhej të realizoheshin manualisht. Për shembull, për të punuar me fontet në Windows, u përdorën funksionet ekzistuese për enumerimin dhe krijimin e fonteve, ndërsa në versionin portativ, kjo logjikë duhej të shkruhej veçmas për platformat. Në mënyrë të ngjashme, sistemi i kombinimeve të tasteve u realizua përsëri, sepse realizimi i vjetër për Windows nuk mund të përdorej drejtpërdrejt në Linux.

  • Heqni assembler-in e integruar. Në Kauai dhe komponentët e lidhur, u përdor një assembler i 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 portabiliteti, këto pjesë u zëvendësuan me variante në C/C++. Sipas autorit, kjo jo vetëm që e thjeshtoi ndërtimin jashtë Windows-it, por në disa raste madje përmirësoi performancën për shkak të realizimeve moderne të memcpy dhe memmove në bibliotekën standarde C.

  • Zgjidhni çështjet me bibliotekat statike. 3D Movie Maker kishte dy varësi të rëndësishme të jashtme: BRender dhe AudioMan. BRender është një motor tre-dimensional nga Argonaut Software, i përdorur për grafikën. Kodi i tij burimor gjithashtu u hap, por përmbante shumë assembler x86. Për 3DMMEx përdoret një variant ku pjesët assembler janë zëvendësuar me kod portativ.

  • Zëvendësoni AudioMan për Linux. Biblioteka AudioMan nuk ishte vetëm përgjegjës për riprodhimin e zërit, por gjithashtu për importin dhe regjistrimin e tingujve brenda aplikacionit. Pasi ishte ngushtësisht e lidhur me zërin e Windows-it dhe ndërfaqet COM, zhvilluesit nuk e përcaktuan atë drejtpërdrejt. Për sistemet jo-Windows, u shtua një modul i ri për riprodhimin dhe regjistrimin e zërit të bazuar në miniaudio.

  • Shtoni mbështetje për MIDI dhe video. Për portin në Linux, u integruan FluidSynth për riprodhimin e MIDI dhe GStreamer për luajtjen e videove të ndërprera. Gjithashtu duhej të zgjidhnin problemet tipike të portimit të programeve të vjetra Windows në mjedisin POSIX: ndjeshmëria e emrit të skedarëve ndaj regjistrit, ndarjet e prapme të kthyer në rrugë, funksionet platformike për punën me skedarët dhe detaje të tjera që së bashku e dëmtojnë nisjen e aplikacionit.

  • Përgatitni kodin për sistemet 64-bit. Një pjesë e madhe e kodit të vjetër supozonte një mjedis 32-bit. Gjatë transferimit u identifikuan vendet ku treguesit ishin reduktuar në numra 32-bit, dhe strukturat që ruheshin në disk ishin në varësi të madhësisë së treguesit. Për të ruajtur përputhshmërinë me skedarët e projekteve 3D Movie Maker, ne kodin e programit u shtuan kontrollime të madhësive të strukturave dhe një logjikë e veçantë e serializimit.

  • Përmirësoni ndihmën dhe testimin. Pjesa e brendshme e testeve Kauai u transferua në Google Test, dhe në kodin u shtuan kontrolle shtesë dhe regjistra të 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ë skriptet e veta të aplikacionit.

Tani në depot 3DMMEx janë deklaruar mbështetje për Linux, grafikë dhe input përmes SDL2, ndërtim me Visual Studio 2022, Clang dhe GCC, ndërtim 64-bit për x64 dhe ARM64, zëvendësimi i assemblerit të integruar me C++ portues, teste modulare, përmirësim i funksionimit me miun, kombinime të reja të tastierës dhe importim më cilësor të tingullit. Për ndërtimin në Linux nevojiten CMake, Ninja, GCC dhe bibliotekat e zhvillimit SDL2, SDL2_ttf, GStreamer, GTK3, iconv dhe Fontconfig.

Aktualisht, versioni për Linux duhet të ndërtohet nga burimi. Autorët planifikojnë të përgatisin ndërtimet binare më vonë për distribucione të njohura. Megjithatë, porta tashmë është funksionale: sipas Ben Stone, të gjitha mundësitë e 3DMMEx punojnë në versionin SDL/Linux, megjithëse ka probleme me trajtimin e miut gjatë tërheqjes së aktorëve në skenë. Po ashtu, mes mundësive të ardhshme të zhvillimit është përmendur kalimi në macOS dhe një variant përmes Emscripten për të ekzekutuar në shfletues.

Kështu, hapja e burimeve të Microsoft në vitin 2022 gradualisht solli jo vetëm ruajtjen e programit të vjetër në formë arkivike, por edhe një transferim të plotë në platforma moderne. 3D Movie Maker tani mund të shikohet jo vetëm si një ekspozitë muzeale e epokës Windows 95, por edhe si një shembull se si publikimi i kodit nën një licencë të lirë lejon pas dekadash të rikthehet në jetë një aplikacion i harruar prej kohësh.

Burimi: linux.org.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster