Bevy
MIT / Apache-2.0The engine. The whole table is one ECS world running on Bevy.
Source & support →Every part wires into the next. Follow the brass and you build HexBench.
I didn't write the engine, the renderer, or the netcode. They did, in Rust, and gave it away for free. Every one of them is below. Go look at what they built. Star it. Back it if you can.
Each repo has a star button, and most have a Sponsor button right at the top. That's the truest way to support these projects, and better than anything I could funnel for them.
These licenses cover the dependencies named below. HexBench itself remains proprietary and closed-source.
I didn't write a game engine. These people did, and gave it away.
The engine. The whole table is one ECS world running on Bevy.
Source & support →The GPU layer underneath. Speaks Vulkan, Metal, and DX12 so HexBench doesn't have to.
Source & support →GPU vector rendering. The reason lines, fills, and tokens stay crisp at any zoom.
Source & support →The in-app tooling and inspector. Immediate-mode, fast, no ceremony.
Source & support →Glyph rasterizing. Every letter you read on the table.
Source & support →Loads and decodes every format your maps and tokens show up in.
Source & support →Real-time, free-form, and in sync. This is the hard part, and I didn't solve it alone.
The netcode. Reliable and unreliable channels that keep everyone at the table on the same board.
Source & support →The wire format. Tiny, fast binary serialization for everything that crosses the network.
Source & support →Game systems are scripts, not hardcode. So you can read them, fork them, and change them.
The scripting engine. Rules and systems run as scripts you can actually open and edit.
Source & support →Dice, ambience, the noise a table makes.
Audio playback. Every sound at the table goes through it.
Source & support →The quiet crates that hold everything else up. You never see them. Nothing works without them.
The async runtime under the server. Many connections at once, no sweat.
Source & support →Serialization, everywhere. The backbone of saving and loading anything.
Source & support →Time and dates, done right.
Source & support →Safe byte-level casting for the data that gets shipped to the GPU.
Source & support →Fast randomness. Dice rolls and the procedural bits.
Source & support →Native open and save dialogs, on every OS.
Source & support →Embedded key-value storage, pure Rust.
Source & support →Where the heavier persistence lives.
The database behind larger persistence. Source-available under BSL, and it turns into Apache-2.0 with time.
Source & support →Even the page you're reading is built the same way. Rust, no framework, no tracker.
This whole site is a static Zola build. Rust in, plain HTML out. No JavaScript framework.
Source & support →The body typeface, by Rasmus Andersson. Self-hosted right here, no CDN, nobody watching you read this page.
Source & support →The display typeface on every heading, by Natanael Gama. Self-hosted too. Roman inscriptions, basically.
Source & support →Since it matters and people ask: I use AI to help me build HexBench, and players can use AI at their own tables if they want it. That's my call and theirs. It has nothing to do with the projects above. Crediting them here does not mean any of them endorse HexBench, me, or how I work. I build on what they made, and I'm not going to pretend otherwise.
When HexBench makes enough to live on, I want to send money back to these projects. I'm not going to promise a number I can't hit yet. The honest thing I can do right now is point you at them and tell you they're worth your stars and your support.
Almost all of this is MIT or Apache-2.0, the most permissive open source there is. One piece, SurrealDB, is source-available under the BSL. HexBench only embeds it to store its own data, which its license expressly allows, and it turns into Apache-2.0 in 2029. I flag it instead of lumping it in.
None of this is sponsored. Nobody paid for placement. This is just the truth about what HexBench runs on.