XMLGameEngine

An engine for describing games built around Xerces, exprtk, and SFML.

View the Project on GitHub beefviper/XMLGameEngine

19. The VGDL landscape

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.

What a VGDL is

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.

Compared with other approaches

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

Papers and code

Origin:

GVGAI competition era:

Applications and successors:

Why the field stayed small

“No loops or conditionals”: does it make sense?

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).

Second batch: alternatives

Sources