| 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>
|
Амбиент лугов: тихий «дыхательный» ветер, шуршание травы, события
...
- Новая фактура ветра вместо ровной полосы 250–1800 Гц: мягкий низкий шум
(120–600 Гц) с «дыханием» и порывами (meadowsWind), шуршание сухой травы —
короткие всплески 1.5–3 кГц (grassRustle); общий уровень заметно тише
(normalize 0.32 вместо 0.5).
- Событий больше и неравномерно: три скрипа дерева (woodCreak — низкий тон
с изгибом), далёкий глухой звон Звенца (111 Гц) раз за цикл.
- Ночь: та же фактура тише и реже, гул машины и далёкий колокол сохранены.
- Ключи и паритет спек-синтов не тронуты (парити-тест зелёный).
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>
|
| 2026-09-07 |
feat(game): ветер лугов — воздушная полоса вместо «моря»
...
Причина «моря» в ambienceMeadows: полоса 100–600 Гц (рокот), строгая
4-секундная LFO-волна громкости (формула наката) и синус-гул 82 Гц.
- полоса поднята до 250–1800 Гц (как у эталонного слоя ambience/wind)
- «дыхание» — сумма нескольких медленных волн с целым числом циклов
на луп (без ровного прилива), порывы — тем же шумом, короче и случайнее
- тихий высокий свист (2–4 кГц) только на пике дыхания, гул 82 Гц убран
- npm run audio перегенерировал WAV; ключи те же, чеки audio/music не задеты
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Фикс десинка вью героя (SpriteMotion не двигает blink-view) + звук: ветер, шорохи, тише вода
...
- Движок: SpriteMotion перезаписывает позицию/поворот только при bob/sway —
view с чистым blink/pulse можно двигать извне (герой прибивало к точке
спавна, ходьба выглядела камерным скроллом, по прибытии спрайт
«возвращался»); detach симметричен; тесты SpriteMotion
- PlayerController: syncView на точном прибытии в waypoint (кадр не отстаёт)
- Звук: ambience/wind — глобальный слой (AmbienceLayerDef.radius опционален,
нет at/tiles — константная громкость) на лугах и прудах; вода прудов
тише (0.6→0.35, радиус 6→5); sfx/rustle — редкие дальние шорохи пепла
из тика сцены (rng сцены, случайные pan/rate). Птиц в мире нет по лору
- Доки: anim.md (правило позиционирования), practices.md (глобальные
слои, шорохи, «птицы молчат»)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
| 2026-09-06 |
audio: палитра спеков (tone/wobble/sweep/layers) — все sfx на спек-синтезе (E4)
...
- SoundSpec: kind 'tone' (чистый тон + свип freqTo), параметры w/attack/
fadeTo/wobbleHz|Depth|Base|Phase, доп. голоса layers (SpecVoice с delay);
без модификаторов бит-в-бит прежним формулам
- data/sfxSpecs.ts: 16 спеков — все бывшие файловые sfx, включая шаги
(StepVariants: варианты renderSpec с сидами base+i·10, fallback — базовый
спек); ui_click во всех сценах через playSfx
- gen.mjs остался только амбиенту; assets/audio/sfx/ удалён; формулы
бывших sfx экспортированы для парити-теста (bit-в-бит / eps 1e-5)
- мост: scene:synthesize принимает kind tone; доки: agent.md,
assets-audio-save.md, practices.md, plan.md (E4 ✅)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
audio: миграция bell_hit/whoosh на спек-синтез (E3), мёртвый door.wav удалён
...
- SoundSpec: флаг swell (огибающая «0 → 1 → 0» у hit/scrape), у chime 4-й
партиал и константная амплитуда клика — формулы совпали с gen.mjs дословно
- data/sfxSpecs.ts: реестр SPEC_SFX + playSfx — единая точка проигрывания
sfx (AudioSystem, useTransition, collectFlower); ключи в AUDIO_KEYS
- gen.mjs: CLI-гвард (WAV при импорте не пишутся), формулы bellHit/whoosh
экспортированы для парити-теста sfxSpecs.test.ts (бит-в-бит равенство)
- доки: plan.md (E1–E3 ✅, F/G ✅), practices.md, assets-audio-save.md
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
Игра: шаги по поверхностям, звуки предметов, локальные амбиент-слои
...
- Шаги: sfx/step_grass|ash|water|floor по тайлу под ногами (stepKey), старый sfx/step удалён
- Предметы: моты → mote_pickup, сундук → chest_open, знаки/записка → note, whoosh на переходах
- Фауна: событие fauna:startle (FaunaSystem слышит combat:attack) → sfx/deer_startle
- AudioSystem.setLayers: несколько амбиент-слоёв сразу, синхронный дедуп, тик-фейд громкости
- AreaDef.ambienceLayers: вода прудов, гул башни (точка), скрипы домов (тайлы)
- validate-тест покрывает новые ключи через AUDIO_KEYS
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|
Игра: амбиент на шину ambience вместо music, слайдер «Амбиент»
...
- gen.mjs: ключи ambience/meadows|ponds|zvenets -> assets/audio/ambience/ (music/ удалён)
- AUDIO_KEYS вынесен в data/audio.ts (валидатор в node-тестах без ?url-импортов Game)
- Game.playAmbience(key, 0.7) c guard ключа; '' — stopAmbience; шина ambience в settings
- AreaDef: визуальное ambience -> atmosphere, аудио ambience?: string (интерьеры — тишина)
- SettingsScene: Общая / Амбиент / Звуки (ползунок music не показываем — треков нет)
- validate-тест: area.ambience и Interactables.responses[].sound ∈ AUDIO_KEYS
- хвосты music/ в доках вычищены; agent:check зелёный
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
2 days ago
|

