>set display
PHOSPHOR
MODE
BOOT SCREEN
SOUND
← BACK TO PROJECTS
RUST · WGPU · MULTIPLAYER · IN DEVELOPMENT

grit engine

A multiplayer combat falling sand game where the whole map is simulated a pixel at a time. Terrain falls, liquids flow, fire spreads, and an explosion takes a bite out of whatever was in the way.

Players
Sixteen, free-for-all or teams
The map
Simulated a pixel at a time, all of it destructible
Progression
One shared card deck per match
Content so far
34 materials, 44 reactions, 16 structures, 3 biomes
Built with
Rust, wgpu, QUIC, rapier2d
Status
Milestone one, closed source, in development
The grit sandbox: a destructible pixel cave lit by lava and torches, with water pooled in the lower chambers

This one is a passion project. I've been working on it on and off for years, and it comes out of three games. Noita, where every pixel of the world is simulated. ROUNDS, where you take a card between rounds and the powers stack up. Soldat, for fast 2D multiplayer that doesn't take itself too seriously. I wanted the three of them in one game.

The game is sixteen players on a map they can take apart. You fight, the terrain comes down around you, and between rounds everybody picks a card that changes what their gun, shield or body can do. The cards stack, so a match escalates until it stops making sense. Free-for-all or teams, voice chat, and mods.

Every pixel of that map is a simulated cell instead of a picture of one. Sand falls and heaps up, water runs downhill and finds its level, fire spreads through wood and goes out when it runs out of air, acid eats what it touches. None of it is scenery. If you can see it you can destroy it, and it behaves sensibly while you do.

A match

Rounds are short. You drop into a cave or a structure, and by the end of one it doesn't look much like it did at the start, because sixteen people have been shooting at it. Nothing gets rebuilt in between, you play the wreckage you made.

Progression is one shared deck for the whole match, picked by the host before it starts. Between rounds each player gets offered five cards at random and takes one. Cards a player takes come out of the deck for everyone, cards nobody takes go back in. The player with the fewest round wins picks first, and whoever won the last round doesn't pick at all.

The deck shrinking is the point. Rare cards get likelier the longer a match runs, and taking one is also the only way to stop someone else having it.

Where it actually is

Milestone one, which is the simulation and the sandbox I tune it in. Materials, movement, reactions, the temperature and charge layers, cave generation, world streaming and rigid bodies are written. The game on top of them is not. Right now it's an engine, not something you can play. It's closed source too, so there's nothing to link yet.

This is also the second start. The first one got to about 18,400 lines of Rust with no gameplay code in it at all. The simulation is the fun part to write, so I kept writing it, and every time I got close to gameplay I found another thing in the sim worth doing properly. Eventually I had a very good falling sand engine and no game. I kept the design documents, which were the part actually worth keeping, and started the code again from the bottom.

The screenshot at the top is the sandbox running the cave scene, 156 torches, 2,000 cells of lava, and the water that's found its way to the bottom.