3D Movie Maker przeniesiony na Linux

3D Movie Maker przeniesiony na Linux

Twórcy projektu 3DMMEx osiągnęli uruchomienie klasycznej Microsoft 3D Movie Maker na systemie Linux bez Wine i maszyny wirtualnej. O zrealizowanej pracy opowiedział Ben Stone, autor kodu źródłowego portu 3DMMEx. Jego zdaniem projekt osiągnął ważny kamień milowy: program można teraz skompilować i uruchomić w systemie Linux, co czyni 3DMMEx pierwszym znanym rozwidleniem 3D Movie Maker działającym poza Windows. Publikacja przeniesienia datowana jest na 9 maja 2026 roku.

Microsoft 3D Movie Maker — program dla dzieci z 1995 roku do tworzenia prostych filmów 3D: użytkownik wybierał sceny, ustawiał postacie i obiekty, przypisywał im działania, dodawał dialogi, dźwięk i muzykę. Przez długi czas projekt pozostawał zamkniętym artefaktem historycznym epoki Windows 95, ale w maju 2022 roku Microsoft otworzył kod źródłowy 3D Movie Maker na licencji MIT. Oficjalne repozytorium Microsoft jest dostępne na GitHubie; w opisie wyraźnie wskazano, że jest to kod źródłowy oryginalnego projektu z 1995 roku, opublikowany jako oprogramowanie open source na licencji MIT.

Otwarcie kodu źródłowego stało się punktem wyjścia do kilku prób ożywienia programu. Najpierw pojawił się projekt 3DMMForever, który zajął się modernizacją wersji i przygotowaniem do kompilacji nowoczesnymi narzędziami. Później, kiedy prace nad nim zwolniły, Ben Stone stworzył rozwidlenie 3DMMEx. Celem projektu jest zachowanie klasycznego doświadczenia pracy z 3D Movie Maker, ale z niewielkimi usprawnieniami i uczynienie kodu przenośnym na nowoczesne systemy.

Przeniesienie okazało się niełatwym zadaniem ponownej kompilacji starego kodu. Kody źródłowe 3D Movie Maker były napisane w starym dialekcie C++, Microsoft Visual C++, Win32 API oraz modelu pamięci 32-bitowej. Ponadto, w wewnętrznych bibliotekach użyto statycznych zależności, wbudowanego assemblera x86, starych założeń dotyczących wielkości wskaźników oraz związania z systemami specyficznymi dla Windows.

