# Battle arena POC

## overview.md
```yaml
id: battle-arena-poc
title: Battle arena POC
area: design
summary: Proof of concept for a battle arena — matched, resetting, opt-in combat with ley-line/conduit resource contention.
repo: land-of-lor
depends_on: []
```

## What this is

A proof-of-concept for the Battle Arena zone type: a resetting, matched, balanced-resource combat space, distinct from the persistent, evolving Battle Zone. The richest source material for this is a driving-conversation transcript with collaborator Benjamin — Kris's own vision of "two wizards looking down over a mini-map," pulling elemental power along visible ley-lines from sources (a volcano, a waterfall) to cast at each other.

## Why it exists

Tower defence and battle arenas are one of the "recurring threads across all attempts" (see workspace `CLAUDE.md`) — aspirational in `lor-elementals`, core in this attempt. A concrete POC is needed to validate whether the ley-line/conduit-pulling interaction is actually fun and legible before it's built into the real server/client.

## The loadout mechanism (core design addition, 2026-08-05)

**Complexity lives in preparation; simplicity lives in execution.** Full experimental spell-crafting — however `spell-crafting-interface` ultimately resolves its still-open interaction model (ground-casting-table vs. cauldron/sequence — see that epic and `/codex`'s "open front") — happens *out in the world*, before a fight. Entering an arena, a player chooses a small, fixed set of spells from their full collection, and only those are castable inside. Precedent: Clash Royale's eight-card deck drawn from a much larger collection. This is not a simplification of the deep system for the arena's sake — it's what makes the deep system matter *more*: choosing well, from everything you've discovered, is where mastery actually shows, rather than mastery being buried in real-time crafting speed under pressure.

**No dragging ingredients into a pot mid-fight.** The full crafting/experimentation UI stays outside the arena entirely. Inside, when a chosen spell's ingredient requirements are satisfied, it lights up and is cast directly — a readiness indicator and a trigger, not a workbench.

**Ingredients are the arena's resource.** They do the job mana or gold does in other games' arenas — but diegetically, in a game that deliberately has **no in-game currency** (see `barter-marketplace`'s load-bearing no-currency constraint). This creates a three-way lock worth naming explicitly: **arena ↔ ingredients ↔ marketplace.** Rare ingredients become tactically valuable inside an arena purely because they gate what you can cast there, which creates genuine barter demand for them outside the arena — an economy that falls out of the combat design instead of being hand-built on top of it.

**Movement *is* gathering.** The character running around the arena collects ingredients from the ground and from kills (a fire salamander might drop lizard skin or eye of newt, say). This was always the intent, not a new addition — but stating it plainly reframes the player character from "UX overhead atop a card game" (an initial worry) into *the* resource loop itself, and it gives `world-traversal-and-ground`'s ground-properties work a concrete, arena-shaped job: what grows where, and what drops from what, has to be designed for gatherability under time pressure, not just world-building flavour.

**Risk to design against: dead time.** Ingredient-gated casting can leave a player holding four unlit spells with nothing to do — and dead time is close to the worst failure mode a real-time game can have (Bloons TD, for one, never leaves a player idle). Gathering-as-movement is the mitigation, but it's a claim to *test*, not assume: the POC below must actively probe for dead-time stretches, not just validate that the core loop is fun in the abstract.

## Scope, per the source conversation (`thought-specs/battle-areans-and-element-types.md`) and the loadout mechanism above

- A shared mini-map terrain (mountains, forests) with generator points (a volcano emitting Fire, a waterfall emitting Water, etc.) that both players draw from equally — matched starting resources.
- Visible "lines" pulling energy from a generator to wherever the player is casting — the literal ley-line visualization of a conduit (see `docs/README.md` §5's port/field binding mechanism).
- A small, fixed pre-match loadout of spells (see above) — the core tension is choosing that loadout well *and* managing tempo within it: fast small creations (minions) vs. saving up for a bigger one (a spawning point), timing/tempo as the strategic axis, not raw power (consistent with "nothing is better, only different," §4).
- Movement-as-gathering: ingredients pulled from generators, the ground, and creature drops, feeding the loadout's ingredient requirements in real time.
- Fixed arena size/duration so play sessions can't be camped indefinitely ("that stops the size... balancing mechanisms in there").
- **Arena bag**: a limited stake (candidate number floated: ~50 elements) a player may carry in, separate from their persistent inventory.
- Resets after each battle — contrast with Battle Zones, which persist and accumulate "magically enriched" battle-scarred terrain (see `thought-specs/conduit-and-changing-landscape.md`).

## Non-goals

- Not the persistent Battle Zone / battle-scarred-terrain mechanic (dragon's-nest-style enrichment) — that's a related but separate mechanic, currently undocumented as its own epic; note it if it needs one.
- Not win-condition design beyond what's already noted as open (castle assault / kill-the-mage / hold-territory / capture-the-flag — `docs/README.md` §13 lists this explicitly as undecided, "probably multiple game types").
- Not the full networking/authority model — that's `server-architecture`, though this POC will surface requirements for it (shared field state during a live match is exactly the "collaborative terraforming" mechanism in §5).

## Open design questions (not tracked as formal Question objects — this epic is parked; these are for whoever picks it up properly, not for premature resolution now)

- Win conditions (genuinely undecided — castle assault / kill-the-mage / hold-territory / capture-the-flag are all on the table; `docs/README.md` §13 says "probably multiple game types").
- Whether Shared-Zone towers/spawners can harm players directly outside arenas (current lean in the docs: no, only creatures).
- The actual Power Cell / energy-source keyed item for towers — worth checking first whether one is even needed, since `docs/README.md` §5 already describes ports binding directly to field thresholds (`in Power: field Charge ≥ 3`) without a discrete item.
- Loadout size (Kris's instinct: four, untested), whether ingredient acquisition is entirely in-arena or includes a starting stock (candidate: the existing Arena bag doubles as one), and whether spells consume ingredients on cast or merely require them satisfied (leaning: consume, to keep ingredients meaningfully scarce) — all three raised by the loadout mechanism above, none decided.

## Relevant docs

- `land-of-lor/docs/thought-specs/battle-areans-and-element-types.md` — the founding vision (ley lines, matched generators, minion-vs-spawn-point tempo tradeoff).
- `land-of-lor/docs/thought-specs/conduit-and-changing-landscape.md` — arena resets vs. persistent Battle Zone enrichment, the Arena bag, Stable Mutation.
- `land-of-lor/docs/WORLD_ZONES.md` — the zone taxonomy (Home/Shared/Battle Zone/Battle Arena).
- `land-of-lor/docs/README.md` §5 (fields as the supply network — ley lines are this, visualized), §10 (world & social structure).
- `barter-marketplace/overview.md` — the no-in-game-currency constraint the loadout mechanism's ingredients-as-resource design leans on.
- `world-traversal-and-ground/overview.md` — the ground-properties work movement-as-gathering depends on.
- `object-system-experiments/overview.md` — the ingredient-count constraint this loadout mechanism creates for the wider 64-element system (its "Core constraint" section).

## status.md
```yaml
updated: 2026-08-05
parked: true
tasks: {"backlog":1,"needs-input":0,"ready":0,"doing":0,"review":0,"done":0}
open_questions: []
tag: parked
next: Parked — the hot-seat POC is written up and waiting, but nothing is demanding attention right now.
```

## Task summary

1 backlog · 0 ready (parked, so nothing is marked ready regardless of what's underneath). This epic isn't being worked right now.

## Open questions

None tracked. The real open design questions (win conditions, the Power Cell item, Shared-Zone harm, loadout size, starting stock, consume-on-cast) are recorded as plain prose in `overview.md`'s open-questions section — for whoever picks this epic up, not for generating premature decisions now.

## Next

Nothing — this is parked. Task 001 (the hot-seat POC) is fully specced and ready to pick up whenever Kris asks for it.

## tasks/ (1)

### battle-arena-poc/001 — Minimal 2-player hot-seat POC of the ley-line-pull mechanic
```yaml
id: battle-arena-poc/001
title: Minimal 2-player hot-seat POC of the ley-line-pull mechanic
epic: battle-arena-poc
state: backlog
priority: 1
blocked_by: []
estimate: L
created: 2026-08-05
updated: 2026-08-05
claimed_by: null
claimed_at: null
delivers: []
review_artifact: null
```

## What to do

Build a throwaway, non-networked (single-machine, hot-seat) prototype of the core battle-arena loop from `thought-specs/battle-areans-and-element-types.md` **and** the loadout mechanism in `overview.md`: a shared mini-map with generator points (a volcano emitting Fire, a waterfall emitting Water), both players entering with a small fixed loadout, gathering ingredients via movement (from generators, ground, and kills) rather than dragging them into a pot, and casting directly once a loadout spell's requirements are satisfied. Whoever picks this up should treat the following as a starting default to build against, not a settled decision: 4 spells per loadout, ingredients consumed on cast, and the existing Arena bag doubling as a small opening buffer so the match doesn't open on totally empty hands. Change any of these on sight if they don't hold up.

**This POC must actively test for dead time** — the overview's named risk — not just validate that the core loop is fun. Watch specifically for stretches where a player has no castable spell and nothing productive to do about it.

## Definition of done

A playable local prototype demonstrating: shared generators, movement-driven ingredient gathering, loadout-gated casting (not a crafting UI), and the minion-vs-spawn-point timing decision. A short write-up covering (a) what worked and what didn't for the core tempo tradeoff, and (b) specifically whether dead time occurred, when, and what mitigated or worsened it.

## Where the work lands

`land-of-lor` repo, likely under `pocs/` alongside the existing `object-gallery` and `poc-3d-app` POCs.

## Docs to read first

`overview.md` in full (the loadout mechanism section specifically); `land-of-lor/docs/thought-specs/battle-areans-and-element-types.md` (the founding ley-lines vision); `land-of-lor/docs/thought-specs/conduit-and-changing-landscape.md` (arena resets, Arena bag); `land-of-lor/docs/WORLD_ZONES.md`.

## questions/ (0)

## deliverables (0)
