| 2026-09-05 |
зоны наката у прудов + полотно-маска; починен атлас героя
...
- HazardDef в locations.ts: разметка низин у Серых прудов (требуют cloth)
- герой в накате без маски: скорость x0.5, дымка-оверлей, тост при входе;
с полотном - только лёгкая дымка
- звон как 'проверка воздуха': резонанс в низине подсвечивает пепел
вспышками и шипением
- PlayerController.speedMul - множитель скорости, управляется сценой
- фикс: hero_sheet собирался data.set с неверным строковым шагом -
кадры жались в полосы; теперь построчное копирование
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
13 hours ago
|
Фаза 3: мир игры в мировых юнитах
...
PlayerController, CombatWorld, EnemyBrain, CombatViews и LocationScene
переведены с виртуальных пикселей на мировые юниты (1 юнит = 1 тайл):
- позиции/дистанции/скорости в юнитах (герой 1.75 юн/с, скорости и
радиусы врагов, knockback 0.75, INTERACT_RANGE 1.5);
- конус/окружности через inConeW/inCircleW (метрика проекции);
- вью-позиции — через worldToScreen, округление до px только на границе;
- гистерезис дистанции плевуна ±0.4 юнита, attackStop 0.85 юнита;
- тесты EnemyBrain/stats обновлены под юниты (185/185).
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
13 hours ago
|
камера: dead zone (окно следования) + дебаг-просмотр спрайта
...
- Camera.deadZone: цель двигает камеру только у границ окна,
внутри окна камера неподвижна; Camera.snap — мгновенная постановка
минуя окно (спавн/респаун)
- SpriteDebugView: текущий кадр героя с целым zoom (nearest) и сеткой
по границам пикселей (KeyP в локации)
- PlayerController: followPath для готовых путей, currentTexture
- фикс сборки hero_sheet: Buffer.set принимает offset в байтах —
кадры затирали друг друга, атлас был перемешанным мусором
(отсюда «сжатый» герой)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
14 hours ago
|
движок: дистанция взаимодействия + findPathToNeighbor
...
- pathfinding.findPathToNeighbor(grid, start, goal): путь к ближайшей
проходимой клетке рядом с goal (8-соседство) — цель может быть занята
NPC/объектом или непроходима; тесты (3 новых)
- PlayerController.followPath: пойти по готовому пути тайлов
- LocationScene: клик по NPC/цветку срабатывает только в радиусе 44px;
издалека герой подходит к краю тайла и взаимодействие срабатывает
на месте; исключение — force у requestTalk (сюжетные триггеры)
- доки: maps.md (findPathToNeighbor), demo.md (новое в движке)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
14 hours ago
|
игра: тач-джойстик и дебаг-оверлей (F3)
...
- VirtualJoystick в LocationScene: включается при первом касании,
мышь проходит насквозь (клик-ход и бой не задеты)
- прямое движение PlayerController.moveFree с проверкой стен
- DebugOverlay (F3): fps, тайл, позиция, hp/киллы
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
15 hours ago
|
игра: вторая локация «Серые пруды» — карты-файлы .map, переходы, сейв-слоты
...
- encodeMap/parseMap: карты локаций теперь файлы assets/maps/*.map (RLE v1),
генерируются тестом tools/maps/gen.test.ts (npm run maps), грузятся в BootScene
- LocationScene параметризована LocationDef (spawn, NPC, враги, выходы, амбиент);
Серые пруды: гладь воды, туман-частицы, 5 сгустков, обратный переход
- переход между локациями по тайлу-триггеру с fade и точкой входа
- SaveSlotsScene: меню сейвов (autosave + 3 слота, listSlots/delete)
- хук window.__game (dev) для смоук-тестов; tools/smoke-ponds.mjs — сценарий перехода
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
15 hours ago
|
игра: бой в реальном времени — сгустки на ECS, конус/резонанс, HUD, интеграция в LocationScene
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
игра: звук и настройки — WAV-генератор, AudioManager, SettingsScene
...
- tools/audio/gen.mjs: генератор WAV из кода (моно 22050, 16-бит, без зависимостей):
bell_hit, bell_low, ash_hiss, ash_die, spit, hurt, step, ui_click, chime
+ зацикленные амбиенты meadows/ponds (кроссфейд краёв лупа)
- engine: AudioManager.preload — декодирование до первого play
- Game.audio + связка settings.onChange -> setBusVolume
- unlock аудио на первом жесте (main.ts), preload в BootScene
- SettingsScene (Panel+MenuList): громкости master/music/sfx, вход из главного меню
- музыка локаций через Game.playMusic (защита от перезапуска того же трека)
- sfx: шаги героя (PlayerController.onStep), колокольчик реплик (DialogueSystem.onLineShown)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
Миграция игры на новые 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
16 hours ago
|
Мир, арт-библия и пиксель-арт
...
- docs/world.md: библия мира (Великий Пепелопад, звонари, лунные колокольчики,
регион Низина Звенца, персонажи, арка акта 1)
- docs/art-style.md: арт-библия — палитра 32 цвета, размеры, стиль, чеклист
- tools/pixelart: генератор PNG из кода (тайлы, дерево, герой 3 направления,
NPC) без внешних зависимостей
- игра: загрузка ассетов через AssetLoader в BootScene с прогресс-баром,
тайлсет в карте, анимированный герой, спрайты NPC, квестовый тайл
с колокольчиками
Co-Authored-By: Claude Code <noreply@anthropic.com>
gbook
committed
17 hours 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
18 hours ago
|