Messages connect the pieces
Handlers react to named messages and emit new ones. Your application supplies native actions, data and the starting event.
A language for event-driven game logic
Write decisions in a small scripting language. Send messages from your game. Run the same rules in C# and Swift.
module battle
on Attack(base, bonus) { let amount be base + bonus emit Hit(amount: amount)}You own the game world. The script describes the rule.
Playable examples · No installation
Try Highest Card, Mau Mau, Skat and Blackjack with editable GES rules, running locally in your browser.
The WebAssembly module is about 67 MB and loads when you open the card lab.
Small language. Clear boundaries.
Handlers react to named messages and emit new ones. Your application supplies native actions, data and the starting event.
Script values are immutable. Your application owns persistent state and decides what scripts can see through explicit native bindings.
C# and Swift implement the same language and portable program format, checked against a shared Markdown conformance corpus.
Run scripts on your machine
Compile, run and explore scripts in an interactive console.
Swift CLI for macOS and Linux.
brew install schloepke/gameeventscript/gesHomebrew installation →C# CLI for Windows, macOS and Linux. Requires .NET.
dotnet tool install --global GameEventScript.Tool.NET installation and AOT options →From source to your game
Compile text in your application or during your content build. A product that runs precompiled programs can ship Runtime and optional native adapters without the Compiler.
Understand the host lifecyclebattle.gesbattle.gesbC# or Swift hostStart with one message