u/Foreign-General3542
One voxel engine across web, iOS, and desktop cost me 6 months
First game I’ve worked on seriously. Six months in, the web build is live, iOS is on the store, and desktop is in early beta.
Last year I posted on Ask HN looking for game-dev resources because I had never built a game before. A lot of what is in this project traces back to what people shared there.
The biggest technical decision I made early was to share the engine, not the frontends.
The renderers stayed platform-specific. Web uses Three.js and WebGPU. iOS uses Metal. Desktop uses wgpu and Slint. But the voxel mesher is one Rust codebase compiled three ways.
That part works.
What I underestimated was the cost of making it deterministic across platforms.
A CI gate hashes mesh output bytes across Linux, macOS, and wasm. If a chunk meshes differently on one target, the PR fails. The goal is that a chunk built on an iPhone and a chunk built in Chrome end up byte-identical.
A few things broke this earlier than I expected.
HashMap iteration order changed output bytes.
Float reductions produced different results when order changed.
LLVM/vectorization reordering broke byte identity once during a release-profile bump.
Aggressive optimization settings had to be backed off and pinned.
Platform-specific assumptions kept sneaking into code that was supposed to be shared.
None of these were impossible problems. But each one turned into a multi-day rabbit hole.
The lesson I would take into my next game is this:
Cross-platform shared-engine architecture can be correct long-term and still be the wrong first decision.
If I started over, I would ship web only first, prove the gameplay loop with players for a month, and only then add iOS and desktop. The engineering foundation is valuable, but I paid that cost before the gameplay loop was proven.
A public test build is here for context if anyone wants to see what the cross-platform parity feels like from the player side:
The next phase is finally less engine and more game: procedural biomes, exploration, and crafting.
Takeaways for anyone considering this path:
- One engine across platforms does not mean one frontend.
- Determinism becomes a product requirement, not just a nice-to-have.
- Byte-identical CI catches real bugs, but also creates a lot of work.
- Ban unordered containers from output-byte paths early.
- Prove the player loop before paying the full cross-platform tax.
Chunk seams in a cross-platform Rust voxel mesher are humbling
First serious voxel mesher I’ve worked on.
The mesher is Rust and builds to browser (wasm), iOS (xcframework), and native desktop.
The thing that surprised me most: chunk seams in Dual Contouring / MDC are way nastier than the papers make them look.
Tiny QEF differences across chunk boundaries were enough to create little cracks/open edges.
After digging through a bunch of voxel projects (fast-surface-nets-rs, Veloren, godot_voxel, etc.), I kept seeing the same pattern:
- padded SDF
- halo Hermite data
- single-owner boundary edges
So the Rust port is converging on the same setup with a 73³ Hermite-data cache for baked chunks.
Also lost an embarrassing amount of time because my wireframe debug overlay was gated on brush authority instead of actual terrain rendering, so it hid almost every important LOD/padding chunk I needed to inspect :)
Debug visualization bugs are evil
I'm building a multiplayer voxel sandbox and just shipped the native Mac, would love to hear any feedback!
I've been making a multiplayer voxel sandbox called Zero for a while now, and just shipped the native Mac build today. You drop into a shared voxel world with whoever else has the link, then build, dig, explore together. Closest reference is probably Minecraft, but designed to play in a tab with strangers without any account setup
The project started as a browser thing because I wanted a sandbox you could play with friends without the "go install X, add me on Steam, pick a server" overhead. Browser version at 0.space has been live for a bit. The Mac client is for folks who'd rather have it as a real app, with proper fullscreen and less browser overhead
you can install DMG here: https://0.space/
also you can try here freely on browser too: https://0.space/macgaming/edit
Still pretty beta. Multiplayer sync and terrain editing feel solid. Things still rough, and honestly game mechanics are intentionally thin right now because of proving the cross-platform & voxel technical foundation.
So I'm working on the mechanics layer! (gameplay loops, nature, crafting, various terrain edit brush shape etc.)
Would love to hear how it feels on your Mac :)