МИН 61fba4e174
Some checks failed
CI / Lint + Format (push) Failing after 32s
CI / Build (push) Failing after 37s
CI / Secret scan (push) Failing after 37s
CI / PR size check (push) Has been skipped
fix: починка билда + studio.rublox.pro инфра
Большой консолидирующий коммит после поднятия studio.rublox.pro (28 мая 2026).
Содержит изменения которые делались в процессе подготовки прод-окружения:

Фиксы импортов после выноса из minecraftia:
- Массовая замена путей ../../components → ../components (40+ файлов в src/community/, src/admin-preview/)
- Замена ../KubikonEditor/ → ../editor/, ../KubikonStudio/ → ../community/, ../AdminPreview/ → ../admin-preview/
- API.js скопирован из минки целиком (было 8 экспортов, стало 312)
- Добавлены PLAYER_URL, MyButton_1, недостающие компоненты
- Заменены require() на статические ES-imports в BabylonScene, PrimitiveManager, GameRuntime (Vite не поддерживает CJS require)

Структура ассетов:
- public/kubikon-templates/ → public/assets/kubikon-templates/
- public/kubikon-learn/ → public/assets/kubikon-learn/
- (код искал в /assets/, файлы лежали без /assets/)

Навигация роутов внутри студии:
- /kubikon-studio/docs → /docs (90+ навигационных вызовов sed-replaced)
- /kubikon-editor/X → /edit/X, /kubikon/play/X → /play/X, /kubikon/gd/X → /gd/X

UI:
- Новый компонент StudioHeader (61px, как в минке) + копия favicon
- WithHeader wrapper в App.jsx для всех страниц кроме fullscreen-редактора/плеера
- SSO ticket-flow в AuthContext (auto-redeem #ticket= при загрузке)
- Тёмная тема карточек игр в ВИКИ (фон #1c2231 вместо #fff, картинка впритык)

Документация:
- docs/ONBOARDING.md — путь нового контрибьютора от нуля до PR
- docs/TUTORIAL_ADD_SCRIPT_API.md — как добавить game.* API
- API_USAGE.md — список эндпоинтов backend
- README в подпапках engine/, engine/terrain/, engine/voxel/, engine/robloxterrain/, engine/types/

.gitignore:
- public/wiki/ исключён (73МБ PNG, будут на CDN отдельной задачей)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 05:01:13 +03:00
..

Roblox-style визуальные эффекты для гладкого ландшафта

Папка с визуальными хаками которые делают воксельный ландшафт похожим на Roblox terrain — без перехода на полноценный smooth-shading.

Файлы

Файл Что
RobloxTerrain.js Фасад: применяет vertex AO + slope-darken + distance fog к terrain-мешам.
DensityGrid.js Плотность вокселей вокруг точки → используется для расчёта AO.
SmoothBrushes.js Кисти для surface-net'а — добавляют/убирают density плавно (не дискретно как в voxel).
SmoothDecoManager.js Декорации (трава/цветы) для гладкого ландшафта — кладёт модели на surface-точки.
SurfaceNetsMesher.js Surface Nets алгоритм — превращает density-grid в гладкие меши (альтернатива marching cubes).

Зачем это нужно

Воксельный мир из чистых кубов выглядит как Minecraft. Roblox terrain — гладкий с округлыми холмами, мягким освещением. Чтобы вытянуть похожий look без перехода на полноценный smooth-shading, использует:

  • Vertex AO — каждый вертекс получает baked ambient occlusion на основе соседних плотностей → углы темнее, открытые места светлее.
  • Slope darken — крутые склоны темнее (как трава на солнце vs трава на тени склона).
  • Distance fog — далёкие чанки уходят в туман → создаёт глубину.
  • Two-scale UV — текстуры тайлятся двумя разными масштабами и блендятся → не видно повторений.
  • Wrap diffuse — пиксели на тыльной стороне освещены частично (выглядит как мягкий свет).
  • Height blend — на стыке материалов (трава→камень) делает плавный переход вместо резкого.

См. [reference-roblox-terrain-visuals] в приватных доках.

Surface Nets vs Marching Cubes

  • Marching Cubes — стандарт, но генерирует много мелких треугольников, плохо смотрится с greedy meshing.
  • Surface Nets — один вертекс на ячейку density-grid, меньше треугольников, проще оптимизировать. У нас — Surface Nets.

Связь с остальным движком

Использует density-grid (плотности 0..1 в каждой ячейке) вместо булевых вокселей. Поэтому несовместим с legacy terrain/ и новым voxel/ напрямую. Это третья реализация ландшафта, активная только в режиме «Smooth Terrain» (тогглится в настройках редактора).

Будущее

Долгосрочно все три (terrain/, voxel/, robloxterrain/) сольются в один движок на базе voxel/ с опциональным smooth-shading через Surface Nets. Сейчас — это разные кодпути.