Внутренняя разработка VORIVOX. Пакет candidate: оставшиеся проверки обозначены в разделе совместимости.
Первая игра: пошагово
Соберите вертикальный срез: подключение, ожидание сеанса, десять попаданий, счёт и штатное завершение. Это правильная база для любой дальнейшей 2D/3D-механики.
1. Подготовьте сцену
Создайте объект VORIVOX, добавьте VorivoxGameSdk и импортируйте Sample Starter Kit через Package Manager. В инспекторе назначьте ссылку SDK.
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 basicpython3 tools/mock_launcher.py --scenario pausepython3 tools/mock_launcher.py --scenario device-faultУчебные примеры — скрипты, требующие сцены и назначенных ссылок Unity. Для production обязательны guard паузы/countdown, обработка потери соединения, защита по shot_id и отписка обработчиков. Старые Samples могут требовать адаптации: полнота игровой механики не заявляется.
Playground — браузерная демонстрация общего контракта. Это не Unity Player и не проверка C#-пакета.