Lingo
The English-like scripting language of Macromedia Director that drove the 1990s interactive CD-ROM boom and, through Shockwave, some of the earliest games on the web
Created by John Henry Thompson at MacroMind (with early development also credited to Erik Neumann); Thompson later served as chief scientist of Macromedia
Lingo is the scripting language of Macromedia Director (later Adobe Director), the dominant multimedia authoring tool of the 1990s. Created by John Henry Thompson at MacroMind around 1989, Lingo was designed to read like English so that the animators, illustrators, and designers who used Director could add interactivity to their work without feeling like they were programming. That decision made Lingo arguably one of the most widely used scripting languages of its decade: it powered the interactive CD-ROM boom - encyclopedias, museum kiosks, edutainment, and adventure games - and then, through the Shockwave browser plug-in, an enormous share of the web’s earliest games. Lingo is dormant today, tied to a product Adobe discontinued in 2017, but for a generation of creative people it was the first programming language they ever wrote.
Not to be confused with: LINGO, the optimization modeling language from LINDO Systems, or other unrelated languages that share the name. This article covers the Director scripting language.
History & Origins
From VideoWorks to Director
Director began life in 1985 as VideoWorks, a MacroMind animation program for the original Macintosh. As the product grew through VideoWorks II and into interactive territory, MacroMind renamed it Director in 1987 and began positioning it as a general multimedia authoring environment. Early interactive versions carried a rudimentary scripting layer in the Tiny BASIC style - workable for simple branching, but far short of what serious interactive titles needed.
John Henry Thompson, a Jamaican-American engineer with a deep interest in the intersection of art and technology, joined MacroMind as a contractor in 1987. Around 1989 he created Lingo, a purpose-built scripting language for Director (early development is also credited to fellow engineer Erik Neumann). Lingo replaced the Tiny BASIC-style layer and shipped broadly with MacroMind Director 2.0 in April 1990 - some sources instead cite Director 2.2 as the first release, and Wikipedia’s Director article associates Lingo’s addition with the product’s late-1980s evolution, so accounts of the exact debut vary by a year or so. Thompson went on to become chief scientist of MacroMind and its successor Macromedia, stewarding Lingo through most of the 1990s.
Riding the CD-ROM wave
Timing made Lingo. Director 2 and 3 arrived just as CD-ROM drives were becoming standard equipment, and Director was the fastest way to fill those discs with something interactive. When Director 4 (1994) added Windows support, a single Director project - and its Lingo scripts - could target both major desktop platforms. Studios like Presto Studios (The Journeyman Project) and Pop Rocket (Total Distortion) built entire commercial games in it, and countless reference titles, kiosks, and training discs followed.
In 1995 Macromedia introduced Shockwave, a plug-in that played compacted Director movies inside a web browser. Suddenly Lingo was a web language: portals like Shockwave.com and Miniclip hosted hundreds of Lingo-scripted games, and for several years before Flash matured, Shockwave was arguably the most capable interactive runtime on the web.
Design Philosophy
Lingo’s founding idea was that scripts should read like sentences. In the verbose classic syntax - in the family style popularized by Apple’s HyperTalk - a script might say:
if the visibility of sprite 5 then go to the frame
or:
on mouseUp
put "Hello, World!" into member "greeting"
end
Everything hangs off Director’s theatrical metaphor: a document is a movie, its assets live in a cast, instances of cast members appear on the stage as numbered sprites, and time advances through frames on a score. Lingo is event-driven - code lives in handlers such as on mouseUp, on enterFrame, or on startMovie that Director calls as the movie plays. The go to the frame idiom above, which loops playback on the current frame while handlers respond to events, was the beating heart of virtually every interactive Director piece ever made.
The language is dynamically and loosely typed: a variable can hold an integer, float, string, list, symbol (#likeThis), or object, and Lingo converts between representations liberally. Linear and property lists ([1, 2, 3] and [#name: "Ada", #year: 1843]) served as the workhorse data structures.
Key Features
Four kinds of scripts
Lingo code is organized by where it lives, which doubles as its scoping model:
| Script type | Attached to | Typical use |
|---|---|---|
| Behavior scripts | Sprites or frames | Per-sprite interactivity (buttons, draggables) |
| Movie scripts | The movie itself | Global handlers and utilities |
| Cast member scripts | A single cast member | Simple click actions on that member |
| Parent scripts | Instantiated from code | Full object-oriented programming |
Object-orientation via parent scripts
Parent scripts are Lingo’s classes: scripts instantiated with new() whose property variables give each instance (“child object”) its own state. Ancestors provide inheritance-like delegation.
-- Parent script "Counter"
property pCount
on new me
pCount = 0
return me
end
on increment me
pCount = pCount + 1
return pCount
end
c = script("Counter").new()
c.increment() -- 1
Behaviors, added in Director 6 (1997), packaged the same machinery for direct manipulation: a behavior is a script dragged onto a sprite, with author-defined parameters, and multiple behaviors can be stacked on one sprite. This gave Director a component model that non-programmers could assemble visually while programmers wrote the components in Lingo.
Two syntaxes, then a second language
Classic verbose Lingo (the visibility of sprite 5) was joined in the Director 7 era (late 1990s) by a concise dot notation, and Director MX 2004 completed the transition with the Director Object Model - top-level objects like _movie, _player, and _global:
if sprite(5).visible then _movie.go(_movie.frame)
MX 2004 also added JavaScript syntax as a full peer to Lingo: every API in Director could be driven from either language, an early example of a commercial tool decoupling its object model from its scripting syntax.
Extensibility and media APIs
Native extensibility came first through XObjects and then, from Director 5 (1996), through Xtras - C++ plug-ins that could add new Lingo commands, media types, and transitions, and which supported a whole third-party marketplace. On the media side, Imaging Lingo (Director 8, 2000) exposed bitmap compositing operations such as copyPixels() directly to script, enabling dynamically generated graphics, and Shockwave 3D (Director 8.5, 2001) added a substantial Lingo API for real-time 3D models, cameras, and shaders - years before 3D was commonplace in browsers.
Evolution
Lingo’s arc tracks Director’s owners: MacroMind (1989-1992), Macromedia (1992-2005), and Adobe (2005-2017). Through the 1990s each release grew the language - cross-platform playback in Director 4, Xtras in 5, behaviors in 6, a rewritten engine in 7, imaging in 8, 3D in 8.5. But from the late 1990s Macromedia’s own Flash, with its lighter plug-in and ActionScript language, steadily displaced Director for web work, and general-purpose engines eroded its position in games and kiosks. Adobe shipped only three Director releases after acquiring Macromedia - Director 11 (2008, adding Unicode support), 11.5 (2009), and 12 (2013) - before announcing the end of the product line in January 2017. When the Shockwave Player was retired in April 2019, the last official Lingo runtime went with it.
Current Relevance
Lingo is a preservation language now. No official runtime ships, so the enormous catalog of Director CD-ROMs and Shockwave games depends on emulation and re-implementation: the ScummVM project includes a Director engine with its own Lingo interpreter, and archival efforts around Shockwave content work to keep titles like Eastern Mind and the Shockwave.com catalog playable. Studying Lingo today is studying the interactive multimedia culture of the 1990s in its native tongue.
Why It Matters
Lingo’s importance is less about language design than about who it let program. Its English-like handlers and Director’s stage-and-score metaphor gave artists, musicians, and designers a real programming language wrapped in familiar theatrical terms, and an entire creative industry - CD-ROM titles, kiosks, early web games - was built by people who would never have called themselves software engineers. It demonstrated, alongside HyperTalk, that approachable syntax and a strong authoring metaphor could put genuine computational power in non-programmers’ hands, an idea that echoes in later creative-coding tools. And its creator, John Henry Thompson, is widely celebrated as one of the most influential Black computer scientists of his era: the language he built taught countless discs and web pages - and a generation of multimedia designers - how to respond to a mouse click.
Timeline
Notable Uses & Legacy
The Journeyman Project (Presto Studios)
Pioneering 1993 time-travel adventure and one of the flagship CD-ROM games built with Director, its interactivity scripted in Lingo
Total Distortion (Pop Rocket)
The 1995 'music video adventure' game, a cult classic of the CD-ROM era developed in Director with Lingo
Eastern Mind: The Lost Souls of Tong Nou
Osamu Sato's surreal 1994 Japanese adventure game, created in Director - now a touchstone of experimental multimedia art
Shockwave.com and Miniclip web games
Hundreds of free browser games of the late-1990s and early-2000s web-game boom were written in Lingo and delivered through the Shockwave plug-in
Rain World (early development)
The acclaimed survival platformer reportedly began life in Adobe Director before the team moved to Unity when they outgrew the engine