Case study · Dust MC

Owning the generator

Why Dust MC was written from scratch instead of forking a working Rust server.

Snow-covered mountain ridges photographed from high above

The question was re-opened, not assumed.

Choosing to write a Minecraft server from scratch in Rust is easy to defend badly. So the decision was re-examined at the point where it would have been cheapest to reverse: an existing Rust server had become legally usable as a base, which removed the licensing objection entirely.

The remaining question was purely technical. What would we be inheriting?

The answer came from the other project's own issue tracker.

Standing chunk-generation defects in jungle terrain, in ore and stone placement, at biome borders and in stronghold ring placement, plus a chunk writer that dropped block entities on save. Not rumours, and not a hostile reading. Public, acknowledged issues.

Any one of those is fixable. The problem is where they sit.

Worldgen is the one area a server cannot afford to inherit.

A worldgen defect is latent in every chunk already written to disk. Fixing it does not repair the world it already produced, so every player who built on that terrain keeps the defect forever. And ordinary unit tests pass straight over the whole class, because the code does exactly what it says. It just does not match vanilla.

Inheriting that means inheriting a debugging problem in the one subsystem where debugging is worth the least, because the damage is already on disk.

What the decision actually bought.

Three to four years, stated in writing rather than hedged. In exchange: an exit criterion that can be checked instead of argued about. Phase six is not done when the terrain looks right, it is done when output is block-identical to a real vanilla server across ten seeds.

A second consequence fell out of it. No vanilla numbers live in the repository at all. Terrain baselines are extracted at setup time from a server the operator already has. That started as a licensing boundary and turned out to be the better design, because a resolver with vanilla's figures hard-coded would have been quietly wrong on every modded world.

Read next

Dust MC

A Minecraft Java Edition server written from scratch in Rust. No fork, no vendored code.

Open the project page
Code Start a conversation