Tooling
Tests, checks and releases
Four layers of checks, level checks before anyone plays, performance work that starts with a measurement, and numbered releases.
- Sheet
- 18 of 18
- Latest release
- v0.42
- As of
- 2026-10-22
EngineD is checked in four layers, from fast automatic tests that never open Unity to a full build played by a script. It reaches games as numbered releases, each with a plain account of what changed.
- 4
- layers of checking
- 6
- numbered releases, v0.38 to v0.43
As of 2026-10-22.
Four layers, each answering one question
No single test can see the whole engine. The fast checks reach the parts that decide what happens; the slow ones reach what a player actually gets. Each layer is cheap where the one above it is expensive, and each one is blind somewhere the next one is not.
- the simulation (what decides)
- the adapter (what shows and sounds)
| Layer | How it runs | What a pass proves | What it cannot prove |
|---|---|---|---|
| Automatic test suites | On their own, with no Unity anywhere | The simulation behaves by its rules; the adapter's decisions are right; level-check arithmetic is sound; no Unity code has crept into the simulation | Anything Unity draws, plays or moves on screen |
| Compile checks | Four separate builds of the engine's Unity-side parts | The presentation side, the editor tools and the test level's code all still build | That any of them work: nothing is run |
| Level smoke run | In the Unity editor, on the saved level | Fixtures sit on their walls, floors have no stray holes, routes can be walked, doors, water and moving platforms behave | The adapter's reactions to what the simulation reports |
| Full-player run | A built copy of the game, started minimized and silent | The game as it ships: its compiled code, its shaders, what it puts on screen, and how fast it runs | Anything quickly: it is the slowest layer, and its written report is its only window |
As of 2026-10-22.
The full-player run is the closest thing to a person playing. A script takes the controls and plays set scenarios through rooms of the engine's test level, then writes a report that is kept as evidence. Because I am usually working at the same computer, the run never takes the mouse, never plays sound and never jumps in front of other windows.
The engine's code is written with AI coding agents, under my close, active direction: I design much of the architecture and read the code that lands. A report never says only "the tests pass": it says which layer passed, and so which half of the engine was actually checked.
The tests that never open Unity
The simulation never sees Unity, and the tests enforce it. Two automatic test suites, one for the engine and one for its test level, compile the very same source files a game builds, through companion projects that contain no Unity at all. If any Unity code slips into the simulation, those projects stop building, and the slip is treated as a design error, never patched over in the test setup.
The adapter is mostly Unity by nature, so its tests reach only its decision-making cores. Wherever the adapter decides something (which animation to play, which looping background sound wins, how a lobbed shot is aimed), that decision is moved into a part that needs no Unity, so a test can reach it. Anything that holds an actual picture, sound or physics object stays with the slower layers.
Four habits apply to every suite:
- A test says what it does not prove. The best tests state their own limits, so nobody reads a pass as more than it is.
- A check counts only if it can be shown to fail. New checks are proven by planting a deliberate fault and watching them catch it; a check that cannot fail proves nothing.
- The build refuses warnings. Small problems are fixed when they appear, not left to pile up.
- Engine tests never depend on a game's numbers. The engine is checked on its own terms.
Checking a level before anyone plays it
Some level faults are invisible to every log and test: a button floating a hand's width off its wall, a floor with a gap a player can fall through, a ladder you can climb but cannot see. The engine ships three checks that any game can run against its own levels; the game supplies the level data, the engine supplies the method.
- Anchored placement. A wall fixture is stored as "attached to this wall", never as a typed position. When the level is built, the engine looks for the wall and refuses to save if it is not there; later runs measure every fixture again in the saved level.
- The watertight scan. Every walkable surface is probed on a grid one player-width apart, and every empty square must match an opening the level declared, such as a doorway or a stairwell.
- Ladder visibility. A climbable ladder must be drawn for its whole height, because the climbing, the route-finding and the placement checks all pass on a ladder nobody can see.
These checks run as part of the level smoke run, which opens the saved level, steps it with the real simulation and grades it. The engine is developed against its own test level, which is where the smoke run is used; a game runs the same three checks against its own maps.
Measuring before speeding up
Performance work follows a standing set of rules, written down so every change is held to them. In plain words:
- Measure first. A speed-up starts with a number that names the cost, never with a hunch.
- Measure before and after. Every change is measured the same way on both sides.
- Quote the report, not a memory. A number comes with what was measured, where and in which run.
- Prove the setup first. A timing of a hundred enemies in an empty room reads exactly like a fast one, so each measurement first proves that its scene really is what it claims.
- Note the machine's conditions. I work on the same computer while measurements run, so each timing records how busy the machine was.
Two habits follow. Ideas that were measured and turned out wrong are written down, so nobody rebuilds them. And every plan that touches the simulation first asks which of its costs grow with the size of the map and which with the number of creatures in it. The full-player run measures frame times in the built game, which is where a player feels them.
Numbered releases
A game does not use the engine's working copy; it uses a release. Each release is a numbered package of the engine with a changelog written for the game's author, in their terms: what a game must now do differently, and what it can now do that it could not before. The changelog covers engine changes only.
As of 2026-10-23.
| Version | Date | Among its headlines |
|---|---|---|
| v0.38 | 28 September 2026 | The first release and the baseline for every later one: how bodies look and animate, described as data |
| v0.39 | 1 October 2026 | The first with its own changelog: ragdoll deaths for chosen body types, with defences against too many at once |
| v0.40 | 4 October 2026 | Explosions blocked by walls and solid props; shots that leave from the gun; several guns on one body |
| v0.41 | 7 October 2026 | One way of drawing the player and every enemy, with guns held in the hand |
| v0.42 | 10 October 2026 | Weapons built from fire patterns on two triggers, with magazines and melee swings |
| v0.43 | 23 October 2026 | Corpses that come apart at their joints; bodies in more shapes than a capsule, sent only where they fit |
Three rules shape how releases work:
- A release is made only when I ask for one. Finished work is kept in the engine's history until then; it is never released, or proposed for release, on anyone else's judgement.
- A game moves when it is ready. Version numbers exist so that a game, such as Backdoor Rupture, the game being built on EngineD, can stay on a release while the engine keeps moving, and take the next one when it chooses. Before version 1.0 the engine may change in ways that need the game to adapt, but every such change is written down plainly enough to act on.
- The fast layers gate a release. The automatic test suites and all four compile checks must pass, because the game compiles the engine itself. The level smoke run and the full-player run grade the test level, which never ships, so they do not decide whether a release goes out.
Related sheets
- Simulation and replayThe part the automatic tests reach in full.
- Level machineryDoors, ladders, water and moving platforms the smoke run exercises.
- Tuning and content plug-insHow a game supplies its own data to the engine's mechanics.
- NavigationRoute-finding for crowds, one of the costs the performance rules measure.