HTML5 Game SDK
Начните здесь. В HTML5-игре код VORIVOX живёт в одном месте — js/bootstrap.js. Он принимает контекст запуска, подключает SDK и переводит события VORIVOX в обычные функции вашей игры. Всё остальное — механика, графика, звук и интерфейс.
target.hit от SDK и запускается только после session.start.Как выглядит проект
game/
├── index.html # страница игры
├── js/
│ ├── bootstrap.js # ← здесь подключаем VORIVOX SDK
│ ├── session.js # таймер, пауза, завершение
│ ├── gameplay.js # правила игры и начисление очков
│ └── render.js # Canvas/WebGL, HUD, эффекты
├── i18n/ # ← 12 обязательных языков
│ ├── ru.json en.json zh-Hans.json es.json
│ ├── ar.json hi.json pt.json fr.json
│ └── de.json ja.json kk.json uz.json
├── assets/ # изображения, звук, шрифты — локально
└── vendor/vorivox.js # библиотека SDK
Куда вставляется код SDK
Ниже — минимальный js/bootstrap.js. В production объект launchManifest должен передать доверенный Runtime Host. В локальной разработке используйте отдельный mock из комплекта. Не помещайте токен сеанса в URL или исходный код.
Что обязан сделать разработчик игры
1) загрузить локальные ресурсы; 2) подключиться; 3) сообщить ready(); 4) начать механику только по session.start; 5) не считать попадания на паузе; 6) один раз отправить результат; 7) поддержать все 12 языков VORIVOX; 8) если игроков двое — выбрать один из двух понятных режимов: поочерёдная стрельба или разделение полотна на левую/правую половины.
Что читать дальше
Если делаете первую игру: Быстрый старт → Первая игра → Попадания → Один и два игрока → Локализация → Тестирование. Остальные разделы нужны по мере интеграции.
Пример кода
Фрагмент интеграции: переменные игрового проекта задаются приложением. Полный запускаемый пример — в Playground.
import {VorivoxClient} from '../vendor/vorivox.js';
// launchManifest is injected by the trusted VORIVOX Runtime Host.
const sdk = new VorivoxClient(launchManifest);
sdk.on('session.start', ({player_count}) => game.start(player_count));
sdk.on('session.pause', () => game.pause());
sdk.on('session.resume', () => game.resume());
sdk.on('session.stop', () => game.stop());
sdk.on('target.hit', hit => {
if (sdk.sessionState === 'running') game.onHit(hit);
});
await sdk.connect();
await game.loadAssets();
await sdk.ready('Main');