studio/README.md
МИН 1ae2807323
Some checks failed
CI / Lint + Format (pull_request) Failing after 28s
CI / Build (pull_request) Failing after 38s
CI / Secret scan (pull_request) Failing after 31s
CI / PR size check (pull_request) Failing after 32s
chore: trigger CI test
2026-05-28 13:37:58 +03:00

171 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Студия Рублокса
Open-source веб-студия для создания игр Рублокса — платформы 3D-игр в стиле Roblox.
Построена на **Babylon.js 7** + **React 18** + **Vite 5** + **Monaco Editor**. Делай вокселные карты, ставь модели, пиши скрипты на JS в Web Worker-песочнице. Опубликованные игры открываются в [Плеере Рублокса](https://git.rublox.pro/rublox/player) (отдельный репозиторий).
[![Лицензия: AGPL-3.0](https://img.shields.io/badge/%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F-AGPL--3.0-blue.svg)](./LICENSE)
[![Коммерческая лицензия](https://img.shields.io/badge/%D0%9A%D0%BE%D0%BC%D0%BC%D0%B5%D1%80%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BD%D0%B0-green.svg)](./LICENSE-COMMERCIAL.md)
---
## Быстрый старт (5 минут)
**Требования:**
- Node.js 18+ и npm 10+
- Браузер с WebGL2 (Chrome 90+ / Firefox 90+ / Safari 15+)
- 8 ГБ свободной памяти (студия тяжелее плеера — Monaco + большой ландшафт)
**Установка:**
```bash
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** ты увидишь экран авторизации. Чтобы обойти:
```js
// В DevTools браузера:
localStorage.setItem('Authorization', '<твой-jwt-с-rublox.pro>');
location.reload();
```
---
## Ассеты (GLB-модели / текстуры / звуки)
Папка `public/kubikon-assets/` (~93 МБ) **не хранится в git** чтобы репозиторий был лёгким. Скачать отдельно:
```bash
curl -L -o assets.zip https://git.rublox.pro/rublox/studio/releases/download/latest/kubikon-assets.zip
unzip assets.zip -d public/
```
Без ассетов студия запустится, но ландшафт будет пустой (нет текстур блоков).
---
## Standalone-режим (без бэкенда)
Хочешь попробовать без авторизации?
```bash
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](./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, открыть пустой редактор. |
---
## Команды
```bash
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](./CONTRIBUTING.md) — стиль, ветки, шаблон PR.
2. Подпиши [CLA](./CLA.md) (через `https://team.rublox.pro/developer/cla` или комментарий `/sign-cla`).
3. Открывай issues через шаблоны в `.gitea/ISSUE_TEMPLATE/`.
**Быстрый цикл:**
```bash
git checkout -b feature/моя-фича
# ...пишешь код...
npm run lint && npm run format
git commit -m "feat: описание"
git push origin feature/моя-фича
```
---
## Лицензия
Двойная лицензия:
- **[AGPL-3.0-or-later](./LICENSE)** — для open-source использования. Форки и производные работы (включая SaaS) обязаны публиковать свой исходник под той же лицензией.
- **[Коммерческая лицензия](./LICENSE-COMMERCIAL.md)** — для проприетарных продуктов. Контакт: `maksimivankov26@yandex.ru`.
Все контрибьюторы обязаны подписать [CLA](./CLA.md) перед первым merge.
© 2026 Иванкова Виктория Сергеевна (ИП). Все права защищены.
---
## Ссылки
- Главный сайт: https://rublox.pro
- Студия (демо): https://studio.rublox.pro
- Плеер (отдельный репо): https://git.rublox.pro/rublox/player
- Issues и PR: https://git.rublox.pro/rublox/studio
- Безопасность: [SECURITY.md](./SECURITY.md)