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.
| File | Size | Collections | Note |
|---|---|---|---|
art-delivered.json | 99 KB | Generated by tools/art-sync.mjs. Request id → delivered file and published web path. | |
art-library.json | 302 KB | items: 640 | Generated by tools/optimize-art.py. Source art is never modified; web copies are derived. |
art-requests.json | 1300 KB | requests: 578 | Generated by scripts/gen-art-requests.mjs. Edit art-requests.manual.json or the source data, then re-run. |
art-requests.manual.json | 227 KB | requests: 169 · productionSheets: 5 | Hand-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.json | 134 KB | rules: 6 · sectors: 6 · nodes: 247 · edges: 318 | Generated by scripts/gen-atlas.mjs (deterministic). Do not hand-edit coordinates; change the generator and re-run tests (geometry, reachability, stat feasibility). |
attributes.json | 5 KB | attributes: 3 · origins: 4 · lineages: 5 | Proposed 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.json | 341 KB | requests: 320 | Generated 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.json | 45 KB | monsters: 20 · elites: 20 · bosses: 2 · pets: 4 | Region-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.json | 50 KB | skillPickLevels: 8 · builds: 18 | 18 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.json | 12 KB | impactClasses: 4 · weightClasses: 4 · reactionRule: 8 · reactions: 10 · ailments: 7 · deathStyles: 7 · monsterReactionSets: 8 · conditions: 1 | Authoritative 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.json | 19 KB | items: 37 | Potions, elixirs, cleanses, food, scrolls and utility items. Stack 200. Prices are proposed. Cooldown groups are shared (one HP potion cooldown for all sizes). |
controls.json | 18 KB | desktop: 29 · gamepad: 15 · settings: 17 | Default bindings. Every binding is remappable (desktop + gamepad). Mobile layout is drag-to-rearrange with size presets. |
cosmetics.json | 10 KB | rules: 5 · costumes: 4 · weaponEffects: 3 · auras: 3 · questlines: 7 | Cosmetics 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.json | 11 KB | controlTestIds: 18 · requiredInputDevices: 3 · gates: 5 | Pre-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.json | 2 KB | classes: 7 · appliesAfter: 2 · examples: 3 | Every 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.json | 8 KB | positionRules: 4 · proposals: 4 | Team 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.json | 9 KB | tiers: 4 · settings: 4 · rules: 5 | Game-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.json | 15 KB | terms: 68 | Zoen 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.json | 6 KB | areas: 9 · commands: 20 | GM 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.json | 12 KB | principles: 6 · desktop: 12 · mobile: 18 · worldSpace: 4 | HUD 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.json | 48 KB | currencies: 2 · equipmentSlots: 11 · armourClasses: 3 · armourBases: 39 · jewelry: 9 · rarities: 5 · affixes: 30 · orbs: 12 · gems: 13 · refinement: 4 · refinementAuras: 8 · examples: 12 | Items, 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.json | 4 KB | rules: 6 · never_sold: 7 · zoe_daily: 4 · zoe_weekly: 6 · gold_weekly: 4 | The 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.json | 16 KB | items: 42 | Two 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.json | 0 KB | Delivery 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.json | 241 KB | requests: 100 | Generated 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.json | 8 KB | neededBy: 10 | Hand-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.json | 3 KB | items: 4 | Permanent 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.json | 8 KB | Zone 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.json | 85 KB | stages: 4 · areas: 15 · surfaces: 9 · perfScenes: 5 · sources: 12 | AAA 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.json | 14 KB | skillPickLevels: 8 · xpSourceMix: 4 · profiles: 6 · levels: 40 | Generated by scripts/gen-progression.mjs. Proposed tuning — validate in playtests (see docs/design/LEVELING.md). |
quests.json | 31 KB | autoQuestRules: 7 · chapters: 5 · quests: 47 · repeatables: 7 | Main 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.json | 19 KB | devices: 3 · secondaryReferences: 2 · ownerTestDevices: 3 | Owner 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.json | 3 KB | rules: 5 · channels: 3 · display: 4 · history: 1 | Release 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.json | 47 KB | milestones: 12 · publicIntro: 1 · publicOutro: 2 | Single 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.json | 5 KB | rulesets: 3 · multiplierRules: 6 | Per-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.json | 4 KB | ladder: 6 · rules: 13 · tests: 2 | Security 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.json | 2 KB | determinism: 4 · inputRules: 2 | Shared 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.json | 291 KB | poleCodices: 3 · skills: 144 | Canonical 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.json | 14 KB | stack: 17 · setup: 18 | Technology 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.json | 11 KB | rules: 8 · phases: 4 · weather: 5 · gm: 3 · reviewMatrix: 4 | Day/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.json | 21 KB | Generated by tools/build-ui-sprites.py from accepted UI originals. 2x density; CSS uses the 1x sizes listed. | |
ui-windows.json | 6 KB | Layout 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.json | 5 KB | vendors: 7 | What 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.json | 41 KB | paths: 6 · families: 18 · bases: 56 | Zoen 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.json | 3 KB | Account 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.json | 19 KB | worldRegions: 5 · waypoints: 11 · zones: 12 · npcs: 25 | Region 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.
