| 2026-09-12 |
FPS-счётчик в правом верхнем углу + лок 60 fps в дев-режиме
...
- движок: GameLoop.setMaxFps(fps) на живом цикле (0 — без лимита;
lastFrame сбрасывается, чтобы без лока не ждать интервала) — тест
на живом цикле с инъекцией времени
- игра: #fps в правом верхнем углу (сводка раз в 0.5 с, z-index выше
дев-панели); в панели секция «ЦИКЛ» — чекбокс «лок 60 fps»
- мост: fpsInfo() (fps + lock), devSetFpsLock(on) — применить и
синхронизировать чекбокс
- гейт panels: счётчик показывает кадры, угол виден, лок и чекбокс
синхронны (грабля: headless троттлит rAF — мерить «fps > 0»)
Тесты 345 ✓, гейт panels ✓, гейт weather 14 ✓.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
19 hours ago
|
Озёра утоплены, деревья крупнее, манекен 8×12×4, теневой фрустум по кадру, частицы в системе освещения
...
- Вода: яма y=1 пуст / вода y=0; непроходимость — physicsWorld
(невидимый коллайдер над ямами); декор на воде не штампуется.
- Деревья: стволы 25-38, кроны 17-24, чанк 64.
- Манекен 8×12×4 (134 вокс, 19 тайлей — детализация на текстурах),
снаряжение пропорционально меньше (рюкзак 40 / факел 4 / фонарик 16).
- Тени: динамический фрустум в setSun (visible·aspect + высота кастера),
mapSize 2048 — граница включения теней больше не видна.
- Частицы: uTint в ParticleLayer, ночной тинт PARTICLE_NIGHT,
размеры уменьшены (пепел/листья/пыль/дымка/мотыльки).
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
21 hours ago
|
| 2026-09-11 |
Дев-панель: управление временем суток (слайдер + пресеты)
...
Секция «Время суток» сверху панели F3: метка часов, слайдер 0..1439,
пресеты 8:00/12:00/18:54 (пик золотого часа)/22:00. Перемотка дёргает
clock.set + lighting.update — свет пересчитывается сразу. Панель — мир
на паузе (как в диалоге), время течёт после закрытия; при открытии
слайдер синхронизируется с часами. Мост: devSetClock, devInfo.clock.
Грабля: список объектов выталкивал секцию за край — панель flex-колонка,
объекты скроллятся. Гейт panels +3 (24 проверки), 317 тестов.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
Трек 31: пост-обработка движка (RT + полноэкранный квад) и воздух области
...
- Движок: VoxelRenderer.setPostPass (сцена в RT NearestFilter 1:1, затем
квад на экран; PostPassHandle {uniforms, dispose}) + сборщик postPass
({vignette?, grain?, wobble?}); uTime заводится рендерером всегда.
Детерминизм гейтов: зерно статично (хэш по координатам), анимируется
только дисторсия через uTime.
- Игра: PostFx (виньетка 0.32→0.5 к ночи, зерно 0.02, дисторсия жары
0.004 в зале Машины — проход пересобирается в setArea, active=ashEnabled);
AirFx (листопад рощи 26 шт с покачиванием, пыль разъезда 40 шт —
взвесь с edgeAlpha в марже окна видимости); карта AIRFX в данных;
ambientInfo.air.
- Гейт atmosphere +5 проверок (виньетка по зонам кадра, листья, пыль);
гейт panels: статы манекена синхронизированы с треком 29 (19 тайлей).
317 тестов, 7+11 гейтов зелёные.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
Трек 28: лоад-скрин, слоты сейвов, панель сумки, фикс застревания в доме, ModelViewer + дев-панель
...
- баг: дома шире тайла — safeEntry ищет свободную позицию спиралью (collides)
- лоад-скрин #loading до первого кадра
- меню: слоты auto + s1..s3 (сохранить/загрузить/удалить), мост menuInfo.slots/saveTo/loadFrom/saveDelete
- панель сумки по I (#bag), мир стоит; мост bagInfo/toggleBag
- движок: ModelViewer (орбитальная камера, клипы, turntable, статы modelStats; юнит-тесты орбиты/статов)
- игра: дев-панель F3 (каталог 14 объектов, скины, вьювер), мир стоит
- гейт panels.mjs (21 проверка), пробы probe-house/probe-load/probe-dev
- доки: CLAUDE.md (структура + трек 28), plan.md, 303 теста, 18 гейтов зелёные
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|