Est. 1989 Beginner

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

Paradigm Multi-paradigm: Scripting, Event-driven, Object-Oriented (parent scripts and behaviors)
Typing Dynamic (loosely typed; variables may hold values of any type)
First Appeared 1989 (created at MacroMind; shipped broadly in MacroMind Director 2.0, April 1990 - some sources instead cite Director 2.2 as Lingo's first release)
Latest Version Lingo as shipped in Adobe Director 12 (February 2013), the final release of Director; Adobe discontinued Director in 2017 and the Shockwave Player in April 2019

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 typeAttached toTypical use
Behavior scriptsSprites or framesPer-sprite interactivity (buttons, draggables)
Movie scriptsThe movie itselfGlobal handlers and utilities
Cast member scriptsA single cast memberSimple click actions on that member
Parent scriptsInstantiated from codeFull 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

1985
MacroMind ships VideoWorks, the Macintosh animation program that will evolve into Director; interactive versions later gain a Tiny BASIC-style scripting layer
1987
John Henry Thompson joins MacroMind as a contractor; the VideoWorks line is renamed Director as it grows into a full multimedia authoring tool
1989
Thompson creates Lingo at MacroMind - an English-like scripting language designed so that artists and designers, not just programmers, can read and write interactive scripts
1990
MacroMind Director 2.0 ships in April with Lingo replacing the earlier Tiny BASIC-style scripting (some sources instead date Lingo's debut to Director 2.2)
1992
MacroMind (by then MacroMind-Paracomp) merges with Authorware to form Macromedia; Director and Lingo become the flagship authoring product of the new company
1994
Director 4 brings authoring and Lingo playback to Microsoft Windows alongside Macintosh, making Lingo titles cross-platform
1995
Macromedia introduces Shockwave, a browser plug-in that plays Director movies - and runs their Lingo - inside web pages, seeding the first wave of web games
1996
Director 5 introduces the Xtras plug-in architecture (successor to the older XObjects), letting native C++ extensions add new commands callable from Lingo
1997
Director 6 adds behaviors - reusable Lingo scripts attached to sprites via drag and drop - together with tighter Shockwave integration
1998
Director 7 ships on November 16 with a rewritten playback engine; the classic verbose Lingo is joined by a more concise dot-notation syntax in this era
2000
Director 8 introduces Imaging Lingo, an API for compositing and manipulating bitmap images directly from script
2001
Director 8.5 adds the Shockwave 3D engine along with a large body of new Lingo commands for scripting real-time 3D scenes
2004
Director MX 2004 (released January 5) formalizes the dot-syntax Director Object Model and adds JavaScript syntax as a complete alternative to Lingo within Director
2005
Adobe completes its acquisition of Macromedia in December, taking over Director, Shockwave, and Lingo
2008
Adobe Director 11 (March 25) is the first Adobe-era release, adding Unicode support and an updated Shockwave 3D pipeline
2013
Adobe Director 12 ships on February 11 - the final release of Director and the last shipping version of Lingo
2017
Adobe announces the end of Director on January 27; sales stop on February 1 and support ends March 14
2019
Adobe discontinues the Shockwave Player in April, ending browser playback of Lingo-driven Shockwave content; preservation efforts such as ScummVM's Director engine continue re-implementing Lingo

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

Language Influence

Influenced By

HyperTalk

Running Today

Run examples using the official Docker image:

docker pull
Last updated: