МИН 00ab2e5839
Some checks are pending
CI / Lint + Format (push) Waiting to run
CI / Build (push) Waiting to run
CI / Secret scan (push) Waiting to run
CI / PR size check (push) Waiting to run
ci: добавить Gitea Actions workflow (lint+format+build+secret-scan+size-check)
2026-05-28 00:42:12 +03:00

Студия Рублокса

Open-source веб-студия для создания игр Рублокса — платформы 3D-игр в стиле Roblox.

Построена на Babylon.js 7 + React 18 + Vite 5 + Monaco Editor. Делай вокселные карты, ставь модели, пиши скрипты на JS в Web Worker-песочнице. Опубликованные игры открываются в Плеере Рублокса (отдельный репозиторий).

Лицензия: AGPL-3.0 Коммерческая лицензия


Быстрый старт (5 минут)

Требования:

  • Node.js 18+ и npm 10+
  • Браузер с WebGL2 (Chrome 90+ / Firefox 90+ / Safari 15+)
  • 8 ГБ свободной памяти (студия тяжелее плеера — Monaco + большой ландшафт)

Установка:

git clone ssh://git@git.rublox.pro:2222/rublox/studio.git
cd studio
npm install
cp .env.example .env       # дефолты указывают на публичный staging — работает сразу
npm run dev

Открой http://localhost:5174/edit/<gameId> — например http://localhost:5174/edit/265.

Без JWT ты увидишь экран авторизации. Чтобы обойти:

// В DevTools браузера:
localStorage.setItem('Authorization', '<твой-jwt-с-rublox.pro>');
location.reload();

Ассеты (GLB-модели / текстуры / звуки)

Папка public/kubikon-assets/ (~93 МБ) не хранится в git чтобы репозиторий был лёгким. Скачать отдельно:

curl -L -o assets.zip https://git.rublox.pro/rublox/studio/releases/download/latest/kubikon-assets.zip
unzip assets.zip -d public/

Без ассетов студия запустится, но ландшафт будет пустой (нет текстур блоков).


Standalone-режим (без бэкенда)

Хочешь попробовать без авторизации?

echo "VITE_STANDALONE=true" >> .env
npm run dev

Открой http://localhost:5174/edit/sample — пустой редактор, авторизация-мок, save отключён.


Структура проекта

src/
├── editor/           # Главный редактор (KubikonEditor) ~37к строк
│   ├── engine/       # Babylon-движок — 66 файлов, ~28к строк
│   │                 # BabylonScene, GameRuntime, MultiplayerSync,
│   │                 # PlayerController, BlockManager, TerrainVoxelBuilder,
│   │                 # ModelManager, DecoManager, ScriptSandbox,
│   │                 # 30+ GD-гейммодов
│   └── *Panel.jsx, *Modal.jsx — UI редактора (Hierarchy/Inspector/Terrain/ScriptEditor)
├── preview-player/   # Встроенный мини-плеер для теста («Play»-кнопка в редакторе)
├── community/        # Витрина/лента: KubikonFeed, KubikonStudio, KubikonDocs,
│                     # KubikonLearn, KubikonGamePage, KubikonHeroKit, RealtimeTest
├── gd-shop/          # Geometry Dash: GdMenu, GdShop, GdRules, GdCoverArt, GdPlayWrapper
├── admin-preview/    # Превью-каталоги для дизайнеров: GdSkins, GdBosses,
│                     # GdSpikes, GdArches, GdFinishes, GdPortals, GdMusic,
│                     # GdSfx, GdShipSkins, GdDeco
├── components/       # Общий UI: KubikonBugReport, KubikonLeaderboard,
│                     # KubikonPerfOverlay, EmailConfirmNotice, PleeseReg,
│                     # RublocsLogo
├── api/              # API.js (конфиг) + Kubikon3DService.js + KubikonCadService
│                     # + SanctionsService + playTicket
├── auth/             # AuthContext, SanctionsContext (лёгкие версии,
│                     # без UserService от минки)
├── hooks/            # useDeviceType
├── utils/            # kubikonTheme, kubikonTime
├── App.jsx           # Router + Suspense (15+ роутов)
├── main.jsx
├── index.css
└── LoadingScreen.jsx

Подробнее об архитектуре — в ARCHITECTURE.md.


Переменные окружения

Скопируй .env.example в .env и поправь:

Переменная Дефолт Что означает
VITE_API_BASE (пустая) Базовый URL HTTP-API. Пустой = vite-proxy (для dev).
VITE_API_PROXY_TARGET https://dev-api.rublox.pro (dev) куда vite-proxy шлёт /api-*.
VITE_REALTIME_HTTP https://dev-api.rublox.pro/api-game Colyseus HTTP.
VITE_REALTIME_WS wss://dev-api.rublox.pro/api-game Colyseus WS.
VITE_RUBLOX_HOME https://rublox.pro/app Редирект на главный сайт если нет авторизации.
VITE_PLAYER_URL https://player.rublox.pro URL плеера (для кнопки «Тест в плеере»).
VITE_STANDALONE false Пропустить API, открыть пустой редактор.

Команды

npm run dev         # Dev-сервер (vite, порт 5174)
npm run build       # Прод-билд → build/
npm run preview     # Превью прод-билда локально
npm run lint        # ESLint
npm run format      # Prettier (записать)
npm run format:check  # Prettier (проверить)

Контрибьютинг

Мы рады PR'ам! Перед первым:

  1. Прочитай CONTRIBUTING.md — стиль, ветки, шаблон PR.
  2. Подпиши CLA (через https://team.rublox.pro/developer/cla или комментарий /sign-cla).
  3. Открывай issues через шаблоны в .gitea/ISSUE_TEMPLATE/.

Быстрый цикл:

git checkout -b feature/моя-фича
# ...пишешь код...
npm run lint && npm run format
git commit -m "feat: описание"
git push origin feature/моя-фича

Лицензия

Двойная лицензия:

  • AGPL-3.0-or-later — для open-source использования. Форки и производные работы (включая SaaS) обязаны публиковать свой исходник под той же лицензией.
  • Коммерческая лицензия — для проприетарных продуктов. Контакт: maksimivankov26@yandex.ru.

Все контрибьюторы обязаны подписать CLA перед первым merge.

© 2026 Иванкова Виктория Сергеевна (ИП). Все права защищены.


Ссылки

Description
Open-source веб-студия для создания игр Рублокса. AGPL-3.0 + Коммерческая лицензия.
https://studio.rublox.pro
Readme AGPL-3.0 7.6 MiB
Languages
JavaScript 97.7%
CSS 2.2%