min
7bb789f1af
docs(studio): вики задача 20 — карточка #63 + статья «Сбор монет (лидерборды и достижения)»
...
Карточка g5 #63 guide-leaderstats (openProjectId 2616) + статья в docsLessons:
что получится, API leaderstats/achievements, 2 шага (таблица/достижения),
bindToStat, сохранение в БД. 3 скрина (scene/play/page) — донести вручную
(headless-студия не пускает после взлома, попрошу у пользователя).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 10:04:57 +03:00
min
8a7ab9aadf
docs(studio): вики задача 16 — карточка #62 + статья «Небесная демка»
...
Карточка g5 #62 guide-skybox (preview guide-skybox-scene.png, openProjectId
2541) + статья в docsLessons (что получится, API setSkybox/setClouds/setFog/
fadeTo, 3 шага, 4 скриншота день/ночь/космос) + иконка cloud в docsIcons.
Скрины в public/wiki (вне git) — на прод донести вручную при возврате CI.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 00:56:50 +03:00
min
2fda576e11
feat(14): Vehicle System V1+V2 — машины, на которых можно ездить
...
CI / Lint (pull_request) Successful in 1m9s
CI / Build (pull_request) Successful in 2m2s
CI / Secret scan (pull_request) Successful in 2m36s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Система транспорта для Рублокс-студии (задача 14 Недели 4):
- VehicleManager — аркадная физика (газ/руль/тормоз/реверс), коллизия
через physics.moveAABB; GLB-кузов Kenney car-kit (колёса в модели).
- VehicleHud — графический спидометр-стрелка (SVG, 270° дуга) + передача D/R/N.
- Вход hold-F / выход E; камера follow/капот/кинематографичная (V циклит).
- game.scene.spawn(vehicle:car, opts) + onVehicleEnter/onVehicleExit.
- Звук мотора: низкочастотный рокот (бас-пила + шум + LFO-пульсация тактов),
pitch/громкость ∝ скорости — не воющий тон.
- Авто оседает на землю при спавне (_settle + повторы при поздней готовности
физики) — не висит/не тонет.
- Водитель скрывается за рулём; падение в бездну → выход + респавн.
- Производительность: addShadowCaster фильтрует мелкие/тонкие/огромный пол меши;
InstancedMesh без receiveShadows (фикс тормозов 5→50 FPS).
- Вики: карточка #61 «Такси-симулятор» + статья + 2 скриншота.
- incrementPlay(id, userId) — передаём user_id для self/user-cooldown.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@
2026-06-03 02:24:43 +03:00
min
f0e284878e
feat(13): главное меню игры (game.mainMenu)
...
CI / Lint (pull_request) Successful in 1m19s
CI / Build (pull_request) Successful in 2m6s
CI / Secret scan (pull_request) Successful in 2m36s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Живое 3D-меню как в топ-играх Roblox: cinematic-камера облетает витрину,
патч-ноуты, логотип, кнопка ИГРАТЬ, музыка, блок управления.
- game.mainMenu.show/hide/setCamera/setPatchNotes/onShow/onPlay/onHide
- 4 режима камеры: cinematic(waypoints)/orbit/static/preset-cuts поверх camera.cutscene
- зацикливание облёта через onCutsceneDone (камера не вылетает за сцену)
- game.player.setInputBlocked экспортирован в worker + handler в runtime
- passthrough scene.mainMenu в toJSON/load
- вики g5 #60 guide-garage, тест-игра «Гараж Босса» id 2434 (GLB-машина Kenney)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 00:07:33 +03:00
min
ef29c11473
docs(12): финал вики Такси-босс (3 локации) + короткие описания карточек
...
CI / Lint (pull_request) Successful in 1m10s
CI / Build (pull_request) Successful in 2m7s
CI / Secret scan (pull_request) Successful in 2m37s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Карточка guide-taxi: упоминание 3 локаций (гараж/город/магазин), описание
сжато до 1-2 предложений (как у соседних). Статья: триггер через GUI-кнопку,
интерьер магазина, Try на 4-ю локацию. Заодно сжато описание guide-zavod.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 22:53:51 +03:00
min
34060c90c3
feat(12): внутриигровой Loading Screen (game.loading)
...
CI / Lint (pull_request) Successful in 1m13s
CI / Build (pull_request) Successful in 2m3s
CI / Secret scan (pull_request) Successful in 2m35s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Программный экран загрузки для перехода между мирами:
- game.loading.show(opts) → хэндл (setProgress/setText/setCover/close/onSkip/onComplete)
- game.loading.transition(opts) → Promise (фейковый прогресс за duration)
- cover sceneSnapshot, прогресс-бар+процент, спиннер, кнопка Пропустить, логотип
- blockInput + пауза симуляции, fadeIn/Out; tick независим от paused
- настройки проекта «Экран загрузки» (логотип/акцент/дефолты) + 3 сниппета
- LoadingScreenOverlay.js (новый DOM-оверлей), worker namespace loading,
cmd loading.* + _ensureLoadingScreen, serialize/load конфига в scene
- вики g5 #59 guide-taxi (карточка + урок), тест-игра «Такси-босс» id 2427
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 22:00:26 +03:00
min
ee1b7352b7
feat(11): placement mode — расстановка предметов (tycoon)
...
CI / Lint (pull_request) Successful in 1m15s
CI / Build (pull_request) Successful in 1m58s
CI / Secret scan (pull_request) Failing after 9s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Движок: PlacementManager (тень-превью формой воксельной модели за курсором,
снап к сетке, стопка, проверка зоны и баланса, поворот R/колесо, ПКМ/Esc),
ShopInventoryUi (магазин-слоты, авто-серые при нехватке валюты); проводка
game.placement.* и game.inventoryUi.* в worker/GameRuntime/BabylonScene.
Попутные фиксы:
- TerrainManager: backFaceCulling=false — воксели не просвечивают (видна была
задняя грань сквозь переднюю);
- KubikonEditor: guard от потери userModels/scripts при частичной загрузке
(terrain догрузился, модели/скрипт нет → автосейв затирал) — критичный
фикс защиты данных для ВСЕХ игр;
- Hotbar: пустой инвентарь не показывает панель (глобальное правило);
- MinimapOverlay: миникарта только по флагу игры (не авто на больших картах);
- cleanup usermodel-инстансов при Stop.
Вики: карточка #58 + статья-урок «Мой завод» (g5 Разбор готовых игр),
openProjectId=2345, скриншоты залиты на прод.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 19:06:03 +03:00
76b2afd312
feat(10): живые 3D-надписи (attachFace) + витрина-лутбокс + вики
...
CI / Lint (pull_request) Failing after 5s
CI / PR size check (pull_request) Successful in 12s
CI / Secret scan (pull_request) Failing after 14m51s
CI / Build (pull_request) Failing after 14m52s
CI / Deploy to S1 + S2 (pull_request) Has been cancelled
Движок: LabelManager attachFace (текст плоско на грань примитива, FRONTSIDE
без зеркала), tilt, 5 пресетов, richText; GameRuntime scene.move/scene.rotate
для моделей и примитивов; ScriptSandboxWorker obj.move/obj.rotate в Instance-
proxy; InspectorPanel настройки label. Вики: карточка #57 guide-dynamic-label
(Часовая башня) + полная статья-урок с разбором attachFace/obj.move/format.money.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 21:15:54 +03:00
65aa26996d
feat(09): материал studs + окрашиваемый блок studs-block + лего-сет
...
Задача 09 «Studs материал» (лего-кружки):
- PrimitiveManager: material 'studs' — diffuse-текстура (серые кружки) × цвет
меша + normal map (выпуклость). Тайлинг _studsTiling по размеру меша
(STUD_UNIT=1, GRID=4), пересчёт в _recreateMesh при ресайзе. _studsDims на меше.
- InspectorPanel: «Studs» 5-й материал в палитре примитивов.
- BlockTypes: studs-block ('Окрашиваемые', colorable:true, normal, defaultColor).
- BlockManager: per-instance color через ThinInstance color buffer
(thinInstanceSetBuffer('color'), useVertexColors) — тысячи блоков любых цветов
один draw call. addBlock(x,y,z,type,color), _setBlockColorAt/setBlockColor,
serialize/loadFromArray с color, batch flush.
- GameRuntime: scene.setColor для блока (ref 'block:x,y,z'), spawn block с color.
- ScriptSandboxWorker: spawn блока прокидывает color.
- ModelTypes: лего-сет 19 compound-моделей (кирпичи/плиты/скаты/дерево/куст/
дом/машина/ступеньки/человечек) — все части material:'studs'.
- Вики: карточка g5 #56 «Лего-полигон» + урок guide-lego.
Текстуры: public/kubikon-assets/materials/studs_{diffuse,normal}.png (в .gitignore,
доставить на S2 build/ вручную). Проверено визуально: куб 6×6 кружков, 2×2 блока
разных цветов, лего-дом/дерево/машина.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:10:58 +03:00
e3e5960241
feat: 3D-стрелка-указатель (game.fx.pointer) + is_test + Ctrl+V в редакторе + вики-карточка
...
CI / Lint (pull_request) Successful in 2m10s
CI / Build (pull_request) Successful in 1m58s
CI / Secret scan (pull_request) Successful in 2m33s
CI / PR size check (pull_request) Successful in 10s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
- game.fx.pointer: лента бегущих шевронов + парящий quest-marker над целью
(конус остриём вниз, свечение, bob+вращение, обводка); presets guide/quest/
danger/gift/custom; расширенный game.fx.beam (8 текстур, curved, градиент).
- Примитив pointer в палитре (Геймплей) + инспектор + _activatePointers при Play.
- is_test: переключатель «Тестовая игра» в GameSettingsModal (не течёт в каталог).
- Ctrl+V в Monaco-редакторе скриптов (guard на .monaco-editor + activeElement).
- Вики: карточка g5 «Туториал — собери монетки» (Разбор готовых игр).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 21:45:57 +03:00
42be04def9
feat(week4): модальные сцены, кастомные скины игрока и вики-гайды по 4 играм
...
CI / Lint (pull_request) Failing after 1m10s
CI / Build (pull_request) Successful in 2m2s
CI / Secret scan (pull_request) Successful in 2m36s
CI / PR size check (pull_request) Successful in 6s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Задача 04 — модальные сцены (затемнение + GUI/3D-анимация + блок ввода):
- engine/ModalManager.js (state-машина, fade, spotlight-проекция, HighlightLayer)
- editor/ModalOverlay.jsx (CSS-overlay + mask-image для spotlight)
- PlayerController.setInputBlocked/setCameraFrozen/captureCameraState/focusOnTarget
- game.modal.open/close/update/isOpen/onClose + пресеты bossIntro/lootbox/dialog/confirmation
- Фиксы ядра: клик GUI-кнопок (realId↔localId), modalOpened через globalEvent,
guard от двойного срабатывания колбэков, кнопка ✓ на последней строке диалога
Задача 07 — кастомные скины игрока + магазин:
- non-humanoid скины (любая 3D-модель): загрузчик, процедурная анимация,
настраиваемый AABB, центрирование через pivot-node
- PlayerController.reloadSkin (смена скина в Play)
- game.player.setSkin/unlockSkin/getAvailableSkins/onSkinChange/openSkinShop + локальная валюта
- editor/SkinShopOverlay.jsx (встроенный магазин, клавиша B) + SkinManagerModal.jsx (вкладка «Скины»)
- сериализация scene.skins, кнопка «Скины» в тулбаре
Вики — категория «Разбор готовых игр»:
- docsGames.js: группа g5 + 4 карточки (Двор/Витрина GUI/Сундук/Парк)
- docsLessons.jsx: 4 подробные статьи-урока для детей
- «Открыть мою копию» создаёт копию проекта (оригинал не трогается)
Адаптивная ширина кнопки billboard под длинный текст.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 00:50:56 +03:00
31adbf151b
Initial public release: Студия Рублокса v1.0
...
Open-source веб-студия для создания игр Рублокса, двойная лицензия
AGPL-3.0 + Коммерческая.
Главное:
- Vite 5 + React 18 + Babylon 7.54.3 + Monaco Editor + Colyseus 0.16
- Самодостаточный движок ~28к строк (66 файлов): BlockManager,
TerrainVoxelBuilder, ModelManager, DecoManager, PlayerController,
ScriptSandboxWorker, MultiplayerSync, 30+ GD-гейммодов
- Главный редактор KubikonEditor (~37к строк) + панели, ScriptEditor (Monaco)
- Витрина игр (KubikonFeed, KubikonStudio, KubikonDocs, KubikonLearn)
- Geometry Dash sub-app (GdMenu, GdShop, GdRules, GdCoverArt)
- 10 admin-preview каталогов для дизайнеров (скины, музыка, порталы и т.д.)
- Конфигурируемый бэкенд через VITE_API_BASE — работает со staging
(dev-api.rublox.pro) без настройки
- Standalone-режим (VITE_STANDALONE=true) — открыть пустой редактор без бэка
- Полная документация (на русском): README, ARCHITECTURE, CONTRIBUTING,
SECURITY, CHANGELOG
- ESLint + Prettier + EditorConfig
- Legal: LICENSE (AGPL-3.0), LICENSE-COMMERCIAL.md, CLA.md, COPYRIGHT.md
- Issue templates: bug_report, feature_request, security_disclosure
Перед публикацией:
- Все импорты из minecraftia заменены на локальные
- Все хардкоды URL (minecraftia-school.ru) и внутренних IP убраны → env
- Admin-эндпоинты Kubikon3DService вырезаны (остаются в приватном репо)
- AdminKubikonModeration не публикуется (модерация — в team.rublox.pro)
- 93 МБ ассетов public/kubikon-assets вынесены в .gitignore
(раздаются через release artifact)
2026-05-27 23:41:10 +03:00