An engine for describing games built around Xerces, exprtk, and SFML.
Status: research summary (reference only)
This entry condenses a research conversation on 2026-09-22. Papers and links were gathered by the assistant then. On 2026-09-29 the arXiv pages for the GVGAI survey (1802.10363) and Griddly (2011.06363) and the schaul/py-vgdl and GAIGResearch/GVGAI repositories were confirmed to exist; the other links were not re-checked.
A domain-specific, declarative language for the rules and layout of 2D sprite games, compact enough to be generated and simulated automatically. Academic VGDL has two files, a game description and an ASCII level map. The game description has four parts:
| Part | Purpose |
|---|---|
| SpriteSet | Hierarchical list of object types; children inherit parents’ rules and can override them |
| LevelMapping | Maps characters in the level file to sprite types |
| InteractionSet | Rules that fire only on collision between two sprites |
| TerminationSet | Win and lose conditions |
There is no general scripting: behavior comes from picking built-in sprite classes and writing collision rules. There is no dedicated Wikipedia article; the closest coverage is under General game playing, and the similarly named Game Description Language is a different, older language.
| Approach | Idea | Relation to this project |
|---|---|---|
| GDL (Stanford, Genesereth) | Logic-based (Datalog-like), agents reason over the rules; very verbose because nothing is built in | Opposite philosophy: XMLGameEngine leans on a large built-in vocabulary |
| RBG (Regular Boardgames) | Rules as regular expressions, for finite deterministic turn-based games | Sibling for board games |
| Ludi / Ludii | “Ludemic” decomposition of game components | Sibling for board games |
| PuzzleScript (Lavelle) | Declarative find-and-replace rules over a grid; turn-based; rules are not limited to collisions | Closest spiritual cousin |
| Imperative engines (Unity, Unreal, GML) | Full control flow | Unlimited expressiveness, no generic reasoning about a game |
| Griddly (GDY, YAML) | C++-core rewrite of the GVGAI idea for speed | The successor that mostly replaced VGDL in AI research |
Origin:
GVGAI competition era:
Applications and successors:
The conditionals and loops are implicit, not absent: the engine’s per-tick evaluation is the loop and pattern matching on collisions or grid state is the conditional. This is a production-rule or term-rewriting system, the same paradigm as cellular automata, Datalog and regex-based rule languages. The trade-off is explicit in the literature: expressiveness against compactness and generability. VGDL chose compactness so search and evolution can mutate thousands of games; a Turing-complete layer would kill that. It stops making sense where the sprite and interaction vocabulary runs out. XMLGameEngine makes the same bet, with exprtk carrying per-rule arithmetic rather than general control flow, and pays the same price (01, 12).