Game SDK

↓ Скачать SDK 1.8.1

Внутренняя разработка VORIVOX. Пакет candidate: оставшиеся проверки обозначены в разделе совместимости.

Первая игра: пошагово

Соберите вертикальный срез: подключение, ожидание сеанса, десять попаданий, счёт и штатное завершение. Это правильная база для любой дальнейшей 2D/3D-механики.

1. Подготовьте сцену

Создайте объект VORIVOX, добавьте VorivoxGameSdk и импортируйте Sample Starter Kit через Package Manager. В инспекторе назначьте ссылку SDK.

Настройка VORIVOX SDK в Unity
Mock When Manifest Missing разрешён только в Editor при отсутствии пути запуска. В релизе отсутствие или ошибка manifest должны останавливать запуск.

2. Реализуйте безопасный поток

sdk.SessionStarted += BeginRound;
sdk.HitReceived += ResolveHit;
sdk.SessionPaused += PauseRound;
sdk.SessionResumed += ResumeRound;
sdk.SessionStopped += StopRound;

await sdk.ConnectAsync();       // уже дождался server.hello
await LoadAllContentAsync();
await sdk.ReadyAsync("Game"); // только после полной загрузки
Главное правило: ReadyAsync означает, что игра действительно готова немедленно принять session.start. Не отправляйте ready до загрузки сцены, шейдеров, звука и критичных Addressables.

3. Обработайте попадание

private async void ResolveHit(VorivoxHit hit)
{
    if (!roundActive) return;
    Vector2 point = hit.ToCanvasLocal(playfield);
    int points = scoreMap.Resolve(point);
    shots++;
    score += points;
    if (points > 0) hits++;
    await sdk.UpdateScoreAsync(new VorivoxScore(score, shots, hits, timeLeftMs));
}

4. Завершите один раз

await sdk.CompleteAsync(new VorivoxResult(
    "completed", score, shots, hits, durationMs,
    sdk.Manifest.Session.PlayerCount));

CompleteAsync защищён от повторного вызова. Всё равно сведите таймер, кнопку выхода и условие победы в единую функцию завершения.

5. Проверьте три сценария

python3 tools/mock_launcher.py --scenario basic
python3 tools/mock_launcher.py --scenario pause
python3 tools/mock_launcher.py --scenario device-fault
Учебные примеры — скрипты, требующие сцены и назначенных ссылок Unity. Для production обязательны guard паузы/countdown, обработка потери соединения, защита по shot_id и отписка обработчиков. Старые Samples могут требовать адаптации: полнота игровой механики не заявляется.

Playground — браузерная демонстрация общего контракта. Это не Unity Player и не проверка C#-пакета.