In 2021, my second and final year as a Google Summer of Code student, I made 416 to commits to ScummVM, largely to the Macromedia Director engine. You can browse all of my commits here or see my full git log on one page here. Summaries of each week’s work are available on my blog.
These are my major contributions this summer:
- I contributed many bug fixes and stability improvements, helping to bring the Director engine to its first official release in the near future.
- I rebuilt the engine’s Lingo compiler from the ground up, allowing it to more gracefully handle context-sensitive Lingo features and greatly improving its maintainability.
- I implemented missing Lingo features from Director 2 and 3, including manipulation of chunk expressions.
- I began some preliminary work on Director 5 support, changing cast member IDs to support multiple castLibs.
- I implemented font mapping, allowing the engine to correctly handle fonts in movies authored in Director for Windows.
- I added support for text encodings other than Mac OS Roman, refactoring the engine to use UTF-8 internally. This allows the engine to support Japanese and other non-Latin character sets.
- I created a directory-separator-agnostic Path abstraction, which is now used in common file functions instead of Unix-style path strings. This allows the Director engine to properly support classic-Mac-OS-style paths, which can contain many special characters including ‘/’.
- I made significant progress on improving the playback of Meet MediaBand, a Director 4 title. Here’s “House Jam”, one of the interactive music videos from that CD-ROM:
My GSoC contributions this year have greatly improved support for Director 2-4 titles. I plan to keep contributing after this summer, extending the engine to support Director 5 and beyond. I initially planned to begin work on Director 5 this summer, but there is still work to be done to ensure that Director 3 and 4 are stable, which I hope to help complete soon.
While our engine currently only has official support for two games, Spaceship Warlock and L-Zone, a huge number of titles were made in Director. With each bit of work, we are able to run more and more of them. This portable, open-source reimplementation of Director will help to preserve this media for generations to come.