What is Director?
A short history of Macromedia Director, Shockwave, and Lingo, and why they matter for game preservation.
Overview
Macromedia Director (later Adobe Director) was a multimedia authoring environment first released in 1987 as VideoWorks. It organized interactive content as a movie: a timeline (the Score) of sprites drawn from a library of media assets (the Cast), rendered onto a Stage, and scripted with the Lingo language.
Director's runtime philosophy is a frame-based playback head. Every interactive experience, from a CD-ROM encyclopedia to Habbo Hotel, is at its core a movie whose playback head is looping over frames while scripts react to events.
Timeline
| Year | Release | Notes |
|---|---|---|
| 1987 | VideoWorks Interactive | Predecessor on Macintosh. |
| 1988 | Director 1.0 | Renamed; still Mac only. |
| 1993 | Director 3.1 | Lingo established as the scripting language. |
| 1994 | Director 4 | Windows support matured; the classic CD-ROM era begins. |
| 1995 | Shockwave | Browser plugin playing compressed Director movies (.dcr) on the web. |
| 1997 | Director 6 / 6.5 | Behaviors, actorList, sprite spans; the version "Lingo in a Nutshell" targets. |
| 1998 | Director 7 | Dot syntax introduced alongside verbose Lingo. |
| 2000 | Director 8 | image object and imaging Lingo (copyPixels). Habbo Hotel launches on Shockwave this era. |
| 2002 | Director 8.5 / MX | Shockwave 3D engine, real-time 3D casts. |
| 2004 | Director MX 2004 | JavaScript syntax as a second scripting language; the last thoroughly documented version and the reference target of this wiki. |
| 2008 | Adobe Director 11 | Unicode; new physics Xtra. |
| 2017 | Director discontinued | Adobe ends the product line. |
| 2019 | Shockwave discontinued | The official web runtime dies; preservation becomes a community task. |
The pieces
Director (authoring tool)
The IDE: Stage, Score, Cast windows, Paint, script editors, debugger. It produced source movies (.dir) and casts (.cst), and packaged them as protected movies (.dxr), compressed Shockwave movies (.dcr), or standalone projectors (executables bundling the player runtime).
Shockwave Player
The browser plugin that played .dcr movies. Shockwave included the same core engine as Director's projector runtime (Dirapi/IML32 on Windows) plus network features and a sandbox. Not to be confused with Shockwave Flash (.swf), a different product entirely; Flash content could however be embedded inside Director movies as Flash cast members.
Lingo
Director's native scripting language: case-insensitive, dynamically typed, event-handler oriented, with distinctive chunk expressions (word 2 of line 3 of ...), 1-based lists, and an object model of parent scripts and behaviors. From MX 2004 onward, JavaScript syntax could be used side by side with Lingo over the same object model. See Lingo basics.
Xtras
Native plugins (the successor to XObjects) that extend the player: text rendering, network operations, the Multiuser server client, FileIO, video codecs. Distribution and emulation of Xtras is one of the main preservation pain points. See Xtras.
Why preservation is hard
- No official runtime. Modern browsers cannot run Shockwave; modern macOS cannot run classic projectors; Windows projectors survive only through compatibility layers.
- Under-documented semantics. The manuals describe the API surface but not exact event ordering, ink pixel math, palette handling, or hit-testing rules. Old content depends on those exact behaviors.
- Protected formats.
.dxrand.cct/.cxtfiles have scripts compiled to bytecode with source removed, so understanding them requires bytecode-level tooling. - Xtra dependencies. Many titles require third-party native Xtras that were never ported anywhere.
The preservation community answers with emulators and decompilers. The emulation guide surveys the landscape and the architecture that a Director-compatible engine needs, and the Native Internals section documents what has been recovered from the original binaries.
Terminology quick reference
| Term | Meaning |
|---|---|
| Movie | A Director project/file; the top-level unit of playback. |
| Cast | Library of assets (cast members): bitmaps, sounds, text, scripts. |
| Score | The timeline: frames horizontally, sprite channels vertically. |
| Stage | The visible rendering surface of a movie. |
| Sprite | An instance of a cast member placed in a Score channel across a span of frames. |
| Playback head | The current frame position; generates the frame event cycle. |
| Behavior | A script attached to a sprite or frame. |
| Projector | A standalone executable bundling movie plus player runtime. |
| MIAW | Movie In A Window: a second movie playing in its own window. |
| Xtra | A native plugin extending the runtime. |
See the full glossary for more.