| 2026-09-08 |
Карты внешних локаций ×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>
|
| 2026-09-07 |

К4: каркас withChecks для чек-сценариев, конфиги, доки
...
- apps/game/tools/lib.mjs: withChecks(name, fn) — сервер/браузер и помощники
(boot/goToArea/sleepEnemies/readAudioLog/waitAudioLog/expectInvariantsClean)
в одном месте; все 12 сценариев checks/*.mjs переписаны на шаги.
- Контекст сценария — только t.ctx (геттер): деструктуризация до boot давала
null — задокументировано в agent.md и practices.md.
- vitest.config.ts: явный include (src-тесты + тулзы с чистой математикой);
GameLoop.manual.test.ts -> GameLoop.timing.test.ts.
- Редактор диалогов: порт 5299 (5199 остаётся за dev-сервером смоуков) + фикс
разбора --port (indexOf(-1) -> NaN, npm run dialogues падал без аргумента).
- tsconfig: apps/game включает только src (движок типчекается своим проектом);
vite/client убран из движка (import.meta.env там нет).
- Докси: getting-started — regex-алиас вместо строкового; llms.txt + anim.md;
CLAUDE.md — полный список док; wav.mjs writeWav удалён (0 вызовов).
Проверено: agent:check 16/16, check:fast (692 теста), smoke-act1, редактор на 5299.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
Аудио: стерео-музыка, динамические темы (бой/настороженность), room tone интерьеров
...
- Движок: renderMusicStereo (interleaved L,R, equal-power pan треков,
нормализация по общему пику каналов), createBuffer(channels 1|2);
моно renderMusic бит-в-бит прежним сэмплам
- Игра: темы боя и tension-стем в data/music.ts; threat-тик
LocationScene.updateMusic — chase → тема боя, wary → тихий стем
(setVolume с флагом stemPending против шторма перезапусков)
- Room tone интерьеров: ROOM_TONES (hum-спеки, шина ambience),
запуск в enter, стоп в exit, validate-тест ключей
- checks/music.mjs: инвариант «тема лугов не перезапускается»
(динамические темы/стем — легитимная реакция на врага)
- Доки: assets-audio-save.md (стерео), practices.md (динамическая
музыка, pending-флаг), plan.md (Работа G — сделано)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
| 2026-09-06 |
Движок: секвенсор renderMusic + playLoopBuffer; игра — тема лугов (работа G)
...
Партитура MusicSpec (bpm, beats, партии-стемы: pluck/bell/pad) чисто
компилируется в луп; playLoopBuffer играет буфер памяти на любой шине.
Тема лугов — правило-базовый генератор в data/music.ts (сид, ля-минорная
пентатоника), компиляция в рантайме — WAV для музыки не нужен; у области
поле theme, у Game — playTheme с guard-ом и кроссфейдом. Проба
checks/music.mjs в agent:check. Секвенция тем (бой) — до боевой темы.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|