Game guide · source of truth
Library

Data files — the canonical game data

Every rule and content number lives here. The wiki, and later the client and servers, read these files. Generated files are marked; edit their generator, not the JSON.

FileSizeCollectionsNote
art-delivered.json99 KBGenerated by tools/art-sync.mjs. Request id → delivered file and published web path.
art-library.json302 KBitems: 640Generated by tools/optimize-art.py. Source art is never modified; web copies are derived.
art-requests.json1300 KBrequests: 578Generated by scripts/gen-art-requests.mjs. Edit art-requests.manual.json or the source data, then re-run.
art-requests.manual.json227 KBrequests: 169 · productionSheets: 5Hand-authored art requests (HUD kit, branding, maps, key art, VFX textures, production sheets). Generated requests (skill/weapon/atlas/NPC icons) come from scripts/gen-art-requests.mjs. Both merge into data/art-requests.json and art-requests/*.md.
atlas.json134 KBrules: 6 · sectors: 6 · nodes: 247 · edges: 318Generated by scripts/gen-atlas.mjs (deterministic). Do not hand-edit coordinates; change the generator and re-run tests (geometry, reachability, stat feasibility).
attributes.json5 KBattributes: 3 · origins: 4 · lineages: 5Proposed tuning. Attributes come ONLY from origin base, per-level origin growth, Atlas nodes and gear. There is no manual point allocation (PoE model) so no build can be bricked and mobile UX stays simple.
audio-requests.json341 KBrequests: 320Generated by scripts/gen-audio-requests.mjs. One text-to-SFX prompt per sound; status comes from files in audio/source/<category>/. Edit the generator, not this file.
bestiary.json45 KBmonsters: 20 · elites: 20 · bosses: 2 · pets: 4Region-1 bestiary from data/v4 (IDs/numbers preserved; two bandits renamed per v4 world chapter). Reaction set + weight class added for hit-reaction contract (combat-states.json).
builds.json50 KBskillPickLevels: 8 · builds: 1818 builds = 3 per Atlas path (Iron, Steel, Wind, Storm, Lantern, Jade). Each build gets exactly 8 Codex picks by level 34 (levels from progression.skillPickLevels); pick 7 is the codex finisher by default. picks[] is a recommended plan, not a lock. hotbar.chain is the Mouse1 chain list (attack skills only, up to 8); Q/E/Z/X/C take any skill or buff; quick holds buffs (consumables are added per scenario).
combat-states.json12 KBimpactClasses: 4 · weightClasses: 4 · reactionRule: 8 · reactions: 10 · ailments: 7 · deathStyles: 7 · monsterReactionSets: 8 · conditions: 1Authoritative reaction + state contract. The server decides reactions from (hit impact, special, target weight, poise). Clients only play the matching animation/VFX/SFX. Numbers are proposed tuning.
consumables.json19 KBitems: 37Potions, elixirs, cleanses, food, scrolls and utility items. Stack 200. Prices are proposed. Cooldown groups are shared (one HP potion cooldown for all sizes).
controls.json18 KBdesktop: 29 · gamepad: 15 · settings: 17Default bindings. Every binding is remappable (desktop + gamepad). Mobile layout is drag-to-rearrange with size presets.
cosmetics.json10 KBrules: 5 · costumes: 4 · weaponEffects: 3 · auras: 3 · questlines: 7Cosmetics catalog (costumes, weapon effects, auras) and the long side questlines that unlock them. Cosmetics change looks only — never stats, drop rates or XP. Quest-earned cosmetics are character-bound and can be shown or hidden per slot. Hours are proposed estimates for a level-40 player doing the quest alongside normal play.
development-standards.json11 KBcontrolTestIds: 18 · requiredInputDevices: 3 · gates: 5Pre-development standards, ADR-027 and owner decisions 2026-10-05. Documentation contract only; engine acceptance remains future work. Accepted direction is distinct from proposed tuning, including owner-suggested reuse targets.
drop-quantity.json2 KBclasses: 7 · appliesAfter: 2 · examples: 3Every stackable drop rolls a RANDOM quantity (owner, round 7, amends ADR-017): an integer drawn uniformly from min..max when the drop succeeds. Elites multiply the rolled value by 3 (existing rule), the active ruleset's dropQuantity multiplier applies after the roll (alpha ×10), rarity and affix odds are never touched. Equipment is not stackable: it drops as single items (its randomness is the chance, affixes and rarity). All ranges are proposed; the economy simulation (M8) tunes them.
events.json8 KBpositionRules: 4 · proposals: 4Team events where every player picks a POSITION when signing up (the classic trade-run job idea: one side carries goods, one escorts, one robs). Proposals for the owner to choose from (OPEN-8); all numbers are proposed. Every option is an opt-in instance, so ADR-021 (no open-world PvP in the MVP) still holds.
feel-quality.json9 KBtiers: 4 · settings: 4 · rules: 5Game-feel and VFX quality tiers (presentation only). The Feel Lab reads this file; the client's settings menu uses the same ids. Outcomes, hit shapes, timings and monster telegraphs are identical on every tier. Values are proposed until the M2 VFX Lab measures them on the reference devices.
glossary.json15 KBterms: 68Zoen dictionary. One definition per term; agents must use these words exactly (code identifiers in brackets). Every term has an href (the screen or section that explains it) and some have a popup (kind:id of a game object).
gm-room.json6 KBareas: 9 · commands: 20GM room: the owner's manual-test space (and the closed-alpha QA kit). Everything a tester needs at once — monsters, static targets, bosses, any item with chosen affixes, preset builds, resets — without a custom alpha ruleset. Server-side commands; the wiki shows the presets and an item forge preview.
hud.json12 KBprinciples: 6 · desktop: 12 · mobile: 18 · worldSpace: 4HUD layout contract. Rects are percentages of the safe area (desktop reference 1920×1080; mobile landscape reference 2340×1080 minus notch insets). The wiki renders these as live mockups; the client must use the same anchors. Art pieces map to art-requests (ART-HUD-*).
items.json48 KBcurrencies: 2 · equipmentSlots: 11 · armourClasses: 3 · armourBases: 39 · jewelry: 9 · rarities: 5 · affixes: 30 · orbs: 12 · gems: 13 · refinement: 4 · refinementAuras: 8 · examples: 12Items, affixes, orbs, gems and examples. Numbers are proposed tuning (economy simulation pending). Rarity = affix count. Affix tiers are shown in popups only while Alt is held.
market.json4 KBrules: 6 · never_sold: 7 · zoe_daily: 4 · zoe_weekly: 6 · gold_weekly: 4The Caravan Market (owner, round 7: amends ADR-018). A small, capped daily and weekly shop where Zoe can buy progression helpers. Prices and caps are proposed; OPEN-7 sets the Zoe pack prices and the M8 economy simulation checks the caps against free-player drop rates (design target: a full daily set equals roughly 45 minutes of normal play, a full weekly set roughly 4 hours).
materials.json16 KBitems: 42Two materials per monster (ADR-017). Sold to any vendor for gold; later used in crafting. Stack 999. Drop chance is per kill; the quantity of a successful drop is RANDOM (1–5, see drop-quantity.json); elites drop ×3 quantity.
model-delivered.json0 KBDelivery records of the 3D model request log (ADR-033). Written by tools/model-inbox.mjs after it validates art/3d/inbox/<id>.glb (status delivered or rejected, file, version, sha256, checks, note); unknown inbox files go to unmatched. Not generated: gen-model-requests.mjs merges it into model-requests.json.
model-requests.json241 KBrequests: 100Generated by scripts/gen-model-requests.mjs (ADR-033). Edit model-requests.manual.json or the source data, then re-run pnpm data:build. Delivery records live in model-delivered.json (tools/model-inbox.mjs).
model-requests.manual.json8 KBneededBy: 10Hand-authored inputs for scripts/gen-model-requests.mjs (ADR-033): polygon budgets, size ranges, Tripo settings, the turnaround sheet layouts and the roadmap need of each kind. The request list itself is generated from bestiary, mounts, items, cosmetics and world data; edit this file or that data, then run pnpm data:build.
mounts.json3 KBitems: 4Permanent per-character mounts (ADR-009), bought from Stablemaster Kerem. The level-10 mount is the reward of quest Q1.11 (The Reedback Stable). Mounting: 1 s channel out of combat (key T). Mounted characters cannot attack; most hits dismount.
netcode.json8 KBZone server netcode numbers (ADR-003, M1-03): tick budget, fixed-rate scheduler, spatial hash, interest (AOI) sets and channel caps, moved here from docs/tech/NETCODE_1000.md so the zone server (services/zone) reads them from data; the doc explains them. The tick rate itself is sim.json → tickHz.
polish-standards.json85 KBstages: 4 · areas: 15 · surfaces: 9 · perfScenes: 5 · sources: 12AAA detail catalog: the small presentation and optimisation details that make combat, sound, effects, world and interface feel finished. Accepted by the owner on 2026-10-06 as the polish standard, adopted stage by stage (ADR-028); nothing here is implemented or measured, and every number is a starting value to tune. Presentation only: no item changes a server outcome. Existing canonical values (hitstop per impact class in combat-states.json, tiers in feel-quality.json, budgets in docs/tech/PERFORMANCE.md) keep their authority; this file adds the missing details and never overrides them. Round 2 (90 details, the NET, INP, LOOK and FLOW areas and the alpha stage) was accepted on 2026-10-07 (ADR-031).
progression.json14 KBskillPickLevels: 8 · xpSourceMix: 4 · profiles: 6 · levels: 40Generated by scripts/gen-progression.mjs. Proposed tuning — validate in playtests (see docs/design/LEVELING.md).
quests.json31 KBautoQuestRules: 7 · chapters: 5 · quests: 47 · repeatables: 7Main storyline 1→40 (47 quests). Auto-Quest walks steps in order; "choose" steps pause and prompt. XP share is a fraction of that level’s xpToNext (progression.json).
reference-devices.json19 KBdevices: 3 · secondaryReferences: 2 · ownerTestDevices: 3Owner delegated a low-end baseline appropriate to 2026-10-05. Selected reference configurations, not measured game support or purchase authorization. Manufacturer specifications are facts; performance goals remain proposed until physical profiling.
release.json3 KBrules: 5 · channels: 3 · display: 4 · history: 1Release versioning shown to players (loading screen, login screen, Options → About, bug reports) and on this wiki. Semantic versions; the channel shows the test phase. The client reads this file at build time.
roadmap.json47 KBmilestones: 12 · publicIntro: 1 · publicOutro: 2Single game roadmap. Every task: ≤ 1 agent session (S ≈ 30–60 min, M ≈ 1–2 h, L ≈ 2–4 h), starts and finishes with tools/task-log.mjs, has at least one automated test and one piece of evidence (screenshot/video/metrics JSON). Milestones M3+ list task groups; split them into S/M tasks with docs/process/TASK_TEMPLATE.md when the milestone starts. Engine: Unity 6 LTS client (ADR-024, accepted 2026-10-04). Since 2026-10-06 (ADR-029) each M0–M2 task lists what it `needs` (blender, rust, dotnet, unity, devices, owner); a task with `earlyStart` may begin once that task is done, even while its milestone's dependency is still open. The milestone gate itself is unchanged. Proposed GM arena tasks (owner decision 2026-10-08): GM-00 (M0), GM-01 (M2, after M2-01), GM-02 (M4), GM-04 (M6) and GM-03 (end of M9); M4, M6 and M9 list them as tasks next to their groups.
rulesets.json5 KBrulesets: 3 · multiplierRules: 6Per-phase tunables (ADR-019). Round 4: every test phase is the live game times multipliers (live = all ×1). The server loads one ruleset at boot (env ZOEN_RULESET=alpha|beta|live); game code reads multipliers, never phase checks.
security.json4 KBladder: 6 · rules: 13 · tests: 2Security rules (docs/tech/SECURITY_ANTICHEAT.md). Gameplay code only reports security events; this rule engine decides. Bans are automatic; humans review only appeals (Contact us). All thresholds proposed.
sim.json2 KBdeterminism: 4 · inputRules: 2Shared simulation contract for the zoen-sim crate (M0-03, ADR-024 and ADR-029): fixed tick, integer units, determinism rules and the golden-vector files the C# prediction subset or the client plugin (M0-09, M0-11) must match. Movement numbers come from attributes.json and world.json; this file holds only the simulation's own rules.
skills.json291 KBpoleCodices: 3 · skills: 144Canonical skill list: 18 weapon codices × 7 skills (6 + 1 finisher) + 3 pole codices × 6 buffs (3 self, 3 team). Numbers are proposed tuning; timings are authoritative server phases. Ranks: 1 learn, 2 and 3 each add +18% and a facet choice. Max rank 3. Only kind "attack" can sit in the Mouse1 chain; finishers fire only while their "requires" condition is true.
stack.json14 KBstack: 17 · setup: 18Technology decisions (ADR-003 servers and protocol, ADR-004 monorepo, ADR-024 Unity client accepted 2026-10-04; written up in docs/vision/DECISIONS.md by M0-06) and the machine setup checklist. Exact versions are pinned here when installed (Unity: the 6.3 LTS patch, verified on unity.com).
time-weather.json11 KBrules: 8 · phases: 4 · weather: 5 · gm: 3 · reviewMatrix: 4Day/night cycle and weather contract (ADR-030: accepted by the owner on 2026-10-06, built from day one, with toggles in the GM arena). Look and sound only: no state changes a server outcome. Every number is a proposed starting value until it is measured on the reference devices.
ui-kit.json21 KBGenerated by tools/build-ui-sprites.py from accepted UI originals. 2x density; CSS uses the 1x sizes listed.
ui-windows.json6 KBLayout contract for in-game windows (engine + wiki). Sizes are CSS/UI pixels at the 1920×1080 reference with UI scale 100%. Cells are square. The wiki's Inventory mockup reads this file.
vendors.json5 KBvendors: 7What each town NPC buys and sells. Vendors buy every material and item: materials at sellGold, equipment at 25% of its blacksmith price (normal) and 40% for magic+ items.
weapons.json41 KBpaths: 6 · families: 18 · bases: 56Zoen weapon families (18, three per Atlas path) and region-1 bases (levels 1–40). DPS(ilvl) ≈ 8 + 1.3 × ilvl. Requirements follow attributes.json itemRequirement.
web-account.json3 KBAccount pages on the official website (apps/site). The activity feed lets players follow Auto-Hunt and offline Auto-Hunt without logging into the game.
world.json19 KBworldRegions: 5 · waypoints: 11 · zones: 12 · npcs: 25Region 1 (Amber Basin) world contract. Laid out at 4.096 km for 1,000-player channels; zone IDs, levels, monster numbers and abilities are canonical here.

Tests: pnpm data:test (contracts for every file). Generators: pnpm data:build.