Co trzeba było zrobić

  • Zastąpić warstwę Win32 SDL. W 3D Movie Maker używano wewnętrznej ramy aplikacji Kauai, która początkowo abstrahowała część funkcji systemowych, ale w praktyce nadal polegała na Win32. W 3DMMEx realizacja interfejsu graficznego została przeniesiona na SDL2. To pozwoliło na zastąpienie subsystemu okien, przetwarzania wejścia i renderowania, zachowując jednocześnie starą architekturę aplikacji.

  • Przepisać renderowanie i wejście. Niektóre operacje, które w Win32 były realizowane za pomocą jednego wywołania, w SDL musiały być zaimplementowane ręcznie. Na przykład, do pracy z czcionkami w Windows używane były gotowe funkcje enumeracji i tworzenia czcionek, natomiast w wersji przenośnej tę logikę trzeba było napisać oddzielnie dla platform. Podobnie na nowo zaimplementowano system skrótów klawiaturowych, ponieważ stara realizacja Windows nie mogła być użyta bezpośrednio w Linuxie.

  • Usuń wbudowany assembler. W Kauai i powiązanych komponentach użyto ręcznie zoptymalizowanego assemblera dla x86, w tym w funkcjach kopiowania pamięci, przetwarzania obrazów i kompresji danych. W celu przenośności te fragmenty zastąpiono wersjami w C/C++. Zdaniem autora uprościło to budowanie poza Windows, a w niektórych przypadkach nawet poprawiło wydajność dzięki nowoczesnym implementacjom memcpy i memmove w standardowej bibliotece C.

  • Zająć się bibliotekami statycznymi. 3D Movie Maker miał dwa ważne zewnętrzne zależności: BRender i AudioMan. BRender to silnik 3D Argonaut Software, używany do grafiki. Jego kod źródłowy także został udostępniony, ale zawierał wiele assemblera x86. W przypadku 3DMMEx użyto wersji, w której części assemblerowe zastąpiono przenośnym kodem.

  • Zastąpić AudioMan dla Linuxa. Biblioteka AudioMan Odpowiadał nie tylko za odtwarzanie dźwięku, ale także za import i nagrywanie dźwięków wewnątrz aplikacji. Ponieważ był ściśle związany z dźwiękiem Windows i interfejsami COM, deweloperzy nie przenieśli go bezpośrednio. Dla systemów nie-Windows dodano nowy moduł odtwarzania i nagrywania dźwięku oparty na miniaudio.

  • Dodać wsparcie dla MIDI i wideo. Do portu na Linuxa zintegrowano FluidSynth do odtwarzania MIDI oraz GStreamer do odtwarzania filmów wideo. Należało również rozwiązać typowe problemy związane z przenoszeniem starych programów Windows do środowiska POSIX: czułość nazw plików na wielkość liter, odwrotne ukośne kreski w ścieżkach, platformowe funkcje pracy z plikami i inne drobiazgi, które łącznie uniemożliwiają uruchomienie aplikacji.

  • Przygotować kod do systemów 64-bitowych. Znaczna część starego kodu zakładała środowisko 32-bitowe.. Podczas przenoszenia wykryto miejsca, w których wskaźniki były przekształcane na liczby 32-bitowe, a struktury zapisywane na dysku zależały od rozmiaru wskaźnika. Aby nie naruszyć zgodności z plikami projektów 3D Movie Maker, do kodu dodano kontrolę rozmiarów struktur oraz osobną logikę serializacji.

  • Udoskonalenie debugowania i testowania. Część wewnętrznych testów Kauai została przeniesiona na Google Test, a w kodzie dodano dodatkowe kontrole i dzienniki wykonywania skryptów interfejsu. Jest to ważne, ponieważ znaczna część logiki 3D Movie Maker nie funkcjonuje w standardowym kodzie C++, lecz w autorskich skryptach aplikacji.

Teraz w repozytorium 3DMMEx zgłoszono wsparcie dla Linuxa, grafikę i wejście przez SDL2, kompilację z Visual Studio 2022, Clang i GCC, 64-bitowe kompilacje dla x64 i ARM64, zastąpienie wbudowanego assemblera przenośnym C++, testy modułowe, ulepszoną obsługę myszy, nowe skróty klawiaturowe i lepszy import dźwięku. Do kompilacji w Linuxie potrzebne są CMake, Ninja, GCC oraz biblioteki rozwoju SDL2, SDL2_ttf, GStreamer, GTK3, iconv i Fontconfig.

Obecnie wersję na Linuxa należy kompilować ze źródeł. Autor planuje później przygotować gotowe binarne kompilacje dla popularnych dystrybucji. Przy tym sam port jest już funkcjonalny: według Bena Stone'a, wszystkie funkcje 3DMMEx działają w wersji SDL/Linux, chociaż wciąż występują problemy z obsługą myszy podczas przeciągania aktorów po scenie. Wśród możliwych przyszłych kierunków wskazano również przeniesienie na macOS i wersję przez Emscripten do uruchomienia w przeglądarce.

W ten sposób otwarcie źródeł Microsoftu w 2022 roku stopniowo doprowadziło nie tylko do zachowania starego programu w wersji archiwalnej, ale również do pełnego przeniesienia na nowoczesne platformy. 3D Movie Maker można teraz postrzegać nie tylko jako eksponat muzealny z czasów Windows 95, ale także jako przykład tego, jak publikacja kodu na licencji open source pozwala po dziesięcioleciach przywrócić do życia dawno porzuconą aplikację.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster