# Object system experiments

## overview.md
```yaml
id: object-system-experiments
title: Object system experiments
area: client
summary: Experiments with objects and deeper/composite objects — building on the base-elements work and the 3D composition POC.
repo: land-of-lor
depends_on: []
```

## What this is

Follow-on experiments from the `object-gallery` POC (`land-of-lor/pocs/object-gallery/`), which already demonstrates the core mechanic: creatures and gear as Godot scenes built from primitive parts plus named attachment sockets (`socket_head`, `socket_right_hand`, `socket_torso`, `socket_feet`, `socket_back`), with gear scenes snapping onto whichever creature's sockets exist regardless of scene nesting depth (a Centaur nests a Horse instance *and* a Basic Humanoid instance and composes cleanly). This epic is where that mechanic gets pushed further: deeper composition (objects made of objects made of objects), and objects whose composition is driven by actual element/recipe data rather than hand-authored scenes.

## Why it exists

The design docs settle on 3D models specifically *because* the composition mechanic needs to scale combinatorially — hand-drawn 2D sprite sheets can't support arbitrary player-chosen body/gear/colour combinations, but transformable 3D primitives can (`RECIPES.md`: "That method simply doesn't scale to allowing user choice... I think 3D models are actually the much easier approach"). The `object-gallery` POC proves the socket-attachment half of that claim works. What it doesn't yet prove: whether *recipe output* (an item defined by slots filled with elements, per `docs/README.md` §6, §8) can drive which primitives/colours/textures get composed, rather than a human hand-picking them per creature as the POC currently does.

## Core constraint: physical gathering bounds the viable ingredient count (2026-08-05)

**This is a core game constraint, not an arena-only one — record it prominently here because it directly bounds the "periodic table of ingredients" work this epic is responsible for.** `battle-arena-poc`'s loadout mechanism established that ingredients are gathered *physically*, in real time, by moving around and picking things up off the ground or off kills. That single design choice has a consequence for the whole element system, not just combat: **64 is a fine number for a system, and an unworkable number for drops on a floor.** A player cannot hunt for the specific few ingredients they need among 64 visually/mechanically similar drop types under time pressure — that's not a UI problem to polish away, it's a hard legibility ceiling on how many *distinct, physically-gathered* things can coexist in one play space.

This constrains the periodic-table/ingredient-authoring work that is still open in this epic: whatever the full 64-element system looks like, only a small subset of it can plausibly be things a player picks up off the ground mid-fight. One candidate shape for the answer, not yet decided: **tier ingredients by gatherability** — a small arena-gatherable core (the ones that drop from creatures and ground, likely overlapping with the "~20% at launch" starting set) plus a long tail of rarer, derived, and composed ingredients reached through crafting or trade instead of picked up mid-fight. That would keep 64 intact as the underlying structure while giving real-time play a small, curated floor to actually work with. This overview records the constraint and that candidate shape — it does **not** resolve it, and it deliberately does not propose an actual ingredient list. Pick this up when the ingredient-authoring work itself is actually underway, not before.

## Scope

- Extending `object-gallery`'s socket mechanic to deeper nesting (an object holding sub-objects that themselves hold sub-objects — e.g. armor with attachable decorations).
- Driving composition parametrically from element/trigram data (the SHAPE/COLOUR/TEXTURE trigram-typed menus in `docs/slots-and-items.md`) instead of hand-picked scenes — this is the actual research question, since the POC currently hard-codes 7 creatures rather than generating them from hexagram input.
- Evaluating whether the current low-poly flat-shaded primitive style (see `docs/3d-object-sourcing.html` for the sourcing research behind it) holds up as complexity increases.

## Non-goals

- Not the character/clothing *selection* UI for players — that's `character-composition-poc`, which builds on this epic's mechanic but is about player-facing choice, not the underlying composition system.
- Not full creature AI/behaviour (Formula/ports/stocks, §8) — this epic is about the *shape* of a Complex Item, not its ongoing behaviour.

## Open design questions (not tracked as formal Question objects — these are premature until the relevant work is actually underway)

- How much of "trigram → shape/colour/texture" (the derivation function referenced across `slots-and-items.md`) is a lookup table vs. procedural — flagged repeatedly in the source docs as undecided ("this is programmatic based on the element... partly set... partly programmatic").
- Whether the current hand-authored low-poly style scales to the full 64×64 Simple Life combination space, or needs a more systematic asset-generation approach.
- How the periodic-table/ingredient-authoring work reconciles 64 structural elements against a much smaller gatherable-in-real-time floor (see the constraint above).

## Relevant docs

- `land-of-lor/pocs/object-gallery/README.md` and its `scenes/` — the working POC this epic extends.
- `land-of-lor/docs/RECIPES.md` — the 3D-models-vs-2D-sprites reasoning, and the "Other Feature Slots" thinking (hair, wings, horns) that motivates deeper composition.
- `land-of-lor/docs/slots-and-items.md` — the SHAPE/COLOUR/TEXTURE trigram menus this composition system would eventually be driven by.
- `land-of-lor/docs/3d-object-sourcing.html` — asset-sourcing research behind the current art style.
- `battle-arena-poc/overview.md` — the loadout mechanism whose "movement is gathering" design produced this constraint.

## 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 — not being worked 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 questions (lookup vs. procedural derivation, style scaling, the arena-gatherability constraint) are recorded as plain prose in `overview.md`.

## Next

Nothing — this is parked. Pick up when Kris explicitly asks for it.

## tasks/ (1)

### object-system-experiments/001 — Drive one creature's shape/colour from trigram input
```yaml
id: object-system-experiments/001
title: Drive one creature's shape/colour from trigram input
epic: object-system-experiments
state: backlog
priority: 1
blocked_by: []
estimate: M
created: 2026-08-05
updated: 2026-08-05
claimed_by: null
claimed_at: null
delivers: []
review_artifact: null
```

## What to do

Pick one creature in the existing `object-gallery` POC and try driving its shape/colour from actual trigram values (even a hard-coded stand-in trigram→shape/colour mapping is fine) instead of the hand-picked scene it uses today. This is a minimal test of whether "learn 8 trigrams, predict 64 elements" (`docs/README.md` §6) extends cleanly to 3D composition, not a production feature.

## Definition of done

At least one creature parametrically generated (or visibly re-skinned) from a trigram input rather than selected from the 7 hard-coded scenes, demonstrated in the existing gallery app or a small standalone scene. A short note on what was easy vs. hard about the mapping — this directly informs `Q001`.

## Where the work lands

`land-of-lor` repo, extending `pocs/object-gallery/`.

## Docs to read first

`land-of-lor/pocs/object-gallery/README.md` and its `scenes/`; `land-of-lor/docs/slots-and-items.md` (the SHAPE/COLOUR/TEXTURE trigram menus this prototype would draw from).

## questions/ (0)

## deliverables (1)

- #2 — 3D model concepts — composing creatures from parts (2026-07-29) — /deliverables/2