Skip to content

A taxonomy of games ​

Games are not all reverse engineered the same way. The hard part differs by kind of game: the frame loop in a shooter, the simulation and saves in a city builder, the script engine in an adventure game. This section sorts games into families, gives each family a rule set (what must be exact, where the rules live, what to capture, how to check), names reference games, and lists public projects that rebuilt such games, so you can learn from them.

Use it at the start of a project, together with the re-inventory skill:

  1. Decide who drives: the game or the player (Who drives).
  2. Place the game on the axes below.
  3. Read its family page (or pages, for a mixed game) and copy the rule set into the project's AGENTS.md.
  4. Follow the connections to the systems your game shares with other families.

Ask your agent ​

Classify my game. Copy this prompt into your coding agent:

text
In my GameFrame project, classify the game.

1. Read docs/games/README.md and docs/games/interaction.md.
2. Look at the game's files and its manual. Ask me how it plays if you cannot tell.
3. Decide who drives (a stream, a simulation, an environment, or turns), the time model,
   where the rules live and what must repeat exactly. Name the family.
4. Read that family's page. Write the kind of game, its axes and its family into
   docs/FINDINGS.md, with the evidence for each.
5. Copy the family's rule set into the project's AGENTS.md and adjust it to this game.
6. Ask me how exact the interface must be, and record my answer.

Axes ​

Find your game's value on each of these axes. The values show where most of the work will be.

AxisValuesWhy it matters
Who drivesa stream with controls; software over a simulation; an environment; turns and choices (details)Where the behaviour lives: a frame loop, a simulation step, triggers, or handlers and scripts
Time modelfixed-step real time; variable-step real time; pausable real time; turn-based; waits for inputWhat "the same run" means, and how to replay one (The main loop)
Where the rules livemachine code; data tables; a script language and its interpreter; an engine plus dataWhether you port code, read data, or write an interpreter
What must repeat exactlydemos; lockstep multiplayer; saves; nothing beyond playHow strict the verification must be, down to float rounding
Era and platformDOS real mode; DOS protected mode; Windows 9x with DirectX; 64-bit Windows; consoles; managed engines (Unity, .NET)Tools, ABI, and how to run the original (DOS games, ABI, re-inventory)
Presentationtext; 2D tiles and sprites; 2.5D (ray casting, sectors); 3DWhat the renderer must reproduce, and how pictures are compared
Interfacedrawn by the game's own code; data-driven layouts; a platform toolkitHow much of the interface is code to trace (Capturing the interface)

Families ​

FamilyWho drivesTypical time modelThe hardest part
Arcade action: shoot 'em ups, platformers, beat 'em ups, fightingstreamfixed step, 60 or 70 per secondframe-exact order, collision, demo sync
First-person and 3D actionstream, environmentfixed tick or variablethe renderer, movement physics, demo sync
Racing and sportsstreamfixed stepvehicle or ball physics, AI drivers and players
Vehicle and space simulationsstream, environmentfixed step, time accelerationfixed-point or float maths, orbits, flight models
City building and managementsimulationfixed step, game speedsthe simulation step, random draws, saves
Strategy: real-time, turn-based, tacticssimulation, turnslockstep ticks or turnsdeterminism for multiplayer, AI, pathfinding
Role-playing gamesenvironment, turnsmixedrules tables, scripts, dialogue, saves
Adventure and story gamesturns, waitingwaits for inputthe script engine and its byte code
Puzzle, board and card gamesturns, streamturns or fixed stepexact rules and random draws; often small
Online gamesenvironment, simulationserver ticksthe client-server split; legal limits

Connections ​

Many systems appear in several families. A family page says "see also" when a system it describes also appears in another kind of game. You trace such a system once. The table shows the main shared systems and where to read about each.

SystemFamilies where it matters mostRead
Fixed-step frame loop, steps per framearcade action, first-person, racing, vehicle sims, management, real-time strategyThe main loop
Input recorded per frame (demos, replays)arcade action, first-person, racing, strategyInputs
Lockstep determinismreal-time strategy, management with multiplayer, fighting games with rollbackNetworking
Random generators and draw orderevery family; most critical in management, strategy, RPGs, card gamesRandom number generators
Tile maps and layersplatformers, shoot 'em ups, strategy, RPGs, managementArcade action, Strategy
Pathfindingstrategy, management, RPGsManagement, Strategy
Fixed-point mathsDOS-era games of every family; vehicle sims, first-personDOS games, ABI
Software 3D renderingfirst-person, vehicle sims, racingFirst-person, Vehicle sims
Physics (vehicles, balls, bodies)racing, sports, vehicle sims, pinballRacing and sports
Script languages and byte-code interpretersadventure, RPGs, some strategy (mission scripts), visual novelsAdventure
Data tables of rules (units, items, spells)strategy, RPGs, management, shoot 'em ups (weapons)Resources and data
Procedural generation from a seedvehicle sims (galaxies), management (maps), roguelikes, strategy (random maps)Vehicle sims
A world simulated while unseenmanagement, strategy, RPGs, onlineManagement
Saves as a full world statemanagement, strategy, RPGsSaves
Event and trigger scripts in levelsshoot 'em ups, first-person, RPGsArcade action

Approaches you will see in other projects ​

The family pages list public projects that rebuilt games. What you can learn from each one depends on the route it took.

ApproachWhat it meansWhat you can learn from it
ReimplementationNew code written from reverse engineering the shipped program, usually checked against itMethod, structure, how they verified; never copy their code into a clean-room project
Engine reimplementationA new engine that runs the original game's data (scripts, maps, models)How the data and scripts work
Matching decompilationSource code that compiles back to the identical original binaryThe original's structure, exactly; it is the slowest route
Source portA port of source code the rights holder releasedHow the original was built; no reverse engineering was needed

A clean-room project (see Legal) reads other projects' documents and method, not their code. Write in your project's rules which of them may be read.

Projects change, move and sometimes are taken down. Check each link before relying on it. Check the descriptions here before you cite them.

Code: Apache 2.0. Content: CC0 1.0. No game material: bring your own copy.