GraphicsManager (постобработка/материалы/API game.graphics) — паритет со студией, применяется при загрузке игры если автор настроил. Новые материалы chrome/water/ iridescent. Realtime-эндпоинт переведён на game.rublox.pro (S1 NPM прямо, без hop через S2 — чинит разрывы WebSocket). MultiplayerSync улучшен. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
47 lines
2.7 KiB
JavaScript
47 lines
2.7 KiB
JavaScript
// API-эндпоинты плеера Рублокса.
|
||
//
|
||
// Все URL бэкенда настраиваются через Vite environment variables:
|
||
// VITE_API_BASE — базовый URL HTTP-API (дефолт: '' для localhost+vite-proxy)
|
||
// VITE_REALTIME_HTTP — Colyseus matchmaking HTTP-эндпоинт
|
||
// VITE_REALTIME_WS — Colyseus WebSocket-эндпоинт
|
||
// VITE_RUBLOX_HOME — главный сайт Рублокса (редирект если нет JWT)
|
||
//
|
||
// См. .env.example с готовыми дефолтами на публичный staging
|
||
// (https://dev-api.rublox.pro).
|
||
//
|
||
// В dev (vite на localhost) BASE пустой и запросы идут на относительные
|
||
// /api-* пути, которые vite.config.js проксирует на staging/prod.
|
||
|
||
const ENV = (typeof import.meta !== 'undefined' && import.meta.env) || {};
|
||
|
||
const IS_DEV = typeof window !== 'undefined'
|
||
&& (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1');
|
||
|
||
// Пустой BASE в dev → vite-proxy роутит сам.
|
||
// В prod → либо env-настроенный бэкенд, либо текущий origin.
|
||
const BASE = ENV.VITE_API_BASE
|
||
?? (IS_DEV ? '' : (typeof window !== 'undefined' ? window.location.origin : ''));
|
||
|
||
export const USER_addres = BASE + '/api-user';
|
||
export const STORYS_addres = BASE + '/api-storys';
|
||
|
||
// Эндпоинты realtime (Colyseus). По умолчанию используем HTTPS-relative
|
||
// для HTTPS-страницы (vite-proxy обрабатывает /api-game), иначе берём
|
||
// env-настроенные прямые URL.
|
||
const IS_HTTPS = typeof window !== 'undefined' && window.location.protocol === 'https:';
|
||
|
||
// 2026-06-05: realtime теперь прямо на game.rublox.pro (S1 NPM → S1 VM 110),
|
||
// не через minecraftia-school.ru/api-game (лишний hop S2 NPM → S1 NAT
|
||
// давал разрывы WebSocket каждую секунду).
|
||
export const REALTIME_HTTP = ENV.VITE_REALTIME_HTTP
|
||
?? (IS_HTTPS ? 'https://game.rublox.pro' : 'http://localhost:8685');
|
||
export const REALTIME_WS = ENV.VITE_REALTIME_WS
|
||
?? (IS_HTTPS ? 'wss://game.rublox.pro' : 'ws://localhost:8685');
|
||
|
||
// Главный сайт Рублокса — куда редиректить юзеров без ticket/JWT.
|
||
export const RUBLOX_HOME = ENV.VITE_RUBLOX_HOME ?? 'https://rublox.pro/app';
|
||
|
||
// Папки ассетов для фото профиля и скинов (раздают user/storys-микросервисы).
|
||
export const FOLDER_PROFILE = USER_addres + '/assets/profile/';
|
||
export const FOLDER_STORYS = STORYS_addres + '/assets/skin/';
|