|Engine developer||sev, iskrich, djsrv, npjg|
|Companies that used it||Macromedia|
|Games that use it||hundreds of games|
|Date added to ScummVM||2016-08-04|
|First release containing it||None|
Director underwent huge number of versions.
Games and software targeted by the engine
This engine potentially targets a very large amount of games:
See Director Games for a list of known games and software, and their current state of support in the engine.
In Japan at least D4+ was released under title マクロメディア ディレクター
Archive Team's documentation
Team Earthquake's documentation
- A Tour of the Adobe Director File Format
- Team Earthquake Shockwave Unofficial Documentation
- More Director Movie File Unofficial Documentation (has in-depth documentation of structs)
- OpenShockwave repo (rather unorganized documentation and tools including a Lingo decompiler)
- Earthquake Project repos (newer versions of the above)
Development and Running
Running any D3 or D4 mac target
Besides adding specific md5s, there is a shortcut for forcing a directory to be detected as a director game.
Create an empty file named "D3-mac" or "D4-mac" in the game directory, and it will be detected as the respective Director version
Starting from an arbitrary movie file
Assuming, that you added game named 'workshop' with the method above.
./scummvm --start-movie=HandV workshop
Here HandV is the name of a movie in the directory. A frame number to start execution can also be added:
./scummvm --start-movie=HandV@2 workshop
Executing lingo tests
Point ScummVM to engines/director/lingo/tests, that will create target 'directortest'. Launching it will try to compile and execute all *.lingo files in that directory. The tests can also be run from the command line with:
./scummvm -d11 -p engines/director/lingo/tests/ directortest
The option --start-movie=<script_name> is also available to run a specific .lingo file.
Executing all director movies in a directory
Assuming you want to run all director movies in a given director. Create an empty file called 'lingotests-all' in that directory. Point ScummVM to that directory and add it as a game. That will run all director files in that directory. This can also be run from the commandline with:
There is a number of debugflags which could be turned on. The up-to-date list could be found in director.cpp in the DirectorEngine class constructor. You turn the flags with --debugflags=<flag>,<flag>. Please, denote, that messages are often stored at several levels, so add with something like debug level 5, e.g. -d5. Example:
./scummvm --debugflags=lingoexec,lingocompile,slow -d6 --start-movie=TABLE.DIR chopsuey
The useful ones are:
- lingoexec -- tracing Lingo execution
- lingocompile -- details about Lingo script compilation
- lingoparse -- turns on Bison grammar trace. Verbose. You should know what you're doing
- compileonly -- useful with test targets when we load all files in the directory. This is how we created that status table of Lingo Workshop movies
- slow -- add 2s delay between every frame. Useful at higher debug levels, so you could see what is going on instead of munching megabytes of logs
- fast -- removes delay between frames
- bytecode -- execute precompiled bytecode instead of compiling Lingo. Lingo Workshop movies have both bytecode and script texts
- loading -- produces tons of deciphered data from movie files.
There is a CI (continuous integration) server running for Director.
Is my game a Director Game and which version is it?
Run the following command in the director of your installed gamedata:
grep --text -ir director|strings |egrep 'Macromedia Director [0-9]'
This will show which version of Macromedia Director was used. If this yields nothing, it probably isn't a Macromedia director game.