
Zweryfikowane akcje
Rozgrywki sprawdzane przez serwer dla rankingów i waluty w grze, bez pisania kodu serwera. Jednorazowe bilety na rozgrywkę, reguły istniejące tylko na serwerze, logi wejść z najlepszych rozgrywek i moderacja ograniczają to, co może zyskać oszust. Tylko w chmurze, nie w samodzielnie hostowanym simpleServer.
Jednorazowe bilety na rozgrywkę
Każda rozgrywka zaczyna się od biletu serwera powiązanego z graczem, rankingiem i ziarnem serwera. Bilet liczy się dokładnie raz, a odrzucona rozgrywka również go zużywa, więc nikt nie wybada Twoich limitów jednym biletem.
Reguły tylko na serwerze
Limity wyniku, minimalny czas, wynik na sekundę, reguły etapów i limity waluty na rozgrywkę są przechowywane na serwerze. Nigdy nie pojawiają się w odpowiedziach aplikacji ani w komunikatach o błędach, a walutę zapisuje wyłącznie serwer.
Logi wejść i moderacja
Dla najlepszych i oznaczonych rozgrywek serwer prosi grę o jej log wejść. Podejrzaną rozgrywkę możesz sam odtworzyć z ziarnem i logiem, a potem zdecydować, co z nią zrobić.
Szybka integracja
Włącz zweryfikowane zgłoszenia dla rankingu i ustaw reguły serwera w sekcji Zweryfikowane akcje. Następnie śledź sprawdzone rozgrywki i przeglądaj dowody najlepszych rozgrywek w panelu.
// Unity C#: Validated Actions
// Dashboard: turn on "Validated submissions only" for the leaderboard "weekly"
var va = ValidatedActionsManager.Instance;
// Round start: single-use ticket plus server seed
var run = await va.StartRun("weekly");
if (run == null) { Debug.Log(va.LastErrorCode); return; } // e.g. RUN_RATE_LIMITED
var random = new System.Random(run.seed);
// ... play, record the inputs into inputLog (byte[]) ...
// Round end: score plus input log (the SDK sends its SHA-256 hash)
var result = await va.SubmitValidated(18250, inputLog);
if (result == null)
{
Debug.Log($"{va.LastErrorCode}, run kept: {va.HasActiveRun}"); // e.g. DURATION_TOO_SHORT
}# REST API: Validated Actions (needs the player's session token)
# Start a run: returns runId, a single-use ticket, seed and expiresAt
curl -X POST https://eu.horizon.pm/api/v1/app/validated-actions/runs \
-H "X-API-Key: YOUR_API_KEY" \
-H "Authorization: Bearer SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"userId":"USER_ID","leaderboardKey":"weekly"}'
# Submit the run: score plus the SHA-256 hex of the input log
curl -X POST https://eu.horizon.pm/api/v1/app/validated-actions/submit \
-H "X-API-Key: YOUR_API_KEY" \
-H "Authorization: Bearer SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"userId":"USER_ID","ticket":"TICKET","leaderboardKey":"weekly","score":18250,"inputLogHash":"SHA256_HEX"}'
# Rejected runs answer 422 with a code, e.g. TICKET_EXPIRED or DURATION_TOO_SHORTNajczesciej zadawane pytania
Gotowy do integracji?
Zacznij budowac z horizOn juz dzis. Free Tier w zestawie.


