Porting 3D Movie Maker to Linux
Did you know you can now run Microsoft 3D Movie Maker natively on Linux? Over the last 18 months, I have been working on 3DMMEx, my source port of 3D Movie Maker. One of the goals of my fork is portability. The project recently reached a significant milestone: we can now compile and run on Linux, making 3DMMEx the first known fork of 3D Movie Maker to run outside of Windows! In this post I will explore some of the challenges encountered while porting a 30-year-old multimedia application to a new platform.
Now you can make fun animated movies on Linux!
Background
Back in 2020, I wrote a blog series about reverse engineering Microsoft 3D Movie Maker. Since then, there has been a major development: in May 2022, Microsoft published the full source code for the application. This was quite unexpected - I never thought I would ever get to see the original source code, and was skeptical that it even still existed in Microsoft’s archives, but now it’s up on GitHub… and with a permissive MIT license to boot!
Before we go too much further I have to say a huge thank you to Alice Averlong (née Foone Turing) for her relentless pursuit of the 3DMM source code, and to Scott Hanselman, Jeff Wilcox and the rest of the team at Microsoft who made this release happen. If you’re interested in the story of how the source code was released, check out the Hanselminutes podcast about the release.
The repository includes the source code for the 3DMM application (codenamed “Socrates”), the “Kauai” application framework used by 3DMM and Creative Writer 2, development/authoring tools (including the compiler for the scripting language that I previously reverse engineered), some documentation and pre-rendered assets. The release is complete enough that you can compile your own build of 3DMOVIE.EXE .
When the release came out, I spent some time digging through the repo and wrote some notes about the source code including how to build it with the original development tools. Something I immediately noticed was how well engineered the codebase was: the code style is consistent, code is well commented, and there are assert checks everywhere. Back in 1995, developers didn’t have the luxury of being able to push out updates to fix bugs, so they had to make sure the code was really good before release. The 3DMM codebase is a lot cleaner than some other mid-90s game source code releases I have seen.
Visual Studio Code showing the 3D Movie Maker source code
One of the first things I thought of doing when the source code was released was trying to port it to a new platform. I didn’t want to make my own fork (that’s a lot of work!), so I joined the 3DMMForever project which started up shortly after the release to modernise 3DMM. We replaced the old makefiles with CMake and solved a bunch of issues to get 3DMM compiling with a modern compiler, Visual Studio 2022. These were good first steps towards a portable 3DMM.
... continue reading