Group the top-level docs into docs/project, docs/design, docs/assets and docs/process, each with its own README index. Delete the superseded docs/screens/head-review page and sheets. Rewrite every markdown link, absolute docs path and tool/test reference to the new locations, fix the pre-existing broken anchors and remove the dead Joke Shop photo-board link. check_docs OK, Python tooling 167/167.
90 lines
4.4 KiB
Markdown
90 lines
4.4 KiB
Markdown
# ADR-0015: NPC model variety sourcing
|
||
|
||
- **Status:** Superseded by [ADR-0017](0017-quaternius-npc-base.md) (2026-11-05)
|
||
- **Date:** 2026-11-03
|
||
|
||
## Superseded
|
||
|
||
ADR-0017 replaces the generator-first decision below: Quaternius is now the
|
||
primary NPC base. The evaluation, licence rules and consequences remain as the
|
||
record of the 2026-11-03 decision.
|
||
|
||
## Context
|
||
|
||
The library has eight skinned characters, and role/seed selection reuses them
|
||
across the three venues. Crowds therefore repeat the same faces, builds and
|
||
outfits. The existing contract is strict: `npc_base` mesh node, 13 named bones at
|
||
fixed rest positions, five tint slots, front on Blender −Y and an 8,000
|
||
triangle/vertex budget.
|
||
|
||
A review compared free/open-source sources against that contract. Quaternius
|
||
Ultimate Modular (CC0), Kenney Blocky Characters (CC0), Khronos CesiumMan and
|
||
RiggedFigure (CC BY 4.0) and the MakeHuman base mesh (CC0) were imported and
|
||
measured. None was a drop-in; the full results are in
|
||
[`docs/assets/npc-model-sourcing.md`](../assets/npc-model-sourcing.md).
|
||
|
||
## Decision
|
||
|
||
1. **Ship only CC0, or CC BY with recorded attribution.** No service asset whose
|
||
terms restrict redistribution may be used.
|
||
2. **Extend the project-owned procedural generator as the primary path** for
|
||
shipped NPC variety. The first target is four crowd-variety looks, bringing
|
||
the library to twelve characters.
|
||
3. **Keep Quaternius as a reviewed reference/prototype, not a shipped base.** A
|
||
contract retarget is a no-go because the source is a T-pose 62-bone realistic
|
||
rig with substantially different proportions from the arm-down 13-bone
|
||
contract. A future external-rig path would need its own ADR covering its
|
||
skeleton, animation source and per-model gear offsets.
|
||
4. **MakeHuman is deferred to a separate local development pipeline.** Its CC0
|
||
base mesh can be decimated into budget, but it needs retopology, a custom rig
|
||
and project-owned clothing before it is usable. It must not become a CI or
|
||
build dependency.
|
||
5. **Commit research previews with attribution.** CC-BY preview images are
|
||
development-only and are not bundled with the game or its release packages.
|
||
|
||
## Consequences
|
||
|
||
### Positive
|
||
|
||
- The shipped library keeps one art direction, one skeleton and one audit gate.
|
||
- Crowd variety lands without a new runtime dependency or a second animation
|
||
system.
|
||
- The licence position is simple: project-owned assets plus explicit CC-BY
|
||
attribution where a preview or future asset requires it.
|
||
- The Quaternius evaluation removes a tempting but high-risk retarget from the
|
||
critical path.
|
||
|
||
### Negative
|
||
|
||
- Procedural variation is still limited by the existing face and clothing
|
||
vocabulary; four variants do not provide full age/body diversity.
|
||
- Quaternius' animation set remains unused unless a second rig path is approved.
|
||
- MakeHuman body-shape diversity is postponed.
|
||
- External previews add a small documentation footprint that must stay out of
|
||
release packages.
|
||
|
||
## Alternatives considered
|
||
|
||
- **Retarget Quaternius onto the `npc_base` contract.** Rejected for now:
|
||
welding brings the geometry inside budget, but the rest pose and body
|
||
proportions differ enough that a contract rebuild would either distort the
|
||
model or require a full proportion warp.
|
||
- **Use Quaternius' own rig and animations directly.** Deferred: attractive
|
||
animation quality, but it adds a second skeleton/animation path and per-model
|
||
gear offsets to `NpcAvatar`.
|
||
- **Use MakeHuman as the primary body source.** Rejected for this milestone: high
|
||
polygon count, no rig in the base mesh and a separate authoring dependency.
|
||
- **Use Mixamo or Ready Player Me.** Rejected: service terms are not a simple
|
||
free/open-source redistribution basis for shipped meshes.
|
||
|
||
## Amendment 2026-11-04
|
||
|
||
- The character budget is raised to **16,000 triangles / 16,000 glTF vertices** per character.
|
||
The required 13 core bones remain; optional extra bones (fingers, face, toes) are allowed if
|
||
they do not move the core rest positions. The low-poly fallback remains the fallback, not a
|
||
second contract.
|
||
- MakeHuman is now an active local development pipeline (body retarget plus project-owned
|
||
head/hands), while the procedural library remains the shipped path and CI fallback.
|
||
- Blender MCP is optional interactive tooling only; it is not a build, CI, test or runtime
|
||
dependency. Setup is in [`docs/assets/asset-tooling.md#optional-interactive-blender-mcp`](../assets/asset-tooling.md#optional-interactive-blender-mcp).
|