Investigate NPC face colors behind transparent headwear (#54)
Investigate prk/spiritech-known-issues#54 and its intake evidence/comments. Work in isolated worktree /home/mathias/Projects/engines-issue-54 on fix/npc-face-transparent-headwear, based on latest develop; WIP PR prk/engines#2781 opened with empty commit. Trace actual appearance, skin/outer texture composition and rendering paths; propose an evidence-backed fix before implementation. Keep WIP until review-ready and push implementation milestones. Acceptance: identified affected data/path, proposed fix reviewed before code changes, regression demonstrated failing then passing and relevant client validation completed. Investigation/proposal recorded in WIP PR #2781. Read full published/intake comments and both screenshots. Install reader confirms hood/open-helmet meshes (e.g. 20000/20004/20007 and 20101/20105/20108) contain an untextured semantic face material. Attachments use MeshLoader, not CAT skin composition; missing diffuse becomes white neutral texture or the whole-attachment override. Proposed appearance-scoped face binding sourced from base HeadMesh, separating face/hair and preserving clothing textures, asset cache immutability, and existing attachment suppression. User confirmed the proposed mechanism from memory; implemented and pushed ac149e60d to WIP PR #2781. MeshCache caches raw head face metadata; MeshLoader binds untextured face material from semantic head nodes (hair-first safe), preserves clothing and named overrides; provider passes HeadMesh only for head attachments. Real synthetic RDB/decoder/loader regression fails before binding and passes after; deliberate clothing-override and hair-filter mutations both fail. Relevant tests 14 pass/1 install-dependent skip, renderer 703 pass, warnings-as-errors client build pass. Full client suite: 3948 pass/37 skip/1 connection-zoning test failure; same failure reproduced on unmodified control (3947 pass/37 skip/1 fail). Static feature review found no actionable findings. Install census resolves 404/408 heads; 29696, 29699, 29708 and 31688 explicitly refuse ambiguous face materials instead of guessing. User subsequently confirmed the reported defect is fixed in game. PR #2781 was verified merged into develop on 2026-10-20 at 19:06:47Z. This confirmation satisfies live validation for the reported defect. Preserve limitations: exact appearance packets and controlled visual captures were not collected; the independently reproduced baseline connection/zoning test failure and four ambiguous head assets remain documented, not disabled or worked around. No further implementation is required for the confirmed report. Diagnostics/logs: /tmp/prk-issue54; baseline control worktree /tmp/prk-issue54-control.
Checklist
2 of 2 complete- Trace report evidence and appearance-to-rendering paths; propose fix before implementation
- Implement agreed fix and demonstrate meaningful regression failing then passing; run relevant validation
- Area
- Project Rubi-Ka
- Project
- engines
- Kind
- Bug
- Task ID
tsk_hxh8caqgsg- Updated