Difference between revisions of "Director"

Jump to navigation Jump to search
6,630 bytes added ,  08:31, 27 September 2022
Add information about compiling director with `--enable-asan`. The buildbot will error when finding a memory leak.
(Created page with "https://github.com/Deledrius/scummvm/tree/amber/engines/director")
 
(Add information about compiling director with `--enable-asan`. The buildbot will error when finding a memory leak.)
(44 intermediate revisions by 13 users not shown)
Line 1: Line 1:
https://github.com/Deledrius/scummvm/tree/amber/engines/director
{{EngineDescription|
name=director|
        developer=[[User:sev|sev]], [[User:iskrich|iskrich]], [[User:djsrv|djsrv]], [[User:npjg|npjg]], [[User:Mstea|mstea]]|
companies=[[Macromedia]]|
usedBy=[[Director/Games|hundreds of games]]|
dateAdded=August 4, 2016 |
release=2.5.0|
}}
 
The Macromedia Director engine was partially implemented by [[User:iskrich|iskrich]] for the [[Summer of Code|Google Summer of Code]] in [[Summer of Code/GSoC2016|2016]] and was further implemented by the Google Summer of Code students [[User:djsrv|djsrv]] and [[User:npjg|npjg]] in [[Summer of Code/GSoC2020|2020]] and the Google Summer of Code students djsrv and [[User:sheep|sheep]] in [[Summer of Code/GSoC2021|2021]].
 
== Introduction ==
Started out as MacroMind VideoWorks. MacroMind was founded by Marc Canter. The name VideoWorks was changed to Director in 1987.
 
Director underwent huge number of versions.
 
[http://lingoworkshop.com/articles/history History of the engine].
 
[[Director/Codenames|A bit more history of the engine codenames]]
 
==Games and software targeted by the engine==
This engine potentially targets a very large amount of games:
 
See [[Director/Games|Director Games]] for a list of known games and software, and their current state of support in the engine.
 
== Versions ==
See [[Director/Versions]]
 
== File Format ==
=== Archive Team's documentation ===
* [http://fileformats.archiveteam.org/wiki/Shockwave_(Director) Shockwave (Director)]
* [http://fileformats.archiveteam.org/wiki/Lingo_bytecode Lingo bytecode]
 
=== Team Earthquake's documentation ===
* [https://medium.com/@nosamu/a-tour-of-the-adobe-director-file-format-e375d1e063c0 A Tour of the Adobe Director File Format]
* [https://docs.google.com/document/d/18FMRZ0EvR2uF9rKTtvt-TXyIMFIBVg13bUhmV3_iHD0/edit Team Earthquake Shockwave Unofficial Documentation]
* [https://docs.google.com/document/d/1jDBXE4Wv1AEga-o1Wi8xtlNZY4K2fHxW2Xs8RgARrqk/edit More Director Movie File Unofficial Documentation] (has in-depth documentation of structs)
* [https://github.com/Brian151/OpenShockwave OpenShockwave repo] (rather unorganized documentation and tools including a Lingo decompiler)
* [https://github.com/Earthquake-Project 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 <tt>--start-movie=<script_name></tt> 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:
./scummvm directortest-all-mac
 
=== Debug flags ===
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 <tt>--debugflags=<flag>,<flag></tt>. Please, denote, that messages are often stored at several levels, so add with something like debug level 5, e.g. <tt>-d5</tt>. 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.
 
=== Compilation ===
We aim for 0 memory leaks in the director engine. The automated tests will error when it detects a memory leak. To enable memory leak checks run `./configure` with `--enable-asan`.
 
=== Automated Tests ===
There is a CI (continuous integration) server running for Director.
* [https://john.scummvm.org Buildbot server]
* [https://github.com/rvanlaar/director-buildbot Buildbot server sourcecode]
 
=== Is my game a Director Game and which version is it? ===
 
Run the following command in the directory 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.
 
== Debugger Commands ==
To open the [[Debugging ScummVM|interactive debugger console]] press the key combination that is set for "Open Debugger" in the "Keymaps" tab from ScummVM options (default should be Ctrl+Alt+d).
 
=== lingo ===
Opens a lingo language shell.
) lingo on
lingo) set a to "Hello ScummVM"
lingo) put a
-- "Hello ScummVM
lingo) lingo off
)
 
Arguments:
* lingo on - Start the interactive lingo shell
* lingo off - Stop the interactive lingo shell
 
When the shell is on when the line starts with `lingo) `.
 
 
==External Links==
* [https://github.com/scummvm-director/continuity fuzzie's work in Python]
* [https://github.com/Deledrius/scummvm/tree/director/engines/director Early work by fuzzie/clone2727]
* [https://github.com/scummvm-director/scummvm/tree/director another clone of it]
* [https://en.wikipedia.org/wiki/Adobe_Director Wikipedia article on the topic]
* [https://www.mistys-internet.website/blog/blog/2022/01/06/do-you-speak-the-lingo/ Do You Speak the Lingo?] - blog post by Misty De Meo about the ScummVM engine's development
 
[[Category:Engines]]
42

edits

Navigation menu