Плеер Рублокса
Open-source веб-плеер игр Рублокса — платформы для создания 3D-игр в стиле Roblox.
Построен на Babylon.js 7 + React 18 + Vite 5. Запускает пользовательские игры, опубликованные из Студии Рублокса (отдельный репозиторий).
Быстрый старт (5 минут)
Требования:
- Node.js 18+ и npm 10+
- Браузер с WebGL2 (Chrome 90+ / Firefox 90+ / Safari 15+)
- 4 ГБ свободной памяти (Babylon-сцены тяжёлые)
Установка:
git clone ssh://git@git.rublox.pro:2222/rublox/player.git
cd player
npm install
cp .env.example .env # дефолты указывают на публичный staging — работает сразу
npm run dev
Открой http://localhost:5173/<gameId> — например http://localhost:5173/265 для нашего демо-уровня.
Без JWT ты увидишь экран авторизации. Чтобы обойти его для локальной разработки:
- Получи 90-дневный test-JWT у мейнтейнера (или используй свой с rublox.pro).
- В DevTools браузера:
localStorage.setItem('player_jwt', '<вставь-сюда-свой-jwt>'); location.reload();
Ассеты (GLB-модели / текстуры / звуки)
Папка public/kubikon-assets/ (~106 МБ) не хранится в git чтобы репозиторий был лёгким. Скачать отдельно:
# Скачать последнюю версию ассетов из релиза:
curl -L -o assets.zip https://git.rublox.pro/rublox/player/releases/download/latest/kubikon-assets.zip
unzip assets.zip -d public/
В standalone-режиме (см. ниже) ассеты не нужны — там работает только встроенная демо-игра.
Standalone-режим (без бэкенда)
Нет JWT? Хочешь попробовать плеер без авторизации?
echo "VITE_STANDALONE=true" >> .env
npm run dev
Открой http://localhost:5173/sample — загрузится встроенный демо-проект (src/fixtures/sample-game.json). Все save/leaderboard/chat действия игнорируются.
Структура проекта
src/
├── engine/ # Движок Babylon.js — 81 файл, ~46k строк.
│ # Самодостаточный: BabylonScene, GameRuntime,
│ # MultiplayerSync, PlayerController, BlockManager,
│ # DecoManager, ScriptSandbox, 30+ классов GD-гейммодов.
├── KubikonPlayer/ # UI-контейнер плеера: меню, чат, комменты, моб. контролы.
├── editor-shared/ # HUD-компоненты общие с редактором: хотбар, healthbar,
│ # GUI-оверлей.
├── AdminPreview/ # Превью-роуты для команды дизайнеров (каталоги скинов,
│ # музыки, порталов).
├── PreviewSkin/ # Роуты /_preview-skin/<id> и т.д. — для 3D-превью на
│ # team.rublox.pro.
├── components/ # Общий UI: EmailConfirmNotice, KubikonBugReport,
│ # Leaderboard.
├── api/ # API.js (конфиг) + Kubikon3DService.js (обёртки эндпоинтов).
├── auth/ # PlayerAuth.jsx (JWT/ticket flow), ticketExchange.js.
├── hooks/ # useDeviceType.js (детект моб./планшет).
├── utils/ # kubikonTime.js (форматирование времени).
├── App.jsx, main.jsx, LoadingScreen.jsx
└── fixtures/ # sample-game.json для VITE_STANDALONE=true
Подробнее об архитектуре — в ARCHITECTURE.md.
Переменные окружения
Скопируй .env.example в .env и поправь:
| Переменная | Дефолт | Что означает |
|---|---|---|
VITE_API_BASE |
(пустая) | Базовый URL HTTP-API. Пустой = vite-proxy (для dev). |
VITE_REALTIME_HTTP |
https://dev-api.rublox.pro/api-game |
Colyseus HTTP-эндпоинт (мультиплеер-матчмейкинг). |
VITE_REALTIME_WS |
wss://dev-api.rublox.pro/api-game |
Colyseus WebSocket-эндпоинт. |
VITE_RUBLOX_HOME |
https://rublox.pro/app |
Куда редиректить юзеров без авторизации. |
VITE_STANDALONE |
false |
Пропустить API, загрузить sample-game.json. |
VITE_API_PROXY_TARGET |
https://dev-api.rublox.pro |
(только dev) куда vite-proxy шлёт /api-*. |
Контрибьютинг
Мы рады PR'ам! Прежде чем впервые что-то контрибьютить:
- Прочитай CONTRIBUTING.md — стиль кода, именование веток, шаблон PR.
- Подпиши CLA — обязательно перед первым merge (в Gitea стоит CLA-бот).
- Открывай issues для багов/предложений через шаблоны в
.gitea/ISSUE_TEMPLATE/.
Быстрый цикл PR:
git checkout -b feature/моя-фича
# ...пишешь код...
npm run lint
npm run format
git commit -m "feat: добавил фичу"
git push origin feature/моя-фича
# Открой PR на https://git.rublox.pro/rublox/player
Команды
npm run dev # Dev-сервер (vite, порт 5173)
npm run build # Прод-билд → build/
npm run preview # Превью прод-билда локально
npm run lint # ESLint
npm run format # Prettier (записать)
npm run format:check # Prettier (только проверить — используется в CI)
Лицензия
Двойная лицензия:
- AGPL-3.0-or-later — для open-source использования. Форки и производные работы (включая сетевые сервисы) обязаны публиковать свой исходник под той же лицензией.
- Коммерческая лицензия — для проприетарных продуктов. Контакт:
maksimivankov26@yandex.ru.
Все контрибьюторы обязаны подписать CLA перед первым merge.
© 2026 Иванкова Виктория Сергеевна (ИП). Все права защищены.
Ссылки
- Главный сайт: https://rublox.pro
- Демо плеера: https://player.rublox.pro
- Студия (отдельный репо): https://git.rublox.pro/rublox/studio
- Issues и PR: https://git.rublox.pro/rublox/player
- Безопасность: см. SECURITY.md