Draypferd is a single-player mecha sim about piloting a working machine drafted into a corporate war — across terrain that permanently remembers every crater you put in it. I’m building it solo, with AI doing the implementation heavy lifting while I direct, test, and veto. This is the first devlog. The video: 57 seconds of the milestone gate, performed by hand.
What M0 was for
Before building a game about destructible ground, you have to prove the ground. M0 existed to answer two questions that could each have killed the project:
- Can Godot run smooth-voxel destructible terrain without me maintaining a custom engine build? (I’m one person with a $400 laptop. Engine forks are how solo projects die.)
- Does the physics survive the ground being edited underneath a standing machine? (This game’s signature interaction is terrain deforming under mechs. If bodies teleport or fall through the world when that happens, there is no game.)
What actually happened, numbers included
Question 1: best possible outcome. The voxel module’s GDExtension build loads straight into the official Godot binary — no engine compile, ever, on any machine. A 10-meter crater dispatches in 2.63 ms through the C# wrapper. Terrain edits persist to a database exact to the voxel: carve a tunnel, quit, relaunch, and the fresh process rebuilds the world with your tunnel in it, at ±0.0 m.
Question 2: clean. Carving terrain out from beside a standing body five times in a row produced 0.0000 m of displacement and zero ground-contact flicker. Carving directly underneath drops it smoothly into the crater. No teleports, no falling through the world.
The framerate, honestly. First measurement said 118 fps. Then fullscreen said 39. Both were wrong: the first ran at a small window resolution with vsync quietly capping things, the second was recording overhead plus a heat-soaked chip. The honest number, measured at true 1080p on a cooled machine: 53 fps native — below my 60 target — fixed by shipping FSR upscaling and a smaller shadow atlas as the default profile: 72 fps, worst frame 65. This laptop’s integrated GPU is the min-spec target, so if it runs here, it runs on almost anything. That’s a design pillar, not an accident.
What failed, because that’s the useful part
- My long-range ballistics plan died on contact with measurement. Raycasting through voxel data costs ~0.75 µs per meter — fine for one shot, ruinous at the load I’d budgeted. The fix fell out of an earlier decision: since the terrain is authored (not procedural), untouched ground can resolve hits with pure math, and the expensive voxel-walk only runs inside regions that have actually been damaged. You only pay for scars. That design is now on the books with a hard millisecond budget to prove next milestone.
- Editing terrain reshapes nearby surfaces by up to 12 cm in a single frame — a real mesh-seam behavior, not a bug. A raw physics capsule pops when it happens. The mech’s leg IK (next milestone) is now on the hook to absorb it, with a measured target.
- Two review passes caught two embarrassing, important defects before they shipped: the terrain module’s binaries were silently missing from version control (a fresh checkout would have been broken while every document claimed otherwise), and the debug console’s
quitcommand didn’t save — meaning the exact tunnel this milestone celebrates would have been lost if you exited the wrong way. Both caught by adversarial review before the tag. The process earns its keep.
The gate
Milestones here close on demonstrations, not dates. M0’s gate: carve a tunnel using the in-game console, quit, relaunch, fly back — the tunnel must be there. I ran it myself, on camera, with the fps counter and build stamp in frame. It passed. The video is the proof.
What’s next
M1: The Walker. A mech controller with throttle and torso-twist, legs that actually pick their footing across terrain you’ve deformed, and the first blocky stand-in chassis. The gate I have to pass: walking down into a crater you just made has to feel heavy and correct. No date — it ships when it feels right.
Draypferd: the ground remembers. More when there’s something worth showing.