| 2026-09-12 |
Молния: разряд + вспышка с тенями, дебаг-кнопка «⚡ Молния»
...
Движок (render/lightning.ts): LightningSystem — strike(at?) (без точки —
случайная точка окна видимости, детерминирована номером удара), update(t)
гонит огибающую мерцания (пик + два рестрайка, 0.55 с), info(). Разряд —
излучающий слой частиц: непрерывный зигзаг (сумма двух синусов) 58 узлов
на высоту 176 (за верх кадра) + ореол и две ветви. Вспышка — отдельный
направленный свет рендера setLightning(at, k) с shadow map: свет из точки
разряда вниз с наклоном, ночью усилен (×(1+nightK)); setSun не трогает.
Игра: мост makeLightning(at?)/lightningInfo(), тик системы, кнопка в
секции погоды дев-панели. Гейт weather.mjs: +6 чеков (25 всего).
Тесты чистой части (огибающая, геометрия, жизненный цикл) — 387 ✓.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
14 hours ago
|

Многослойный туман по дальности от камеры + слайдер дев-панели
...
Композитный проход: сцена → RT с DepthTexture, полноэкранный квад
реконструирует мировую точку (в орто глубина линейна) и красит кадр
стопкой из 6 слоёв по дистанции вдоль взгляда ОТ КАМЕРЫ. Клубы — fbm
по мировым XZ с дрейфом ветра (глубокие слои медленнее — параллакс),
высотное затухание собирает туман в низинах; цвет — env-свет сцены
(день светло-серый, ночь тёмный). Полоты ⟂ оси взгляда забракованы
пробой-изолятом: при взгляде ~63° плоскости уходят под рельеф.
Главная грабля: d в шейдере обязан быть dot(wp − uCamPos, uCamF) —
глубиной от КАМЕРЫ; вариант от цели давал для видимых пикселей
d ∈ [−1.12·V, +1.12·V] при слоях на 2.5..5·V — все smoothstep'ы
нули, туман полностью прозрачен (изолят маскировал: камера ближе).
Попутно чинит pow-граблю из 55876f8: степень PARTICLE_LIT_GAMMA из TS
в GLSL-шаблоне печаталась «2» (int) — pow(int) не компилировался в
GLSL ES, lit-слои частиц (дождь/снег/пепел/листья/пыль) молча не
рисовали; в GLSL-шаблоны числа из TS — через .toFixed(1).
WeatherSpec.fog (0..1), база прудов 0.3; 6-й слайдер «туман» в дев-
панели. Гейт weather: 19 проверок (+6 туман: рисуется, глубинный
градиент, дрейф, ночь тёмная, слайдер панели). check:fast — 377 ✓.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
15 hours ago
|
Дев-панель не ставит игру на паузу: мир и время живут при открытой панели
...
Раньше тик при dev.open выходил рано — стояло всё, кроме погоды. Теперь
панель — просто оверлей: часы/свет/фейд/катсцена/фауна идут, правки
слайдеров видно в живой игре. Метка часов панели обновляется каждый тик
(новый refreshClockLabel — только текст, слайдер не трогается, чтобы не
мешать тянущему его; полная синхронизация осталась на открытии и
перемотках). Пауза осталась только у меню и сумки. Гейты panels/weather ✓,
check:fast — 353 теста.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
16 hours ago
|

Погода в движке: дождь, снег, ветер, облачность
...
Движок (packages/engine):
- WeatherSpec (windDir/windStrength/cloud/rain/snow), clampWeather,
windVector; weather.ts — WeatherSystem на слоях частиц (addParticles):
окно осадков = след кадра + маржа, wrap, альфа у края; дождь —
тяжёлая капля (дрейф ветра ×0.6), снег — покачивание + полный дрейф
- VoxelRenderer.setCloud: гашение солнца (×1−0.6k), облачный тинт
ambient/фона через cloudDim (обесцвечивание + затемнение), встроен
в setNight (lastNightTint пересчитывается)
- agent-lib: startDevServer показывает stderr vite при падении
Игра: погода по областям (AREA_WEATHER) + ручной режим дев-панели,
переживает смену области; setAsh(false) глушит погоду (гейт-режим);
в тике погода анимирует даже при открытой панели. Мост: weatherInfo,
setWeather (merge/сброс), devSetWeather. Дев-панель: слайдеры
облачность/дождь/снег/ветер/направление, счётчики капель и снежинок.
Гейт tools/checks/weather.mjs — 14 проверок (базы областей, ливень/
снег падают, облачность темнит, панель, глушение). 343 теста ✓.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
21 hours ago
|
| 2026-09-11 |
Фидбек: вьювер крутит вокруг центра модели, точечный свет ярче, реестр объектов
...
- modelCenter (движок): ось орбиты ModelViewer — центр bbox занятых
вокселей, а не угол сетки; экспорт из index.ts, тест на углы.
- Точечные источники: three r155+ считает PointLight в физических
единицах — POINT_LIGHT_GAIN=8 в addPointLight И setIntensity
(мерцание каждый кадр затирало усиление — свет оставался тусклым).
- Реестр объектов игры (apps/game/src/registry.ts): каталог дев-вьювера
собирается сам из мест создания (areas/main/fauna), без ручного
списка; devview только рисует DOM. 20 записей, id стабильны —
гейт panels без изменений.
- Доки v2/CLAUDE.md: трек 33 + структура modelViewer/addPointLight.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
Дев-панель: управление временем суток (слайдер + пресеты)
...
Секция «Время суток» сверху панели 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
|
Трек 29: редизайн мира + текстурный слой на world-меше + скины
...
Движок: слой тайлей мира (Chunk.tex / VoxelWorld.getTex/setTex, мешер
texAt → per-vertex tiles/uvs, stampModel с opts.texRemap), рендер —
worldTileAtlas (общий атлас чанков, шейдерная инъция общая с облаком).
Манекен: скины деталей (подол/застёжка/подошвы, пряжка — слот metal).
309 тестов (+6), все 18 гейтов зелёные.
Игра: редизайн строений (дом — 3 стиля стен по сиду + tall, круглые
башня и колодец с воротом, клёпаная Машина), природа (валун-купол
с трещиной/мохом, высокий и малый кусты — варианты по сиду), олень.
Скины домов (houseTexture: кладка/доски/штукатурка/дранка/дверь) и
персонажей идут через реестр worldTex с дедупликацией тайлей по
контенту. Палитра мира дополнена слотами 18-23. Гейты areas/interact
поправлены под UNIT=10 (устаревшие константы), props — центр тайла.
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
|