| 2026-09-08 |
Убрать амбиент лугов и «дыхание пепла»; 3 вида валунов и кустов
...
По фидбеку:
- Амбиент стартовой локации удалён полностью: на лугах тишина — только
музыка и шаги. Слой ashflow («дыхание пепла», режущий слух) и
rustle-шорохи убраны везде; meadows/meadows_night/ashflow.wav удалены.
- Разнообразие препятствий: у валунов и кустов по три вида (round/spike/
flat и cloud/spread/tall) через TALL_VARIANTS — scatter ставит базовый
id, движок рисует вид по хэшу координат. Тень-подошва в спрайте, у
кустов — «нога» ветвей (починка «летающих» объектов).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Фидбек: валун/куст стоят на земле, ветер лугов v3, стартовая поляна живее
...
- Арт: у валуна и куста тень-подошва в спрайте (накрывает ground-ромб —
объект больше не «парит» над пепельной ямой), рисунок до пола слота;
куст — объёмный: тёмная «нога» ветвей + приподнятая крона вместо плоского
овала.
- Амбиент лугов v3: «дыхательные» синусоиды (слышимый пульс лупа) заменены
непериодической огибающей (циклический value-noise); воздух шире
(150–1200 Гц), «толща» 60–300 Гц и запаздывающий свист — только в порывах;
луп 12 с; шуршание тише и реже. Ночь — та же фактура тише.
- Стартовая поляна: валун/кусты/деревья в первом кадре от спавна (с проверкой
не затирать тропу/воду), одинокие деревья на полянах (20% вместо 0).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Карты внешних локаций ×2: новые раскладки генераторов и пересчёт контента
...
- Генераторы map.ts переписаны под новые размеры: луга 56×56, пруды 48×48,
Звенец 56×40, роща 48×40, разъезд 48×40, зал Машины 26×22 (интерьеры не тронуты).
- Вся геометрия контента пересчитана с сохранением взаимного расположения:
переходы у краёв и парные, тропа луга→Звенец, поляна Клинта, рельсы и люк;
квест-тайлы резонатора (QUEST_TONE_TILES) теперь гарантируются генератором рощи.
- Координаты: locations.ts (spawn/переходы/враги/патрули/hazards/fauna/свет),
interactables.ts, npcs.ts, quests.ts; NPC отодвинуты от дверей и колодца,
чтобы E брал нужную цель, а не ближайшего персонажа.
- Чеки и смоуки под новые дистанции: таймауты walkTo/approach, координаты,
чистка аудио-лога перед долгой прогулкой в music; валидатор-тест теперь
покрывает все 6 областей (ловит спавны, закрытые валуном).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Валун и куст — крупные непроходимые объекты на внешних картах
...
boulderTile (32x32): камень в изо-объёме — верхняя грань P4/P5, светлая
юго-западная с бликами P5H, тень P2/P3 на юго-востоке, трещины P1.
bushTile (32x40): мёртвый куст-облако из эллипсов G0/G1/G2 с прорехами
и стеблями G2H. Новые слоты tall.boulder/bush и тайлы BOULDER: 28,
BUSH: 29 (BLOCKED, TALL_OBJECTS 1.05/1.25, assetSets, ASSET_KEYS,
MapScene). scatterRocksAndBushes разбрасывает по внешним картам:
луга 5+7, пруды 4+5, роща 3+4, разъезд 3+3, Звенец 1+2.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Дома — объёмные в изометрии: 5 фасадов вместо плоских картонок
...
isoHouseTile: две стены сходятся ближним углом к зрителю (юго-запад C1
светлая, юго-восток C0 тёмная), шатровая (metal) или двускатная (шпалы,
фронтон + конёк) крыша, шпальный фундамент, проёмы-параллелограммы.
Виды: времянка (32x56), двускатная с трубой (32x56), низкий сарай с
широким окном (32x56), амбар с воротами (32x80, 2.5 юнита), двухэтажный
с двумя рядами окон (32x80). Новые слот houseTall и tiles HOUSE_V3/V4
(в BLOCKED/TALL_OBJECTS/TALL_VARIANTS/assetSets/ASSET_KEYS/MapScene);
Звенец показывает времянку, двухэтажный и амбар явно.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
feat: B5 — дома: три фасада (шпальная крыша / ржавый лист / длинное однооконное)
...
houseTile параметризован: общие стены-щиты и фундамент, различаются крыша
и проёмы. Фасады подключены вариантами HOUSE (хэш-микс в руинах разъезда);
в Звенце три дома расставлены явно (вариантные id в тайлах), чтобы деревня
показывала всё разнообразие — хэш-микс для трёх домов не гарантирует его.
Для этого HOUSE_V1/V2 добавлены в BLOCKED, амбиент-слой «houses» теперь
матчит все три id. Карты перезаписаны, арт-библия обновлена.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
feat: B4 — деревья: три вида крон, качание, осыпающийся пепел
...
Движок: анимация тайлов сочетается с вариантами — tall-объект анимируется
по фактическому (вариантному) id клетки, у разных вариантов свой fps.
Игра: три вида деревьев (широкая крона с кабелем / редкая / молодая),
каждый с кадром качания (крона +1px по X), fps 1.5/1.7/1.3 — кроны
качаются рассинхронизировано. Варианты TREE_V1/V2 раздаются вариантами
карт по хэшу координат, карты перезаписаны. С крон изредка осыпается
пепел (ember-частицы, серые, нормальный блендинг).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
| 2026-09-07 |
feat(game): акт 2 — карты Ржавой рощи, Старого разъезда и зала Машины (A1)
...
- Новые тайлы: WIRE (бухта кабеля, tall 0.6), RAIL (рельсы), STAIRS
(люк-ступени), MACHINE (печь-автоматон, tall 2.5) — текстуры в gen.mjs,
реестр sizes.mjs (wire), арт-библия дополнена.
- Карты: buildRustGroveMap (плотный мёртвый лес, тропа Звенец->разъезд,
поляна мастерской Клинта), buildOldSidingMap (рельсы, вагоны-времянки,
люк в подземелье), buildMachineHallMap (интерьер с Машиной в два тайла);
в Звенце расчистлен восточный выход.
- Области: rust_grove / old_siding / machine_hall (ambient темнее лугов,
гул Машины tower_hum у люка и в зале, накат у рельсов, враги с
патрулями) + переход Звенца на восток.
- Чек transitions: цепочка Звенец -> роща -> разъезд -> зал и обратно.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
UX-пачка: подсказки, клик-зоны, моты, коллизия домов, сундук, тихая вода
...
- Тосты держатся по длине текста (до 6 с) + подсказка сбора колокольчиков
при первом входе в пруды (флаг hint_bells).
- Клик по «телу» объекта: RouterDeps.pixelTile как фолбэк на голом клике —
bbox тел NPC/интерактивов (без подписей) + ремап на высокий тайл (дома).
- Моты: заметная насыпь с пульсирующей искрой, HUD-счётчик, вьюха
растворяется с искрами при поднятии (InteractSink.onConsumed).
- Движок: TallSpec.shadow — тайл (tx-1,ty-1) за домом блокируется
(shadowTilesOf в collision.ts + isWalkable карты, тесты).
- Интерьеры: бронзовый контур проёма + подпись «выход».
- Спрайт сундука (tiles/chest.png) вместо ящика-плейсхолдера.
- Вода прудов: radius 2.5, volume 0.22 — только вплотную и тихо.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
| 2026-09-06 |
Батч 7: декор-слой (микро-кусты, камни, проплешины)
...
- engine: DecorData + TileMapData.decor; decorLayer между землёй и объектами;
addDecor (возвращает спрайт, один на тайл, повторный заменяет) / clearDecor;
setTile декор не трогает
- engine: MapFileV1.decor + validateDecor (границы, целые, dx/dy — числа)
- game: DECOR-реестр (tuft/stone/bald, id 15-17), buildDecor на createRng(seed+7919)
(~10% наземных тайлов, только GRASS/ASH, смещение не по сетке);
mulberry32 заменён на движковый createRng
- art: decor_tuft/stone/bald 16×16 (рисунок в ромб 16×8, палитра G/P)
- фикс fresh-теста: Math.round -> -0 теряется в JSON, нормализация +0
- тесты: порядок слоёв, addDecor/clearDecor, границы, round-trip + валидация decor
- доки: maps.md (раздел «Декор»), art-style.md, practices.md (ситуация
«меняю генераторы арта или карт», грабля -0)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
3 days ago
|
Батч 6: варианты текстур тайлов (микс по хэшу координат)
...
- engine: hashTile(x,y,seed) — чистый хэш координат (math/rng.ts)
- engine: TileMapData.variants + setTileVariants + публичный variantOf;
анимация сильнее вариантов (setTileAnimation снимает их)
- engine: MapFileV1.variants (строковые ключи) + validateVariants в parseMap
- game: GRASS_V1/V2, ASH_V1, PATH_V1 (id 11-14), GROUND_VARIANTS в трёх
генераторах карт, новые текстуры в ASSET_KEYS и tileTextures()
- art: grass_2/grass_3/path_2/ash_2 (32×16, та же палитра, другой seed)
- тесты: hashTile (детерминизм/разброс), выбор варианта стабилен при setTile,
анимация vs варианты, round-trip + валидация variants
- доки: maps.md (раздел «Варианты текстур»), art-style.md, art-pipeline.md
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
3 days ago
|

