The land is designed once, permanent forever
Every parcel is a real place on the shared world map. Its shape is fixed. Its battlefield is a designed, deterministic map — either AI-auto-generated or hand-shaped by the landowner.
Two coordinate systems, no confusion
- The overworld — the hexagon-city map. Real acres, permanent geometry. Never regenerated.
- The battlefield — a per-parcel arena you fight IN. Fixed frame: ±161 world-units per side (~14 acres, ~0.74 m/unit). Same size on every battle. Estate boards fight as a series of these.
Estate size scales the count of soldiers, structures, and components — not the arena. The MOBA engine is always fighting on one ±161 frame.
Battlefield JSON — the contract
One object, three consumers: the map generator emits it, the MOBA match-server plays on it, CF's command view renders it as the minimap. Everyone reads the same source.
| Field | What it is |
|---|---|
bounds | the parcel's polygon, centered, in world-units |
meta.modes[] | which battle modes this geometry supports (DUEL/SIEGE/GUARD always; CLASH/DOMINION when fair edges exist) |
meta.continentId | which of the 12 continents — drives weather lookup |
obstacles[] | trees, rocks, water, cliffs — pathing blockers |
buildSpots[] | designated positions where defenders place their walls, towers, gates (pre-battle, from the CF main-map defense screen — no mid-battle building) |
spawnZones[] | edge entries — armies enter here, matched to the direction they marched in from |
lanes[] | corridor waypoints spawn → enemy base |
structures[] | baked fortification (walls/gates/towers pre-placed on LARGE+ estates) |
Coordinates use {x, z} (y = height, never used for position). Blue/ATTACKER = SW, red/DEFENDER = NE. Cores at ±114.8, spawns at ±131.6 — the frame is fixed forever.
Map designer — three modes
- AI auto-design (default) — the generator ships every parcel with a designed map. AI iterates over time (design version bumps). No player action needed. Server-side saved.
- Landowner freeze + edit — the owner freezes the AI and hand-designs the parcel (WC2-editor style). Terrain, resource placement, obstacles.
- Occupier structures (destructible) — occupiers can only ADD structures on the seeded buildSpots. Attackers who break them pillage salvage materials.
Thumbnails — each designed parcel's top-down PNG textures the overworld map. What you see on the world view IS the actual battlefield.
Mode capability flags
Not every parcel supports every mode. A sliver-shaped parcel physically can't produce two mutually-fair edge starts — CLASH would be geometrically unfair. Rather than reject those parcels, the generator marks them with a meta.modes[] capability list:
- DUEL / SIEGE / GUARD — universal. Every parcel supports them.
- CLASH — supported iff ≥ 2 fair edge starts exist.
- DOMINION — supported iff a viable center objective slot exists on walkable ground.
When a battle situation would ideally be CLASH but the parcel doesn't support it, CF's sim falls back to DUEL and routes extra armies via the reinforcement queue. Nothing breaks; the arriving armies wait their turn.
Playability gate — what a generated map MUST have
- Every spawn edge has a corridor reaching the base area
- Every lane is pathable end-to-end
- All buildSpots / resources / structures / mobs sit on walkable ground
- Base area clear radius around each CORE
- Deterministic — same seed + params = byte-identical map
- DUEL / SIEGE / GUARD supported (universal)
- buildSpots populated per size class (never empty on production maps)
The Land Maps studio — see it, design it
All of the above is live and browsable at map.etherfantasy.com — every designed battlefield viewable in 2D command view and 3D game render, with reference maps for each biome. Landowners can sign in and redesign the parcels they own; everyone else can explore the gallery.