| 2026-09-07 |

refactor(engine): глубокий рефакторинг К2 — расшивка аудио, FadeState, контракт fx, Engine.destroy
...
Расшивка переростков:
- AudioManager (479→279) → AudioManager (фасад) + Voices (полифония sfx,
pan в полёте в шине голоса) + Loops (слоты музыки/амбиента, кроссфейд)
+ decode.ts (BufferCache с in-flight дедупом) + types.ts;
load() → register()
- IsometricTileMap: проходимость делегирует новому StaticGrid
(map/collision.ts) — единый источник blocked/пропы/тени; headless-потребители
берут через gridOf(data), setTile виден сразу
- core/fade.ts (FadeState): вместо ручных fadeLeft/fadeTotal в Lighting
(ambient+виньетка) и SceneManager; повторный to() в середине фейда
стартует от текущего значения — без прыжка
Контракт fx-эффектов: cancel() = остановить + вернуть базовое + погасить
свою вьюху (FxFade без keep теперь гасит, FxTrail получил cancel,
SpriteFlash.cancel через TintFlash.finish); конец жизни — destroyed
везде. FxLayer: один реестр тикающихся (items), flashes — только индекс
перезапуска.
Прочее:
- Engine.destroy() — полная зачистка (exit сцены, fx/tweens/events,
ввод, FPS-метр, app.destroy) для HMR; stop() — только цикл
- FpsMeter считает всегда, отдаёт геттером fps; DebugOverlay принимает
FpsMeter и перерисовывает Text не чаще 0,5 с
- Lighting: кэши текстур на инстансе (модульный переживал destroy
рендерера), чинен двойной destroy darkFree/darkLayer
- InputManager: DOM-обработчики и инъекции идут через общие примитивы
press/release (клавиши, указатель)
- SpriteAnimator: xorshift → math/rng.createRng (единый ГПСЧ)
- Мёртвый код: FrameAnimation (файл+экспорт+тест), vec2(), pxToUnits,
screenToIsoExact, pushOutOfWalls
Тесты: +fade, +SceneManager (стек/фазы/глотание), +EventBus, +Engine
(stepTicks, мок pixi.js), +SpriteAnimator, +computeScale. Доки движка
обновлены в том же коммите (core.md: FadeState/Engine.destroy;
render.md: контракт fx, кэш Lighting; anim.md/maps.md/README.md — без
FrameAnimation; practices.md: тест ядра без WebGL, поле-метод).
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
6 hours ago
|
| 2026-09-05 |
Миграция игры на новые API движка + документация docs/engine
...
Игра:
- диалоги переписаны на графы DialogueRunner + GameState (тексты сохранены)
- меню на MenuList, шрифт VT323 через PixelText во всех сценах
- герой из атласа hero_sheet (gen.mjs), акторы в IsoDepthLayer
- пепел через ParticleEmitter, fade-переходы сцен, сейв с GameState
- Vite: publicDir: 'assets', алиас regex, шрифт через ?url-импорт
Документация: docs/engine/ — 10 файлов (архитектура, подсистемы, рецепты).
CLAUDE.md и README.md обновлены под новые модули и грабли.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
engine: Tween+easing, fade-переходы, ресайз, IsoDepthLayer, GameState, RNG, StateMachine, DialogueRunner, Settings, атласы, PixelText+VT323, UI-кит, частицы, геймпад, тач-джойстик, аудио-шины, формат карт+Tiled
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
Скелет проекта: свой движок + изометрическая RPG
...
- packages/engine: жанронезависимый движок (цикл, сцены, ECS, ввод, камера,
изометрия 2:1, A*, сейвы, диалоги, анимация) на PixiJS-бэкенде
- apps/game: первый вертикальный срез — меню, локация «Выжженные луга»,
герой с click-to-move, 2 NPC с диалогами, автосейв по Esc
- CLAUDE.md, README.md, workspaces + Vite + Vitest
Co-Authored-By: Claude Code <noreply@anthropic.com>
gbook
committed
2 days ago
|