Aksi tervalidasi

Aksi tervalidasi

Sesi permainan yang diperiksa server untuk papan peringkat dan mata uang dalam game, tanpa menulis kode server. Tiket sekali pakai per sesi, aturan yang hanya ada di server, log input dari sesi teratas, dan moderasi membatasi apa yang bisa diperoleh seorang pencurang. Hanya di cloud, tidak tersedia di simpleServer yang di-hosting sendiri.

Mulai Gratis

Tiket sekali pakai per sesi

Setiap sesi dimulai dengan tiket server yang terikat pada pemain, papan peringkat, dan seed server. Tiket hanya dihitung tepat satu kali, dan sesi yang ditolak juga memakainya, sehingga tidak ada yang bisa menguji batas Anda dengan satu tiket.

Aturan hanya di server

Batas skor, durasi minimum, skor per detik, aturan tahap, dan batas mata uang per sesi disimpan di server. Semuanya tidak pernah muncul di respons aplikasi atau pesan kesalahan, dan mata uang hanya ditulis oleh server.

Log input dan moderasi

Untuk sesi teratas dan sesi yang ditandai, server meminta log input dari game. Anda bisa memutar ulang sendiri sesi yang mencurigakan dengan seed dan log-nya, lalu memutuskan tindakan selanjutnya.

Integrasi Cepat

Integrasi Cepat

Menyiapkan Aksi tervalidasi
Video segera hadir

Aktifkan kiriman tervalidasi untuk papan peringkat dan atur aturan server Anda di Aksi tervalidasi. Lalu pantau permainan yang diperiksa dan tinjau bukti permainan teratas di dasbor.

C#
// 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
# 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_SHORT
Pertanyaan yang Sering Diajukan

Pertanyaan yang Sering Diajukan

Siap untuk Integrasi?

Mulai membangun dengan horizOn hari ini. Paket gratis tersedia.