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.sh
Windows:
setup-windows.bat
-
Open the solution Open
BlingoEngine.sln
in your preferred C# IDE (Visual Studio / Rider). -
Build a demo Navigate to
Demo/TetriGrounds
and 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!