Skip to content
Devlog

Stage 1 in one day: releases 0.1 to 0.8

Release notes card for 0.1 to 0.8, Stage 1 in one day, over an early test scene of a charge going off at a building's column

Releases 0.1 to 0.8 closed Stage 1 of the project on September 29: choose a physics engine, break things apart, draw them, give them ground to stand on, and bring a building down. Each release had numbered performance gates, and the gate runs were measured in macOS Low Power Mode, which lowers clock speeds on the M5 Mac the game is built on. Times below are p50 (the median) and p95 (the time 95% of frames or steps beat).

Engine

  • 0.1 compiles Jolt Physics, an open-source physics engine, through the Swift package manager and wraps it in a small C interface. A convex hull dropped on the ground lands and goes to sleep within 3 s.
  • 0.2 adds a benchmark harness and scenarios from 500 to 10,000 loose pieces. The package build runs at 93 to 100% of the throughput of Jolt’s own reference build, and every 0.2 gate passes in Low Power Mode.
  • 0.3 adds fracture. A member breaks into cells around seed points that cluster near the hit, and the cells keep a graph of which ones were bonded. A 64-cell fracture costs 2.44 ms p95 on one worker at full power.
  • 0.4 adds the renderer. In a probe, one pass with a G-buffer that lives in tile memory took 2.2 ms against 8.7 ms for two passes at 2880 × 1800. It also has a sky, three shadow cascades, materials generated in code with no texture files, ambient occlusion, glass, bloom and MetalFX upscaling.
  • 0.5 puts tiled terrain into the physics world and the renderer, with ground materials that blend at their edges, and a dig key. A 16 m crater rebuilds its terrain mesh in 0.28 ms p50.
  • 0.6 puts a fixed 60 Hz simulation step behind the renderer. Physics time in the app measured 12 to 24% above the benchmark for the same scenes.
  • 0.7 adds structures and a generator for reinforced-concrete offices of 4 to 10 floors. A load graph passes every piece’s weight down to the ground, so a building that loses a column either holds or comes down in waves.
  • 0.8 gives rubble weight and closes the first collapse. A 2 t pile leaves a floor slab standing and a 150 t pile breaks it. Scene 8’s collapse brings down 834 members by 30 s where it had brought down 678.

Game

  • A click sets off a charge where the pointer points, with a reach and an energy set from the keyboard.
  • Mouse-look arrived in 0.8. We chose it over steering toward a free pointer.
  • A rocket launcher fires at 90 m/s with a smoke trail and sets off a charge where it first hits.
  • Rubble at rest stays where it lies. Small pieces are no longer retired past the body cap, so debris no longer pops out of the scene. Keeping them brought down 1,234 members against 760, because the rubble keeps loading the floors.
  • Pieces freeze in place after 1 to 2 s at rest. Before, one rocking piece kept a pile awake, and 450 bodies were still awake 25 s after the last detach.

Tools

  • The live viewer (0.3) runs every benchmark scene with a free camera. It has a heads-up display of frame, physics and GPU times.
  • --record writes a scene’s demo as a video without a display attached, 1600 × 1000 at 30 frames a second.
  • The viewer follows Low Power Mode and drops to a lighter quality tier while it is on.
  • The physics step while charges fire dropped from about 20.5 ms to 0.90 to 1.24 ms p50 in Low Power Mode. A profile had put the cost in collision against terrain, and which change removed it was not isolated.
  • Two recordings of the same collapse had dropped 696 and 1,123 members. After queries and event lists were put in a fixed order, scene 8 gives 1,266 members fallen and the same state digest in all three run modes, run after run. A digest is a fingerprint of every body’s position.
Provenance

How this post was made

Drafted by
A Claude Code session in the trilithon.games repository, October 10, 2026, working from the game's changelog, docs and tracker.
What it did
Drafted this post from the game's changelog and roadmap, and checked each number against them.
Reviewed by
Alex van Rossum,

On the roadmap: Physics, built from source, The engine verdict, A window, then real fracture, A renderer that looks right, Ground to stand on, Live simulation, A building that looks like a building, First collapse

Linear MIP2-111, MIP2-122, MIP2-128, MIP2-135, MIP2-140, MIP2-148, MIP2-155, MIP2-206