3D Movie Maker wurde nach Linux portiert.

3D Movie Maker wurde nach Linux portiert.

Projektentwickler 3DMMEx wir haben den Start der klassischen Microsoft 3D Movie Maker unter Linux ohne Wine und virtuelle Maschinen erreicht. Über die geleistete Arbeit berichtete Ben Stone, der Autor des ursprünglichen Ports 3DMMEx. Laut ihm hat das Projekt einen wichtigen Meilenstein erreicht: Das Programm kann jetzt in Linux kompiliert und ausgeführt werden, was 3DMMEx zum ersten bekannten Ableger von 3D Movie Maker macht, der außerhalb von Windows funktioniert. Die Veröffentlichung über den Port datiert auf 9. Mai 2026.

Microsoft 3D Movie Maker — ein Kinderprogramm aus dem Jahr 1995 zur Erstellung einfacher dreidimensionaler Animationsfilme: Der Benutzer wählte Szenen aus, platzierte Charaktere und Objekte, legte ihnen Aktionen fest und fügte Dialoge, Klang und Musik hinzu. Lange Zeit blieb das Projekt ein geschlossenes historisches Artefakt der Windows 95-Ära, aber im Mai 2022 hat Microsoft den Quellcode von 3D Movie Maker unter der MIT-Lizenz veröffentlicht. Das offizielle Repository von Microsoft ist auf GitHub; in der Beschreibung wird ausdrücklich darauf hingewiesen, dass es sich um den Quellcode des ursprünglichen Projekts von 1995 handelt, das als Open Source unter der MIT-Lizenz veröffentlicht wurde.

Die Veröffentlichung des Quellcodes war der Ausgangspunkt für mehrere Versuche, das Programm wiederzubeleben. Zunächst entstand das Projekt 3DMMForever, der sich mit der Modernisierung der Build-Umgebung und der Vorbereitung zur Kompilierung mit modernen Mitteln beschäftigt hat. Später, als die Arbeit an ihm ins Stocken geriet, hat Ben Stone einen Fork erstellt. 3DMMEx. Das Ziel des Projekts ist es, die klassische Erfahrung mit 3D Movie Maker zu bewahren, aber einige kleine Verbesserungen hinzuzufügen und den Code portierbar auf moderne Systeme zu machen.

Der Transfer erwies sich als nicht nur eine einfache Rekompilierung des alten Codes. Die Quelltexte von 3D Movie Maker wurden für einen alten Dialekt von C++, Microsoft Visual C++, Win32 API und ein 32-Bit-Speichermodell geschrieben. Darüber hinaus wurden in den internen Bibliotheken statische Abhängigkeiten, integrierter x86-Assembler, alte Annahmen über die Größe von Zeigern und Bindung an Windows-spezifische Subsysteme verwendet.

