|
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>
|
|---|
|
|
| apps/game/src/scenes/LocationScene.ts |
|---|
| apps/game/src/systems/Atmosphere.ts |
|---|
| apps/game/src/systems/Lighting.ts |
|---|
| apps/game/src/systems/PlayerController.ts |
|---|
| apps/game/src/systems/combat/CombatFlow.ts |
|---|
| apps/game/src/systems/combat/CombatWorld.ts |
|---|
| apps/game/src/systems/combat/EnemyBrain.ts |
|---|
| docs/engine/render.md |
|---|
| packages/engine/src/core/Tween.ts |
|---|
| packages/engine/src/core/Updatables.ts |
|---|
| packages/engine/src/render/Lighting.ts |
|---|
| packages/engine/src/render/Particles.ts |
|---|
| packages/engine/src/render/__tests__/particleSim.test.ts |
|---|
| packages/engine/src/render/lightSim.ts |
|---|
| packages/engine/src/render/particleSim.ts |
|---|
| packages/engine/src/render/shake.ts |
|---|
| packages/engine/src/scene/SceneRegistry.ts |
|---|