demo_v01.mp4
Open Engine Simulator is a community-driven fork of AngeTheGreat's Engine Simulator: a real-time internal combustion engine simulation designed specifically to produce engine audio and simulate engine response characteristics. It is not a scientific tool and cannot be expected to provide accurate figures for engineering or engine tuning.
Get the latest build from this repository's Releases page. Choose the archive that matches your computer:
| Your computer | Download | Run |
|---|---|---|
| Apple Silicon Mac (M1/M2/M3/M4) | macOS arm64 ZIP | Open engine-sim.app |
| Windows PC | Windows x86_64 ZIP | Run bin/engine-sim-desktop.exe |
| Linux x86_64 PC | Linux x86_64 .tar.gz |
Extract it, then run bin/engine-sim-desktop |
The macOS build is unsigned. macOS may require you to approve it in System Settings before its first launch.
| Input | Action |
|---|---|
| A / S / D / H | Ignition / starter (hold) / dyno / RPM hold |
| G + scroll | Change RPM-hold speed |
| F / Tab / Escape | Fullscreen / screen / exit |
| I | Show dyno information |
| Shift + Space | Clutch |
| Up / Down | Change gear |
| Z / X / C / V / B + scroll | Volume / convolution / HF gain / LF noise / HF noise |
| N + scroll | Simulation frequency |
| M / , | Increase / decrease view layer |
| Enter | Reload the engine script |
| Q / W / E / R | Throttle position |
| Space + scroll | Fine throttle adjustment |
| 1–5 | Simulation time warp |
RPM hold requires both H and the dyno (D).
On touch or mouse-driven hosts, the dashboard keeps the same displays while adding direct controls: tap the Ignition, Dyno., or Hold row to toggle it; hold the Starter row while cranking; tap the up/down arrows in the Gear panel; and drag the slim slider beside the Throttle display. Releasing the slider returns the throttle to closed.
Open Engine Simulator is a community-driven, cross-platform fork of Engine Simulator, created by Ange Yaghi (AngeTheGreat). The original project's simulation work, scripts, visual language, and contributors made this project possible. This is independently maintained and not an official upstream release.
The SDL desktop application is an important reference host, but it is not the fork's sole focus. The larger goal is a stable, portable engine-sound simulator core that other applications can host. The simulator, scripting, rendering, and desktop/audio-device adapters are therefore kept as distinct layers. The audio synthesis path is being shaped into a reusable device-independent library, so it can eventually serve applications beyond this desktop program.
Contributions are welcome; see CONTRIBUTING.md. The upstream FAQ is useful historical background, but may not describe this fork's changes.
Clone with the required submodules:
git clone --recurse-submodules <this-fork-url>
cd engine-simInstall CMake 3.24+, Ninja, and a C++17 compiler. Script-enabled desktop builds also require Flex and Bison 3.2+. SDL3 is found or fetched by CMake. Shader artifacts are included; SDL_shadercross is only required to regenerate them.
The Makefile wraps the CMake presets. Set PLATFORM to one of
macos-arm64, linux-x86_64, or windows-x86_64:
# Apple Silicon macOS
make PLATFORM=macos-arm64 portable-run
# Linux x86_64
make PLATFORM=linux-x86_64 portable-run
# Windows x86_64 (GNU Make/MSYS2)
make PLATFORM=windows-x86_64 portable-runOn Windows without GNU Make, run the equivalent CMake commands:
cmake --preset windows-x86_64-desktop
cmake --build --preset windows-x86_64-desktop
.\build\windows-x86_64-desktop\engine-sim-desktop.exeTo configure, build, and test only the portable core:
make PLATFORM=macos-arm64 portable-testTo reproduce CI's complete desktop, scripting, and SDL dummy-audio validation,
use make PLATFORM=<target> portable-validate.
The browser host targets WebAssembly and WebGL 2. Install and activate the Emscripten SDK, then build and serve it locally:
make web
make web-serveOpen http://localhost:8080/. Click Enable audio once the page loads; browsers require that interaction before they allow sound playback.
On Apple Silicon with Homebrew, install the local prerequisites with:
brew install bison flex cmake ninjaIf Flex/Bison are keg-only, pass their executable paths while configuring,
for example -DBISON_EXECUTABLE=/opt/homebrew/opt/bison/bin/bison and
-DFLEX_EXECUTABLE=/opt/homebrew/opt/flex/bin/flex.
Build packages on their target platform. For Apple Silicon macOS:
cmake --preset macos-arm64-package
cmake --build --preset macos-arm64-package
(cd build/macos-arm64-package && cpack -G ZIP)See CMakePresets.json for the remaining platform presets.
Open Engine Simulator preserves the upstream MIT license and original copyright notice; see LICENSE. Historical Patreon supporter acknowledgements belong to the original project and remain in its upstream repository.