# 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).