OpenRealm is a local-first voxel world stack that combines a native client, runtime node network, and Ethereum-compatible orchestration layer for identity, ownership, and marketplace state.
It is built for worlds that want fast native simulation, explicit ownership rules, and a cleaner boundary between live gameplay and durable economic state.
flowchart LR
C[Native client] --> R[Runtime nodes\nrelay / simulator]
R --> W[World simulation]
C --> B[Blockchain wrappers]
B --> S[Solidity orchestration\nidentity / ownership / marketplace]
- A native C++20 voxel client with rendering, input, audio, menus, and local world interaction
- Headless relay and simulator targets for runtime networking and world execution
- ENet-based runtime sessions for bootstrap, topology exchange, and player snapshot replication
- Solidity contracts for player identity, chunk claims, delegated editing, listings, auctions, and protocol parameters
- JavaScript tooling for contract build, test, and deployment flows
- Realm-specific wrappers for local smoke deployment and main-network deployment
OpenRealm is organized around three layers:
- Client layer
- windowed gameplay, rendering, menus, audio, and player-facing UX
- Runtime layer
- relay/simulator processes, node discovery, session bootstrap, topology exchange, and live replication
- Orchestration layer
- player identity, chunk ownership, delegated editing permissions, listings, auctions, and deployment records
This split keeps simulation close to the game while moving slower, durable world rules into a separate orchestration surface.
OpenRealm uses bbs for native builds.
bbs info project
bbs build -t openrealm_client
bbs build -t openrealm_node_launcherThe orchestration workspace lives under blockchain/.
cd blockchain
npm install
npm run verifyThat command rebuilds the contract artifacts and runs the current Mocha suite.
OpenRealm currently ships with two realm configurations:
realms/testrealms/main
realms/main is the canonical example for a real deployment and the official main realm layout.
realms/test exists for local Ganache-backed testing and smoke deployment only.
If you later create your own custom realm, use the same file shapes as realms/main:
- a
realm.jsonwith the real RPC URL and deployed contract addresses - a
jump_nodes.jsonwith real reachable bootstrap relays - node
config.jsonfiles per machine or role, configured for that node's wallet, bind address, and runtime behavior
Useful commands:
cd blockchain
npm run ganache:test
npm run deploy:test:local
npm run deploy:mainThe native repo currently exposes four main targets:
openrealm_client- playable windowed client
openrealm_relay- headless relay/runtime node
openrealm_simulator- headless simulation/runtime node
openrealm_node_launcher- local multi-process launcher for relay/simulator sessions
- Native build definitions live in
project.bbs. - The orchestration workspace has CI and deployment workflows in
.github/workflows/. - Root
AGENTS.mdandCLAUDE.mdpoint to the internal.agents/repo guide used for agent-facing maintenance notes.
OpenRealm is licensed under the MIT License. See LICENSE.