Батч 2: интерьеры и интерактивные объекты
...
- Интерьеры house_elder/shop: buildInteriorMap (тайлы FLOOR/WALL), двери
кликом внутрь, выход через проём (transition kind 'return' по returnTo).
- InteractableDef/INTERACTABLES: реакции по when (flag/notFlag/varAtLeast),
once -> флаг used:<id>, эффекты setFlags/clearFlags/setVar/gives/sound.
- Системы: resolveInteractable (чистый) + Interactables (InteractSink);
pendingInteraction в LocationScene, подписи объектов при близости.
- Сундук/очаг/записка (дом Ирвина), прилавок (лавка Милы).
- Снапшот interactables; GameAgent.waitFor ждёт по полному снапшоту игры.
- Валидатор: переходы в существующие области + объекты в границах.
- Сейвы v3 (returnTo), миграция v1/v2.
- Исправление: колодец (22,20) перенесён в buildMeadowsMap (индекс 582
за пределами 28x20 молча дорастал массив).
- Сценарий tools/checks/interact.mjs (7 проверок); тесты резолвера/рантайма.
- Доки: agent.md (waitFor по полному снапшоту, валидация), practices.md
(ситуация «интерьер/объект»), demo.md, CLAUDE.md.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
3 days ago
|
| 2026-09-05 |

