|
v2 трек 8: каркас ядра + герой (управление, камера следит)
- core/loop.ts: GameLoop — фиксированный шаг 60 Гц, аккумулятор с maxStepsPerFrame, ручной режим setManual+stepTick (детерминизм гейтов), now/schedule инъектируются для Node-тестов - core/ecs.ts: EntityWorld — перенос проверенной минимальной ECS v1 (открытый вопрос «каркас ядра» решён) - core/controls.ts: ввод как данные; screenMoveToWorld — экранные оси в мировую горизонталь по yaw камеры (проекция на границе, урок №1) - physics/character.ts: Character — тело физики + walk от скорости (фаза = путь/stride, стопы не скользят; покой замирает); spawnY для спавна в воздухе; мост тела физики переехал на Character (один путь) - render: setTarget/currentTarget — камера (и солнце) следит за целью - Демка: герой на WASD/стрелках + виртуальный стик агента; мост setInput/heroInfo/heroTeleport/stepTicks/setManual/setFollow - Гейт hero.mjs 9 проверок: ввод агента двигает героя, фаза 1.25 цикла/с, стена по грани, покой замирает, камера следует 115 юнит-тестов; гейты: render 13, turntable 5, anim 8, physics 7, hero 9 — зелёные. Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| docs/plan.md |
|---|
| v2/CLAUDE.md |
|---|
| v2/apps/demo/src/main.ts |
|---|
| v2/apps/demo/tools/checks/hero.mjs 0 → 100644 |
|---|
| v2/apps/demo/tools/checks/physics.mjs |
|---|
| v2/packages/engine/src/core/__tests__/controls.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/core/__tests__/ecs.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/core/__tests__/loop.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/core/controls.ts 0 → 100644 |
|---|
| v2/packages/engine/src/core/ecs.ts 0 → 100644 |
|---|
| v2/packages/engine/src/core/loop.ts 0 → 100644 |
|---|
| v2/packages/engine/src/index.ts |
|---|
| v2/packages/engine/src/physics/__tests__/character.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/physics/character.ts 0 → 100644 |
|---|
| v2/packages/engine/src/render/voxelRenderer.ts |
|---|