Was getan werden musste

  • Die Win32-Schicht durch SDL ersetzen. In 3D Movie Maker wird ein internes Anwendungsframework verwendet Kauai, das ursprünglich einen Teil der Systemfunktionen abstrahierte, aber in der Praxis dennoch auf Win32 angewiesen war. In 3DMMEx wurde die Implementierung der grafischen Benutzeroberfläche auf SDL2übertragen. Dadurch konnte das Fenstersystem, die Eingabeverarbeitung und das Rendering ersetzt werden, während die alte Architektur der Anwendung erhalten blieb.

  • Das Rendering und die Eingabe neu schreiben. Einige Operationen, die in Win32 mit einem Aufruf ausgeführt wurden, mussten in SDL manuell implementiert werden. Zum Beispiel wurden für die Arbeit mit Schriften in Windows fertige Funktionen zur Auflistung und Erstellung von Schriften verwendet, während in der portablen Version diese Logik separat für die Plattformen geschrieben werden musste. Ebenso wurde das System der Tastenkombinationen neu implementiert, da die alte Windows-Implementierung nicht direkt in Linux verwendet werden konnte.

  • Den eingebauten Assembler entfernen. In Kauai und den zugehörigen Komponenten kam ein manuell optimierter Assembler für x86 zum Einsatz, insbesondere in den Funktionen zum Kopieren von Speicher, zur Bildbearbeitung und zur Datenkompression. Zur Gewährleistung der Portabilität wurden diese Abschnitte durch Varianten in C/C++ ersetzt. Laut dem Autor hat dies nicht nur die Erstellung außerhalb von Windows vereinfacht, sondern in einigen Fällen sogar die Leistung durch moderne Implementierungen von memcpy und memmove in der Standardbibliothek C verbessert.

  • Sich mit den statischen Bibliotheken beschäftigen. Der 3D Movie Maker hatte zwei wichtige externe Abhängigkeiten: BRender und AudioMan. BRender — die 3D-Engine von Argonaut Software, die für die Grafiken verwendet wurde. Der Quellcode wurde ebenfalls veröffentlicht, enthielt jedoch auch viel x86-Assembly. Für 3DMMEx wird eine Variante verwendet, bei der die Assembly-Teile durch portablen Code ersetzt wurden.

  • AudioMan für Linux ersetzen. Die Bibliothek AudioMan verantwortete nicht nur die Soundausgabe, sondern auch den Import und das Aufnehmen von Sounds innerhalb der Anwendung. Da sie eng mit Windows-Sound und COM-Schnittstellen verbunden war, entschieden sich die Entwickler, sie nicht direkt zu portieren. Für Nicht-Windows-Systeme wurde ein neues Modul zum Abspielen und Aufnehmen von Sound basierend auf miniaudio.

  • Midi- und Videoeinlagen zu unterstützen. Für den Linux-Port wurden FluidSynth für die Wiedergabe von MIDI und GStreamer für die Wiedergabe von Videoeinlagen integriert. Es mussten auch typische Probleme bei der Portierung alter Windows-Programme in eine POSIX-Umgebung gelöst werden: die Groß- und Kleinschreibung von Dateinamen, umgekehrte Schrägstriche in Pfaden, plattformspezifische Funktionen zur Dateiverarbeitung und andere Kleinigkeiten, die zusammen den Start der Anwendung beeinträchtigen.

  • Den Code auf 64-Bit-Systeme vorbereiten. Ein erheblicher Teil des alten Codes ging von einer 32-Bit-Umgebung aus.. Bei der Migration wurden Stellen festgestellt, an denen Zeiger auf 32-Bit-Zahlen verwiesen wurden, während die auf der Festplatte gespeicherten Strukturen von der Größe des Zeigers abhingen. Um die Kompatibilität mit den Dateien der 3D Movie Maker-Projekte nicht zu beeinträchtigen, wurden im Code Größenprüfungen der Strukturen und eine separate Serialisierungslogik hinzugefügt.

  • Die Debugging- und Testmöglichkeiten verbessern. Ein Teil der internen Tests von Kauai wurde auf Google Test, und im Code wurden zusätzliche Prüfungen sowie Protokolle für die Ausführung von Schnittstellenskripten hinzugefügt. Dies ist wichtig, da ein erheblicher Teil der Logik von 3D Movie Maker nicht im gewöhnlichen C++-Code lebt, sondern in den eigenen Skripten der Anwendung.

Jetzt im 3DMMEx-Repository sind die Unterstützung von Linux, Grafik und Eingabe über SDL2, der Bau mit Visual Studio 2022, Clang und GCC, 64-Bit-Bauten für x64 und ARM64, der Austausch des eingebetteten Assembler-Codes durch portables C++, Modultests, verbesserte Mausinteraktionen, neue Tastenkombinationen sowie eine höhere Klangqualität beim Import angegeben. Für den Bau in Linux werden CMake, Ninja, GCC sowie die Entwicklungsbibliotheken SDL2, SDL2_ttf, GStreamer, GTK3, iconv und Fontconfig benötigt.

Derzeit muss die Linux-Version aus dem Quellcode erstellt werden. Fertige Binärversionen plant der Autor später für beliebte Distributionen vorzubereiten. Der Port selbst ist jedoch bereits funktionsfähig: Laut Ben Stone funktionieren alle Funktionen von 3DMMEx in der SDL/Linux-Version, obwohl es Probleme bei der Verarbeitung der Maus gibt, wenn Schauspieler über die Szene gezogen werden. Auch unter den möglichen zukünftigen Richtungen sind der Port für macOS und eine Variante über Emscripten zur Ausführung im Browser genannt worden.

Somit hat die Öffnung des Quellcodes von Microsoft im Jahr 2022 nicht nur dazu geführt, dass das alte Programm in Archivform erhalten bleibt, sondern auch zu einem vollständigen Transfer auf moderne Plattformen. 3D Movie Maker kann nun nicht nur als Ausstellungsstück aus der Windows 95-Ära betrachtet werden, sondern auch als Beispiel dafür, wie die Veröffentlichung von Code unter einer freien Lizenz es ermöglicht, jahrzehntelang vernachlässigte Anwendungen wieder zum Leben zu erwecken.

Quelle: linux.org.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster