Трек 32: крепления предметов к костям риги — рюкзак и факел на герое
- Движок: attach.ts — Attachment {bone, model, pos?, rot?}: предмет
  (обычная VoxelModel со своей палитрой) размещается в связочном
  пространстве базы и едет с костью (boneWorlds); attachVoxels мержит
  воксели предметов в позу, attachTiles — общий реестр тайлей со сдвигом
  id за базу. Неизвестная кость — throw. Тесты: предмет едет ровно как
  воксель кисти (равенство сдвигов 1e-9), тайли, детерминизм.
- Генераторы: backpackModel (84 вокс, пряжка — перекраска, не добавление),
  torchModel (6 вокс), палитра GearPalette.
- Character: CharacterOptions.attachments + setAttachments; visual()
  мержит attachVoxels до yaw-маппинга — предмет поворачивается с моделью.
- Игра: герой с рюкзаком (root, за спиной) и факелом (armR, машет с
  рукой); мост heroGear(ids|null) + heroInfo.gear/gearVoxels. Гейт
  gear.mjs (6 проверок): счёт 90/84/0, снятие меняет кадр, ходьба цела.
- Багфиксы, найденные пробой: пост-проход затемнял день ~втрое (RT
  хранит linear, квад рисовал без linearToOutputTexel — конверсия сразу
  после сэмпла, до эффектов; тест на порядок) и дев-панель была видна
  с самого старта страницы (#dev[hidden]{display:none}).

326 тестов, гейты gear/atmosphere/panels/render зелёные.

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 1c964bb commit eba4936275efaf3bd1bb1c6043e7870709eafe0e
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 4 hours ago
Showing 12 changed files
View
v2/CLAUDE.md
View
v2/apps/game/index.html
View
v2/apps/game/src/main.ts
View
v2/apps/game/tools/checks/gear.mjs 0 → 100644
View
v2/packages/engine/src/animation/__tests__/attach.test.ts 0 → 100644
View
v2/packages/engine/src/animation/attach.ts 0 → 100644
View
v2/packages/engine/src/index.ts
View
v2/packages/engine/src/models/__tests__/generators.test.ts
View
v2/packages/engine/src/models/generators.ts
View
v2/packages/engine/src/physics/character.ts
View
v2/packages/engine/src/render/__tests__/postShader.test.ts
View
v2/packages/engine/src/render/postShader.ts