Unity Game SDKv0.5.1Скачать SDK
RUEN

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

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

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

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

Настройка VORIVOX SDK в Unity
Для Editor включите Mock When Manifest Missing. В релизной сцене значение можно оставить включённым: при штатном запуске 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