Разграничение: жанронезависимые тулзы переехали в packages/engine/tools
...
Правило: тулза, знающая контент игры (палитру, тайлы, локации, сценарии
акта), живёт в apps/game/tools как «сценарий применения»; машинерия без
знаний об игре переезжает к движку.
- packages/engine/tools/: png.mjs (encode+decode), canvas.mjs (палитра —
параметр), imaging.mjs (кроп/квантизация/обзорный лист), wav.mjs
(WAV-энкодер и примитивы синтеза), agent-lib.mjs (маяк — параметр
openGame), boundary.mjs (правила гварда, корни/публичное API — опции)
+ юнит-тесты boundary.
- exports движка: "./tools/*" — игровые сценарии импортируют
@rpg/engine/tools/* вместо относительных путей; maps/gen.test.ts
больше не лезет в src движка (encodeMap/parseMap из @rpg/engine).
- Игра остаётся сценарным слоем: palette.mjs, gen.mjs (арт/звуки),
aiart (промпты/манифест/тонкий post.mjs), checks/, smoke*, agent.mjs,
новый lib.mjs (маяк загрузки игры поверх движкового каркаса).
- Артефакты генераторов (арт, карты, WAV, processed) бит-в-бит прежние.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
3 days ago
|
Архитектура: гвард границы движок/игра + перенос тулз в apps/game/tools
...
- Гвард границы (apps/game/tools/guards/boundary.mjs, npm run guard):
движок не импортирует игру и не выходит из пакета, игра импортирует
движок только через @rpg/engine и @rpg/engine/assets/*. Чистое ядро
покрыто тестами (8 кейсов); проба guard:boundary в agent check.
- tools/ -> apps/game/tools/ (git mv, история сохранена): правка
корне-относительных путей в генераторах и CLI, ROOT-константы
'../../..', npm-скрипты обновлены.
- Доки: CLAUDE.md, llms.txt, docs/engine/*, README — новые пути,
практика «меняю границу движок/игра» и грабля про ROOT тулз.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
3 days ago
|