The world is ours
Ember stores every block itself, vanilla ones included. Nothing underneath it gets to decide what a block is. A custom block carries its own state and its own hardness, so every mechanic can treat it like any other block.
Search projects, devlog entries, events, partners, and docs.
The server engine under Atom.
A Minecraft server of our own, because the systems our game modes need do not fit through a plugin API.
Atom needs the server to know whether a room is sealed, whether a block is supported, how warm you are. Today it gets there as a Paper plugin: block scans on a timer, third-party plugins for custom content, mixins for whatever the API will not expose.
That approach has real limits. The tick starts slipping, the profiler points at code we cannot change, and every game update rewrites internals we were relying on.
So we are building our own server instead.
No vanilla code underneath.
Every block is one we defined.
Ember starts empty. Stone is a definition we wrote, the same way reinforced concrete is, and both spell out how they break, what they drop and what light they cast. Nothing sits underneath them to override, so when Atom needs a block to act differently, there is one place to go and change it.
Ember runs on an ECS. An entity is rows of plain data rather than an object, so a system makes one pass over the parts it cares about and a crowd costs about what that pass costs. Systems declare what they read and write, which lets the ones touching different data run on separate threads.
Ember stores every block itself, vanilla ones included. Nothing underneath it gets to decide what a block is. A custom block carries its own state and its own hardness, so every mechanic can treat it like any other block.
Atom asks the server to track body temperature, block support and reinforcement across thousands of blocks and every player, every tick. Ember was built around that workload.
Every line in the hot path is ours to read and profile. When a mode gets expensive, the fix goes into the engine.
Atom runs on Ember first. Whatever Atom needs the engine to do gets built once, and the mode after it starts from there.