| 2026-09-11 |

Слой частиц движка: спрайты/плоские квады + окно видимости камеры
...
Частицы больше не воксели: отдельный 2D-слой поверх мира (THREE.Points
билборды и InstancedBufferGeometry квады в XZ), без освещения и теней.
Окно видимости частиц — точный AABB сляба ортокамеры на слое [y0,y1]
(polyWindow, перебор вершин полиэдра). Пепел/мотыльки/дымка/блики воды
переведены на слой: частицы живут в мировых координатах, окно камеры
заворачивает их с маржой за экран, в марже альфа гаснет — без появления
из воздуха. Окно покрывает весь кадр с перекрытием.
Движок: particles.ts (ParticlePoint/ParticleLayer, createSpriteLayer/
createQuadLayer, addParticles/addFlatParticles), polyWindow.ts,
visibleWindow(y0,y1), 4 теста (симметрия следа, покрытие окна,
сдвиг от высоты, вырожденность). Игра: particlesWindow.ts (маржа,
wrap, edgeAlpha), миграция ash/ambientParticles/waterShimmer,
setAsh пересобирает частицы области.
Грабли: знаки полуплоскостей n·δ≤b; AABB в дельтах — прибавлять target;
окно без кэша (едет за камерой); квады на воде — над гранью y=3;
fresh.update после роста ёмкости; скорости по v1 (px/s ÷ 32).
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
17 hours ago
|
| 2026-09-10 |

Масштаб UNIT 5→10, детализация манекена 11×21×4, частицы из мира
...
Фидбек: «частицы летают вместе с персонажем, как приклеенные»;
«персонажи низкодетализированные, не читаются; объекты всё ещё
сильно меньше — масштаб поднимать кардинально».
- Частицы (пепел, мотыльки) отвязаны от камеры: мировой якорь +
дрейф, окно камеры заворачивает (wrap) — при движении героя
частицы стоят на месте в мире.
- 1 тайл v1 = 10×10 вокселей: генераторы областей и пропы подросли
(дерево ~30–38 со стволом 2×2, дом 24×30–40×18 — вдвое выше героя,
башня 47, Машина 24×34×18), высота мира 52, стены интерьера 13.
- Манекен движка 5×11×3 → 11×21×4 (голова-куб, торс, руки/ноги 2×2 —
силуэт читается; 220 вокселей; тест связности — BFS по
6-связности). Герой 2.1 юнита/с (stride 12.8 — темп v1), камера
viewSize 80 (охват 8 тайлов), радиусы интеракта 15, олень ~13 вокс.
- Гейты переведены на новую геометрию: все 6 игры + 11 демок
зелёные, 295 тестов.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
Масштаб мира UNIT 3→5: герой ≈ 2 тайла, скорость 2.1 юнита/с
...
Фидбек «персонажи крупнее деревьев и соразмерны домам»: 1 тайл v1 =
5×5 вокселей. Генераторы областей и пропы подросли под тайл 5×5
(дерево 17–23 вокс ~2× героя, дом 12×14–18×9, башня 21, Машина
12×17×9, стены интерьера 8); олень ~9 вокс. Герой 2.1 юнита/с
(stride 6.4 — темп v1), олени 0.45/1.0 юнита/с. Камера viewSize 40 —
тот же охват 8 тайлов; тени/дистанция масштабируются от viewSize сами.
Гейты переведены на новую геометрию (центр тайла tile*5+2.5,
spotVoxel tile*5+2, подходы ±5); 6 гейтов игры + 295 тестов зелёные.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
1 day ago
|
| 2026-09-09 |

Трек 18: время суток, освещение и музыка — атмосфера v1 в игре v2
...
Движок: экспорт daynight (dayNightFactor/dayNightAmbient/flickerFactor),
новые API VoxelRenderer — setNight(k, tint) (hemisphere → тон ночи, фон
сцены, гашение солнца) и setDayAmbient(color) (дневная база области:
тёмные интерьеры гасят hemisphere и солнце по яркости), addPointLight.
Игра (apps/game): GameClock (1 сек = 1 игровая минута, старт 8:00),
данные освещения 8 областей v1 1:1 (bells, окна, очаги, отсвет башни;
whenFlag/notFlag/whenNight), GameLighting (diff источников, мерцание,
лампа героя HERO_LAMP), AshParticles (пепел лугов), GameAudio (темы
областей с кроссфейдом — только луга, как в v1). Мост: clockInfo/
setClock/lightingInfo/audioInfo/setAsh. Гейт tools/checks/atmosphere.mjs
— 18 проверок; areas.mjs научен отключать пепел для кадр-равенств.
Вне скоупа (отложено): туман прудов, ауры наката, виньетка, амбиент-слои.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
2 days ago
|