The corner rule is strict, and that is what makes walls mean anything
A diagonal Move is legal only when both shared orthogonal neighbours are
passable. Cutting the corner of a wall is not allowed, and the reason is structural:
under the lenient rule a solid diagonal line of wall is crossable at every joint,
and a room sealed by a diagonal corner is not actually sealed. If walls do not
reliably block, terrain stops being tactical and the map stops meaning anything.
A diagonal blocked this way reports its own distinct reason, separately from
ordinary impassable terrain. "The square ahead is open but you cannot reach it from
this angle" is confusing enough to deserve its own line in the Tick report.
Terrain changes permission, not speed
Terrain has no movement cost. One Move is one Tick regardless of what is underfoot,
because a mud square that "costs two Ticks" has quietly reintroduced multi-Tick
orders through the back door. Difficult ground is expressed as a state instead:
walking into deep mud can apply a Bogged condition that affects the
following Tick unless it is cleared. The Move still advanced one square, and
the cost is visible in the report rather than hidden in the terrain.
Terrain also distinguishes passable from walkable. A square is passable when its
terrain permits standing on it, and walkable when a character can actually get there
from where characters are. A passable square sealed behind a diagonal joint is
passable and not walkable — a place a player can see, plan a route toward, and never
stand on. Every map is therefore validated for full connectivity from its starting
region before it is ever written into a Shard.
The map is written by hand and kept in the repository
The land is authored as text and reused across every Shard built from it, which
makes it a permanent feature of the game rather than a property of one server. The
generator still exists, for tests and throwaway Shards where a hundred random maps
are worth more than one good one, but authored maps are the normal path.
Three reasons, and the third decided it. Balance needs a fixed subject: you cannot
tune an encounter or a travel time against terrain that differs on every Shard.
Learning the land is a reward, and only counts as one if the ford stays where the
ford was. And a map in a repository changes through a commit somebody can read, with
the previous version still there — a map in a database changes because somebody ran
an update. The cost is honest: building a good map takes real time, and there is no
shortcut.
A Shard receives a copy of the map at creation, not a reference to it, so a
world in progress can never change shape because a file was edited. The atlas slug
and version are recorded so the copy's origin stays knowable.
Regions decide what a place is for
Regions are painted onto the same grid as the terrain — a forest is not a rectangle —
and every square belongs to exactly one. A region carries what it spawns, how much of
it, and how often.
A safe region is a place the world does not generate danger, not a force field. A
wolf that follows you to the gate reaches the gate. Only a protected region stops a
hostile at its boundary, and it is reserved for settlements rather than countryside.
A populated world, rather than one that spawns at you
Every spawning region has a population cap as well as a rate, and a map that omits
the cap is refused at load — a rate alone quietly fills an unvisited Shard until the
first player through the gate meets four hundred wolves standing in a field. A
region that has never spawned fills to its cap at once, so a new Shard is populated
from its first Tick. Every refill after that is gradual and proportional: a region
recovers from empty in about eight intervals whatever its size, which is what makes
clearing a camp mean something without making it permanent.
A creature appears on a passable square its region owns and never within three
squares of a player, which is the difference between a world that is populated and
one that is spawning at you. Its home is where it appeared, and its leash is measured
from there. Population is counted by where a creature came from rather than where it
is standing, so a wolf chased out of the forest does not cause the forest to
manufacture a replacement.
Built in code: authored atlases, painted regions, connectivity validation,
region-driven gradual spawning, shared creature templates, eight-direction movement
with the strict corner rule, and the generator that remains for tests.