perf: горячий путь 60 Гц без аллокаций (О-1)
Baseline после: fps покой 6 / бой 6 (было 5-6/3-6), heap 29 МБ — не хуже.

- Частицы: stepParticle — out-параметр визуала; Particles — компакт swap-pop
  в один проход вместо двух filter за тик (~3400 объектов/сек раньше).
- Свет движка: upsertLight/upsertDarkSpot — апсейт def по полям вместо
  {...def}; пульсы — итерация Map без спреда; lightFrame — out-кадр
  (applyFrame reuse).
- Свет игры: дифф-наборы источников/пятна — два буфера со свопом (clear не
  задевает активный), defsBuf/posBuf/lampDef — переиспользуемые.
- Тики: Tween/Updatables/shake — компакт на месте вместо filter каждый тик
  (в Tween пограничный случай dt-в-delay сохранён — твин остаётся).
- Сцена: debug.setLines только при видимой панели; Atmosphere.updateHazard —
  поиск зоны только при смене тайла героя.
- Бой: CombatFlow.updateRing — трогает Graphics только на переходах;
  noiseFor — общий view вместо копии origin; EnemyBrain — переиспользуемые
  INTENT_* константы + dirInto/moveIntentFrom (dirToward больше не аллоцирует).
- SceneRegistry.near — опциональный out-массив + reuse Set дедупликации.
- PlayerController: имя клипа ходьбы — кэш по facing.
- docs/engine/render.md: out-параметр stepParticle.

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 0a63434 commit 255c635ab3669ed74ac8476bd3afc75ca26fdc38
@root root authored 5 hours ago
Showing 17 changed files
View
apps/game/src/scenes/LocationScene.ts
View
apps/game/src/systems/Atmosphere.ts
View
apps/game/src/systems/Lighting.ts
View
apps/game/src/systems/PlayerController.ts
View
apps/game/src/systems/combat/CombatFlow.ts
View
apps/game/src/systems/combat/CombatWorld.ts
View
apps/game/src/systems/combat/EnemyBrain.ts
View
docs/engine/render.md
View
packages/engine/src/core/Tween.ts
View
packages/engine/src/core/Updatables.ts
View
packages/engine/src/render/Lighting.ts
View
packages/engine/src/render/Particles.ts
View
packages/engine/src/render/__tests__/particleSim.test.ts
View
packages/engine/src/render/lightSim.ts
View
packages/engine/src/render/particleSim.ts
View
packages/engine/src/render/shake.ts
View
packages/engine/src/scene/SceneRegistry.ts