| 2026-09-09 |
AI-аудио: батч-генератор (список клипов) + фикс пост-обработки
...
- gen_audioldm2.py: реестр LIST (амбиенты 10 с + SFX 1.5-5 с), несколько
клипов за запуск в одном процессе (id[:seed], без аргументов — весь LIST)
- post.py: --noloop для SFX (выход *_fx.wav); нормализация перенесена ПОСЛЕ
loopify — пик модели часто в фейдах головы/хвоста, которые луп вплетает,
иначе фактический пик занижался (0.61 вместо 0.85)
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
9 hours ago
|
plan: задача 19 — герой за tall-объектами; статус задачи 3 (A0 PoC готов)
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
9 hours ago
|
AI-аудио A0: пайплайн AudioLDM2 PoC (gen+post) и обновление плана под GPU
...
- tools/aiaudio/gen_audioldm2.py: text-to-audio, RTX 3090 fp16 / CPU fp32,
seed-детерминизм по-устройству, промпты амбиента прудов/Звенца
- tools/aiaudio/post.py: ресэмпл 22050 моно 16-bit, нормализация 0.85,
loopify (хвост кроссфейдом в голову, 1 с), --check: стык без щелчка
- tools/aiaudio/manifest.json: апрув-гейт a0-poc, gate pending (слушание)
- plan.md: машина обновлена (RTX 3090, CUDA), разведка A0 — Stable Audio
Open Small gated (нужен HF-токен), PoC на фолбэке AudioLDM2 (CC-BY-NC-SA,
в основной пайплайн не идёт); GPU ~15 с на 10 с клипа (CPU — 3.5 мин)
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
9 hours ago
|
Большой дом 2×2 в Звенце: первый проп с footprint в игре; пропы на минимапе
...
Додержана задача 6 (работа C): движковые props C0–C2 были готовы, но не
показаны в игре. Теперь: renderMinimap красит footprint пропа цветом
colors[prop.id] (тесты minimap ×3, round-trip карт сверяет props);
HOUSE_BIG зарегистрирован (тайл 34, текстура в ASSET_KEYS/assetSets, цвет
минимапы); большой дом стоит на юго-востоке Звенца (46,24, земля — пепел),
zvenets.map перегенерирован. Чек checks/big_house.mjs: проп в collision-слое,
footprint непроходим, walk/approach, глубина — герой с юга перед домом,
с севера скрыт за ним. Доки: demo (матрица), plan (задача 6 → ✅).
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
9 hours ago
|
Восстановить gen_pxgpt.py (PixelGPT-24×24) после переезда на новую машину
...
Скрипт проб B1 никогда не попадал в git — восстановлен по манифестам и
сверке с review-b1: маппинг токенов (0 — прозрачный, t → цвет t-1 палитры
промпта), обусловливание 5 ключами palette.mjs, рендер 24×24 RGBA.
Пайплайн AI-изображений развёрнут на новой машине заново (venv python3.11,
веса PXG-Tiny/PixelGPT/SD_PixelArt в ~/.cache/rpg-ai) и верифицирован:
PXG-Tiny бит-в-бит совпал с review B0; sd_sheet.py — лист за 116 с.
В план — факт пересоздания окружения; в грабли — непроброс порта через
два слоя npm run (npx vite --port 5199 напрямую).
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
9 hours ago
|
| 2026-09-08 |
Тема области играет без амбиента: audio.prepare() в движке
...
Убрав амбиент лугов, сломали старт темы: playTheme компилирует буфер
синхронным createBuffer, а контекст создавался только в unlock (первый
жест) или ensureContext (любой play) — на тихой локации до первого ввода
музыка не начиналась. В движке unlock разделён на синхронный createCtx +
prepare() (контекст без resume) и async unlock; Game.playTheme зовёт
prepare перед компиляцией. Чеки audio/music/synth переведены с
ambience/meadows (его больше нет) на тишину лугов и тему.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Убрать амбиент лугов и «дыхание пепла»; 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>
|
docs: итоги третьего раунда фидбека (задача 18) в plan/demo
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Амбиент лугов: тихий «дыхательный» ветер, шуршание травы, события
...
- Новая фактура ветра вместо ровной полосы 250–1800 Гц: мягкий низкий шум
(120–600 Гц) с «дыханием» и порывами (meadowsWind), шуршание сухой травы —
короткие всплески 1.5–3 кГц (grassRustle); общий уровень заметно тише
(normalize 0.32 вместо 0.5).
- Событий больше и неравномерно: три скрипа дерева (woodCreak — низкий тон
с изгибом), далёкий глухой звон Звенца (111 Гц) раз за цикл.
- Ночь: та же фактура тише и реже, гул машины и далёкий колокол сохранены.
- Ключи и паритет спек-синтов не тронуты (парити-тест зелёный).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Карта мира «Низина Звенца» — композит миниатюр областей
...
- MapScene: вместо схемы одной локации — общий лист: пруды (СЗ), луга
(центр), Звенец, роща, разъезд; каждая область рендерится renderMinimap
(cell 1) и вклеивается строками в общий RGBA (промежутки прозрачны).
- Дороги-линии между связками переходов (тропы и колодцы), подписи
областей PixelText 8 px под миниатюрами, заголовок «Низина Звенца».
- Маркеры текущей области: переходы, NPC и мигающая точка героя;
интерьеры и зал Машины на листе не показаны.
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>
|
art: пепел — трава проступает заметно (стебли 2–3 px, пучки, ярче)
...
ashTile: 10 стеблей с пучками (2–3 стебля из точки), высота 2–3 px,
сухие верхушки G2H; ash_2 — 5 стеблей. Пепел читается пеплом,
растительность ~треть площади ромба.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
light: центр лампы героя поднят к телу (был у ног)
...
LAMP_LIFT 0.5 юнита по обеим мировым осям — «вверх по экрану» ≈ 8 px:
спрайт героя рисуется выше якоря-ног, круг света теперь охватывает
персонажа, а не землю под ним.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
docs: итоги второго раунда фидбека (задача 17) в plan/demo
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
game: карта окрестностей — предмет map_scroll и оверлей области
...
Предмет «Карта окрестностей» (набросок Ирвина) выдаётся вместе с часами
в elder_first. Использование в сумке открывает MapScene (push поверх
сумки): схема области из renderMinimap с палитрой из арт-палитры,
маркеры переходов и NPC, мигающий маркер героя. Game.activeLocation
дополнен areaId/heroTile() (регистрация локации уже была).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
engine: renderMinimap — чистый рендер карты в пиксельную картинку
...
renderMinimap(TileMapData, opts) — вид сверху: клетка сетки = тайл,
цвет из палитры вызывающей стороны (Record<id, 0xRRGGBB>), cell 2–3 px,
опциональные маркеры точек интереса (клетка с тёмной рамкой), fallback
для незаданных тайлов. Выход {width, height, rgba} — без Pixi; в текстуру
превращает игра. Экспорт через index.ts, секция в docs/engine/maps.md.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
feat: B7 — амбиент: драматургия по времени суток + слой зон наката
...
Ночные варианты лупов трёх областей (_night): воздух ниже и плотнее,
дальняя машина и колокол (луга), вода громче (пруды), гул башни и глухие
удары (Звенец). Кроссфейд день↔ночь по кривой суток: LocationAudio
выбирает ключ с гистерезисом ±0.05, кроссфейд даёт Game.playAmbience;
стартовый амбиент выбирается по часам при входе. Новый слой
ambience/ashflow (шелест + глухой гул) в зонах наката: у AmbienceLayerDef
заведены явные positions (тайлы зон вынесены в константы HAZARD_*).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
feat: B6 — пепельная трава, летающий пепел, тёплые зоны наката
...
ashTile: стебли травы сквозь пепел (G0/G1/G2H, 4 шт на ромб, в редком
ash_2 — 2). Летающий пепел лугов: плотнее и с медленным падением (rate 9,
ветер + y 1..4). Тёмные пятна зон наката — тёплая пепельная мгла
(DARK_SPOT_TINT 0x3e3e48 → 0x4a4440).
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>
|
feat: B3 — замах и след удара (conePath в движке)
...
- engine: math/shapes.ts — conePath(from, dir, radius, halfAngle, segments):
полигон сектора для отрисовки (углы в экранных осях, как inCone); тесты
(точки дуги на радиусе, симметрия, вырожденный луч), экспорт через index.ts
- игра (CombatFlow): при удержании атаки — полупрозрачный сектор конуса
(перерисовка только на смене направления/заряда, позиция следует за героем
без перестройки полигона); заряжен резонанс — круг волны r=3 юнита
- след удара: вспышка-сектор (alpha 0.4, тает за 0.18 с через fx.fade)
- demo.md: math/shapes дополнен conePath
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
feat(game): B2 — лампа героя ярче и шире, видимый фонарь на поясе
...
- HERO_LAMP: radius 1.6 → 2.0, intensity 0.85 → 1.0 (прорезает ночь заметнее)
- новый спрайт chars/hero_lamp.png (латунь B*, тёплое стекло F*) — ребёнок
view героя у пояса: свет читается «от фонаря», а не сам по себе
- центр круга уже на ногах героя (позиция = ноги) — визуальная проба
день/ночь/золотой час офсета не потребовала
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
fix(game): B1 — мот не возвращается, автосейв на переходах и закрытии, маркер сбоку
...
- вьюхи once-объектов с used-флагом не создаются при повторном входе в область
(мот/сундук больше не «возвращаются» на карте)
- сериализация прохождения вынесена в buildSaveData/autosave; автосейв пишется
и на переходах (позиция до fade), и при beforeunload/visibilitychange(hidden)
— закрыл игру в любой момент, прогресс на месте
- LocationScene регистрируется в Game.activeLocation (доступ из main.ts даже
когда поверх открыта сумка)
- маркер «можно говорить» у NPC сдвинут к плечу — не закрывает лицо
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
| 2026-09-07 |
docs(practices): приём «скриншот пробы устаревает без render-шага» + waitFor не бросает по таймауту
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
docs(plan,demo): задача 16 — переделка по фидбеку (свет/ветер/квесты/баги)
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
fix: флип side-анимации, панель диалога сразу полной высоты, перенос шрифтов
...
- PlayerController: side-кадры генератора смотрят вправо — флип теперь при
facing left (был при right, анимация ходьбы казалась зеркальной).
- DialogueBox (движок): панель при typewriter сразу строится под полный
текст (измерение до печати), место под «далее ▸» резервируется всегда —
подложка больше не появляется после напечатавшегося текста.
- Перенос шрифтов: nameText диалога, метки Button, тосты (wordWrapWidth
440) — длинные строки не вылезают за панели и экран; тост сдвинут ниже
строки «Цель:» (LocationHud) — не накладываются.
- Доки: ui-and-dialogue.md (механика панели), practices.md (приём
«размечай по полному тексту»), art-style.md (side смотрит вправо).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
feat(game): квестовая ясность — трекер цели, тост тонов, направления
...
- HUD: строка «Цель: <стадия (N/M)>» из activeStage (questTracker);
скрыта, когда активных квестов нет
- тост «Тон (N/3)» у деревьев-механизмов: InteractResponse.toast
(текст + прогресс по вару) вместо полного текста реакции
- эпилоги квестов получили doneFlag (act2_hook, новый machine_hook
в clint_repeat) — трекер корректно переходит между квестами
- журнал в сумке: текущие задачи с переносом по ширине панели,
взятия-стадия видна после принятия; панель 300×222
- направления в текстах стадий и диалогах (пруды — северо-запад
лугов, роща — восток Звенца); убран дубль ключа reply в clint_first
- фикс: сепарация тел не вталкивает врага в непроходимый тайл
(откат позиции; инвариант enemy-in-wall в resonator)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|