Батч 1: единый механизм переходов + телепортация
...
- data/locations.ts: TransitionDef/TransitionTarget/AreaDef/AREAS/areaOf —
выходы между областями (step) и двери/колодцы (click) в одном механизме
- data/transitions.ts: чистый resolveTransition (триггер, условия
requiresFlag/requiresItem с lockedText, дисарм тайла входа) + 8 тестов
- LocationScene: checkExits -> checkTransitions, клик-переходы в
handleWorldClick (NPC -> переход -> остальное), returnTo для kind 'return',
тост «заперто» без спама, дисарм при входе через переход
- Сейвы v3: SaveData.area + returnTo, normalizeSave для v1/v2
- Новые тайлы FLOOR/WALL/WELL + арт (колодец — бронзовый обруч), WELL на
карте: парные колодцы Звенец (9,6) <-> луга (22,20), duration 0.2
- Валидатор: переходы вместо exits (существование области, entry проходим)
- tools/checks/transitions.mjs (step + клик туда/обратно + снапшот) в check
- docs: практики (мимо-картная запись в генераторе, async-шаг Checks),
дорожная карта, легенда колодцев в world.md
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
3 days ago
|
локация Звенец: деревня-хаб вокруг башни с колоколом
...
- buildZvenetsMap (28x20): площадь, тропа с лугов, башня-талл 2.5 юнита,
три дома-талла 1.75 юнита; безопасный хаб без врагов
- спрайты tiles/tower.png и tiles/house.png в генераторе арта
- Ирвин и Мила переезжают в Звенец (диалоги без изменений)
- луга получают обратный переход в Звенец (26,14) с расчисткой
- амбиент-трек music/zvenets: низкий колокольный тон из рельсов
- смоук tools/smoke-zvenets.mjs, чеклист арт-библии и доки
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
3 days ago
|
Фаза 4: TallSpec.height в мировых юнитах
...
- плейсхолдер-колонна: h = tall.height * iso.tileW (вместо px);
- удалён устаревший map.screenSize (остался worldBounds в юнитах);
- data/map.ts: высота дерева 1.5 юнита (те же 48 px на экране);
- .map-файлы перегенерированы (diff — только height: 48 -> 1.5);
- parseMap отвергает tall.height > 16 как высоту в px (защита от
протухших карт-файлов);
- тесты: 186/186.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
4 days 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
4 days 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
4 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
4 days ago
|