Skip to content
Pedro Braiti
← All projects

Autonomous systems

Verdigris

A 2D roguelite where physics is the mechanic: no weapon was ever coded, they all emerge from material properties.

Measured

93

invariant tests — the physics has to keep obeying its own laws

Conditions
93 of 93 green under `cargo test` on the core crate · the simulation runs without opening a window, so the test never depends on rendering anything
Role
Author, personal project
Context
Personal project in physics simulation and game design
Period
2026
Status
Playable prototype

Verdigris is a 2D roguelite built on a falling-sand simulation: every pixel of the world is a material with temperature, density and state, and everything else happens as a consequence. It’s written in Rust, in a two-crate workspace — the simulation core doesn’t know a game exists around it, and the game can’t reach into the physics to cheat.

The design principle is what makes the project interesting to me: define laws, never artifacts. There is no flamethrower.rs. There is combustion, there is heat transfer, there is a flammable material — and a flamethrower is what happens when you point all three the same way. Acid doesn’t carry a list of “things it dissolves”; it reacts with whatever the material table says it reacts with. The practical consequence is that mechanics show up without me writing them, which is great, and so do bugs, which is less great.

Hence the 93 invariant tests. In an emergent simulation a defect doesn’t surface as an exception: it surfaces as sand falling upward, heat appearing from nowhere, or mass quietly vanishing in a corner of the map. The tests check the laws directly — conservation, monotonicity, reversibility where there should be any — and run without opening a window, because the core is pure. clippy and fmt are a gate, not a suggestion.

It’s a playable prototype, not a finished game. The roguelite progression loop exists but is shallow, and performance still caps how big the world can get. The repository is private.