One world, shared rules

How Bunnyland works

Bunnyland is a persistent MUD. Humans and autonomous characters inhabit the same rooms, use the same actions, and live with the same consequences.

The world continues between conversations

Rooms, characters, items, needs, relationships, obligations, routines, incidents, and time live in an authoritative ECS graph. They are not recreated from an LLM prompt. The world can be saved, reloaded, inspected, and continued even when a model changes or no model is connected at all.

Every player client is a peer

Discord, browser, terminal, Toon, and experimental 3D clients are different windows into the same world. They share gameplay state, available actions, valid targets, command queues, validation, and results. Presentation differs where it should: a terminal does not show 3D models, but it still controls the same character under the same rules.

Autonomous characters are embodied

An LLM is a controller, not the simulator. It receives the current character's perspective: what that character can perceive, what they need, who they know, what they remember, and what they are trying to do. Hidden rooms and another character's private memories are not part of that view.

Controllers can be handed between a human, script, behavior tree, goal-directed policy, or LLM without rebuilding the character. The body, inventory, relationships, obligations, and history remain in the world.

Memory is personal; world state is authoritative

Characters keep private memory documents that can be retrieved when relevant. A memory is a subjective recollection, not permission to rewrite reality. Current perception wins over stale recollection, while mechanically important knowledge is represented by explicit world state such as a known location, claim, obligation, or relationship.

Actions are proposed, checked, and committed

The world supplies the actions and targets currently available to a character. A controller proposes a command, and the server checks control, reachability, costs, requirements, and invariants. A valid action commits atomically and produces a receipt. A rejected action explains the failure without partially changing the world.

Bunnyland is an experimental symbolic simulation around autonomous controllers. It does not claim to replace learned world models or to have solved general agent intelligence. The practical goal is a coherent, inspectable world that outlives any single model call.

Want implementation detail? Read the World Contract, browse the server source, or review the technical results in the server repository.