3D Movie Maker è stato portato su Linux

3D Movie Maker è stato portato su Linux

Sviluppatori del progetto 3DMMEx ha raggiunto il lancio della versione classica Microsoft 3D Movie Maker su Linux senza Wine e macchine virtuali. Il lavoro svolto è stato descritto da Ben Stone, autore del porting di 3DMMEx. Secondo le sue parole, il progetto ha raggiunto un traguardo importante: ora il programma può essere compilato e avviato in Linux, rendendo 3DMMEx il primo ramo noto di 3D Movie Maker a funzionare al di fuori di Windows. La pubblicazione sul porting è datata 9 maggio 2026.

Microsoft 3D Movie Maker — un programma per bambini del 1995 per creare semplici filmati tridimensionali: l'utente sceglieva le scene, disponeva personaggi e oggetti, definiva le azioni, aggiungeva dialoghi, suoni e musica. A lungo il progetto è rimasto un artefatto storico chiuso dell'era di Windows 95, ma nel maggio 2022 Microsoft ha aperto il codice sorgente di 3D Movie Maker sotto licenza MIT. Il repository ufficiale di Microsoft è disponibile su GitHub; nella descrizione è specificato che si tratta del codice sorgente del progetto originale del 1995, pubblicato come software open source sotto licenza MIT.

L'apertura del codice sorgente ha dato il via a diversi tentativi di riportare in vita il programma. Inizialmente è nato il progetto 3DMMForever, che si occupava della modernizzazione del build e della preparazione alla compilazione con strumenti attuali. In seguito, quando il lavoro su di esso ha rallentato, Ben Stone ha creato un fork 3DMMEx. L'obiettivo del progetto è preservare l'esperienza classica di utilizzo di 3D Movie Maker, ma aggiungere piccole migliorie e rendere il codice portabile sui sistemi moderni.

Il porting non è stata una semplice ricompilazione del vecchio codice. I sorgenti di 3D Movie Maker erano scritti in un vecchio dialetto C++, Microsoft Visual C++, Win32 API e modello di memoria a 32 bit. Inoltre, nelle librerie interne erano presenti dipendenze statiche, assembly x86 incorporato, vecchie assunzioni sulla dimensione dei puntatori e collegamenti a sottosistemi specifici di Windows.

Cosa è stato necessario fare

  • Sostituire lo strato Win32 con SDL. In 3D Movie Maker viene utilizzato un framework applicativo interno Kauai, che inizialmente astraeva parte delle funzioni di sistema, ma in pratica si basava comunque su Win32. In 3DMMEx, l'implementazione dell'interfaccia grafica è stata trasferita su SDL2. Ciò ha permesso di sostituire il sottosistema delle finestre, la gestione dell'input e il rendering, mantenendo intatta l'architettura originale dell'applicazione.

  • Riscrivere il rendering e l'input. Alcune operazioni che in Win32 venivano eseguite con una sola chiamata, in SDL sono state implementate manualmente. Ad esempio, per gestire i font su Windows sono state utilizzate funzioni pronte per l'enumerazione e la creazione dei font, mentre nella versione portabile questa logica è stata scritta separatamente per le piattaforme. Allo stesso modo, è stata riprogettata da zero la gestione delle combinazioni di tasti, poiché la vecchia implementazione Windows non poteva essere utilizzata direttamente su Linux.

  • Rimuovere l'assembly incorporato. In Kauai e nei componenti correlati è stato utilizzato un assemblatore ottimizzato manualmente per x86, comprese le funzioni di copia della memoria, elaborazione delle immagini e compressione dei dati. Per garantire la portabilità, queste sezioni sono state sostituite con varianti in C/C++. Secondo l'autore, questo non solo ha semplificato la compilazione al di fuori di Windows, ma in alcuni casi ha persino migliorato le prestazioni grazie alle implementazioni moderne di memcpy e memmove nella libreria standard C.

  • Affrontare le librerie statiche. 3D Movie Maker aveva due importanti dipendenze esterne: BRender e AudioMan. BRender — motore grafico 3D di Argonaut Software, utilizzato per la grafica. Il suo codice sorgente è stato aperto, ma conteneva anche molte parti in assembly x86. Per 3DMMEx viene utilizzata una variante in cui le parti in assembly sono state sostituite da codice portabile.

  • Sostituire AudioMan per Linux. Libreria AudioMan non solo gestiva la riproduzione audio, ma anche l'importazione e la registrazione di suoni all'interno dell'applicazione. Poiché era strettamente legata all'audio di Windows e alle interfacce COM, gli sviluppatori non l'hanno trasferita direttamente. Per i sistemi non Windows è stato aggiunto un nuovo modulo per la riproduzione e la registrazione audio basato su miniaudio.

  • Aggiungere supporto per MIDI e video. Per il porting su Linux sono stati integrati FluidSynth per la riproduzione MIDI e GStreamer per la riproduzione di video. È stato inoltre necessario affrontare i problemi tipici del trasferimento di programmi Windows obsoleti in un ambiente POSIX: sensibilità ai nomi dei file, barre oblique inverse nei percorsi, funzioni di file specifiche della piattaforma e altre piccole cose che in totale impediscono l'avvio dell'applicazione.

  • Preparare il codice per i sistemi a 64 bit. Una parte significativa del codice precedente presupponeva un ambiente a 32 bit.. Durante il trasferimento sono emerse delle situazioni in cui i puntatori venivano convertiti in numeri a 32 bit, mentre le strutture salvate su disco dipendevano dalla dimensione del puntatore. Per garantire la compatibilità con i file dei progetti di 3D Movie Maker, sono state aggiunte al codice verifiche sulla dimensione delle strutture e una logica separata per la serializzazione.

  • Migliorare il debug e il testing. Parte dei test interni di Kauai è stata trasferita su Google Test, e nel codice sono state aggiunte ulteriori verifiche e registri di esecuzione degli script dell'interfaccia. Questo è importante poiché gran parte della logica di 3D Movie Maker risiede non nel codice C++ convenzionale, ma negli script personalizzati dell'applicazione.

Adesso nel repository 3DMMEx sono dichiarati supporto per Linux, grafica e input tramite SDL2, compilazione con Visual Studio 2022, Clang e GCC, compilazioni a 64 bit per x64 e ARM64, sostituzione dell'assembler integrato con C++ portabile, test modulari, migliorata gestione del mouse, nuove combinazioni di tasti e importazione audio di qualità superiore. Per la compilazione su Linux sono necessari CMake, Ninja, GCC e le librerie di sviluppo SDL2, SDL2_ttf, GStreamer, GTK3, iconv e Fontconfig.

Attualmente, la versione Linux deve essere compilata dai sorgenti. L'autore prevede di preparare versioni binarie pronte in un secondo momento per le distribuzioni più popolari. Tuttavia, il porting è già funzionale: secondo Ben Stone, tutte le funzionalità di 3DMMEx funzionano nella versione SDL/Linux, anche se ci sono ancora problemi con la gestione del mouse durante il trascinamento degli attori sulla scena. Tra le possibili direzioni future si citano il porting su macOS e una versione tramite Emscripten per l'esecuzione nel browser.

Pertanto, l'apertura dei sorgenti Microsoft nel 2022 ha portato gradualmente non solo alla conservazione del vecchio programma in forma di archivio, ma a un vero e proprio porting su piattaforme moderne. 3D Movie Maker può ora essere visto non solo come un reperto museale dell'era di Windows 95, ma anche come un esempio di come la pubblicazione del codice sotto una licenza libera permette, dopo decenni, di riportare in vita un'applicazione da tempo abbandonata.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster