BlingoEngine is a modern, cross-platform C# runtime designed to emulate Macromedia Director's Lingo scripting language. It enables playback of original Lingo code and behaviors on top of modern rendering backends like Godot, SDL2, Unity, and Blazor, allowing legacy projects to be revived or reimagined with full flexibility.
File by file or in batch with the lingo importer. Lingo vs C# Differences

An easy way to debug your game, run the Remote Terminal through pipes or SignalR.
- ✅ Lingo Script Execution – Runs legacy Macromedia Director scripts directly in C#.
- 🔌 Pluggable Rendering Backends – Clean architecture supporting:
- 🧠 Director application – Offers basic movie, cast, and score compatibility and can run standalone or as a library in your project.
- 🧩 Modular Runtime Architecture – Clear separation of concerns: input, rendering, audio, system services, and script execution.
- ⚙️ Service-Oriented Initialization – Uses dependency injection and service collections for clean setup.
- 🌍 Cross-Platform Compatibility – Works anywhere the .NET SDK is available.
⚠️ Can you help us make this dream project come true?
This project is still under heavy development, and we can use some help. Reach out if you want to contribute.
🚧 Warning: The Director SDL integration is still under heavy development and is not yet functional. . .
Macromedia Director and its Lingo language were revolutionary in their time, like John Henry Thompson and Marc Canter who created them. They empowered an entire generation of artists, educators, and game developers to create interactive experiences long before today's engines existed.
Director pioneered ideas that shaped the future of digital creativity:
- The stage, cast, and score metaphor made multimedia authoring approachable
- The Lingo scripting language gave non-programmers the power to create interactivity
- A vibrant global community pushed the boundaries of art, education, and entertainment
BlingoEngine is not here to replace Director, but to honor its spirit — carrying those ideas forward into the modern era so they can continue to inspire.
| Director's Legacy ✨ | BlingoEngine's Contribution 🚀 |
|---|---|
| First accessible multimedia authoring tool for creatives | Keeps Lingo projects alive on modern platforms |
| Introduced the stage, cast, score, and Lingo scripting concepts | Brings those concepts into C# and today's engines |
| Enabled art, education, and indie game communities worldwide | Opens them again for exploration, study, and reuse |
| Inspired countless developers and later tools (Flash, Unity, etc.) | Bridges history with modern ecosystems like Godot, SDL2, Unity, Blazor |
🧡 To the Director developers and community:
we applaud your achievements, and BlingoEngine exists thanks to the foundation you built.
- 🚀 Port legacy Director projects to modern engines
- 🔁 Reuse existing assets, scripts, and logic
- 🛠️ Build hybrid projects that combine old logic with new rendering
- 🕹️ Explore the inner workings of Director games using readable C# code
- 💾 Preserve interactive media history with a modern toolset
Looking for a more expressive C# syntax? The BlingoEngine.VerboseLanguage package offers a fluent API that mirrors classic Lingo statements.
// Lingo : put the Text of member "Paul Robeson" into member "How Deep"
// C# with BlingoEngine.VerboseLanguage
Put(The().Text.Of.Member("Paul Robeson")).Into.Field("How Deep");-
Clone the repository:
git clone https://github.com/EmmanuelTheCreator/BlingoEngine.git cd BlingoEngine -
Run installer with prerequisites Ensure the .NET 8 SDK is available. You can install it using the helper script:
Linux:
./setup-linux.shWindows:
setup-windows.bat-
Open the solution Open
BlingoEngine.slnin your preferred C# IDE (Visual Studio / Rider). -
Build a demo Navigate to
Demo/TetriGroundsand run one of the included platform integrations.
👉 Use the dedicated guides for full setup instructions:
- Install the .NET SDK and Godot 4.5 with C# support.
- Open the repository folder in VS Code and accept the recommended extensions.
- Press Ctrl+Shift+B to build the solution.
- From the Run and Debug panel choose Launch Demo SDL2 or Launch Demo Godot.
Need a concrete reference? Check the Sample Projects overview for minimal SDL2 and Godot setups.
Both the SDL2 and Godot frontends share the same backend logic. Here's an example of how to bootstrap the SDL2 engine:
var services = new ServiceCollection();
services.RegisterBlingoEngine(cfg => cfg
.WithBlingoSdlEngine("TetriGrounds", 640, 460)
.SetProjectFactory<TetriGrounds.Core.TetriGroundsProjectFactory>()
.BuildAndRunProject());
var provider = services.BuildServiceProvider();
provider.GetRequiredService<SdlRootContext>().Run();The window dimensions above create a Director window larger than the 640×480 stage configured in the project factory.
Swap to the Godot backend by using .WithBlingoGodotEngine(...).
📄 See the Getting Started guide, Godot Setup, SDL2 Setup, and Blazor Demo for exact details.
- Documentation
- Getting Started
- Lingo vs C# Differences
- Architecture Overview
- Progress Log
- Director Lingo MX2004 Scripting Guide
- Director file analysis
- Blingo Remote NET
Documentation generated from the source code is available using DocFX. Run scripts/build-docs.sh (or scripts/build-docs.ps1 on Windows) to produce the site in docs/docfx/_site. The pages include "View Source" links back to the repository.
The core runtime that executes Lingo scripts and connects to backends.
| Feature | Status / Progress |
|---|---|
| Lingo Script Execution | ✅ Stable |
| Lingo → C# Conversion | ███████▌░░ 75% |
| Lingo bytecode (dcode) interpreter | ░░░░░░░░░░ Experimental |
| Backend | Status / Progress |
|---|---|
| Godot Backend | ✅ Tested, working |
| SDL2 Backend | ✅ Tested, working |
| Unity Backend | ██████░░░░ 70% (written, not fully tested) |
| Blazor Backend | ██████░░░░ 70% (written, not fully tested) |
| Feature | Status / Progress |
|---|---|
| FilmLoops | ✅ Done |
| Transitions | ✅ Done |
| Audio Playback | ✅ Done |
| Sprites2D | ✅ Done |
| Video Playback | █████████░ 90% |
| Macromedia Flash Integration | ░░░░░░░░░░ Far future (0%) |
| BlingoEngine 3D | ░░░░░░░░░░ Early idea (2%) |
A modern reimplementation of Director's movie, cast, and score system on top of the runtime.
| Backend | Status / Progress |
|---|---|
| Godot Frontend | ██████░░░░ 65% |
| SDL2 Frontend | █░░░░░░░░░ 15% |
| Unity Frontend | ░░░░░░░░░░ Planned |
| Blazor Frontend | ░░░░░░░░░░ Planned |
| Feature | Status / Progress |
|---|---|
| Score | ✅ Done |
| Cast | ✅ Done |
| Tempo | ✅ Done |
| Property Inspector | ✅ Done |
| Text Editing | █████░░░░░ 70% |
| Picture Painter (Godot) | ██░░░░░░░░ 30% (🎨 experimental / fun) |
| Shape Painter | ░░░░░░░░░░ 0% (todo) |
| Color Palettes | █░░░░░░░░░ 5% |
| Orion Skin | ░░░░░░░░░░ 0% (planned) |
| Behavior Code Library | ░░░░░░░░░░ 0% (planned) |
| .dir File Importer | ████░░░░░░ 50% |
✅ = ready and tested
⏳ = in progress
🧪 = experimental
🎨 = playful / for fun
We welcome contributions from the community!
To get started:
- Fork this repository
- Create a feature branch
- Write your code and tests
- Submit a pull request
Please include examples or documentation when appropriate.
Please also read our Code of Conduct.
graph TD
%% Top-level flow
A[Your game] --> B[BlingoEngine Runtime Core]
B --> C[Services]
B --> D[Rendering Abstraction Layer]
D --> E1[Godot]
D --> E2[SDL2]
D --> E3[Unity]
D --> E4[Blazor]
Licensed under the MIT License.
Note: The TetriGrounds demo's assets are not covered by the MIT License. See Demo/TetriGrounds/LICENSE.assets.txt for details.
Feel free to open an issue or start a discussion. We're happy to help, and open to ideas!









