الإجراءات الموثّقة

الإجراءات الموثّقة

جولات يتحقق منها الخادم للوحات الصدارة والعملة داخل اللعبة، دون كتابة كود خادم. تذاكر للاستخدام مرة واحدة لكل جولة، وقواعد موجودة على الخادم فقط، وسجلات الإدخال لأفضل الجولات، والإشراف، كلها تحدّ مما يمكن أن يكسبه الغشاش. في السحابة فقط، وليست متاحة في simpleServer المستضاف ذاتيًا.

ابدأ مجانًا

تذاكر للاستخدام مرة واحدة لكل جولة

تبدأ كل جولة بتذكرة من الخادم مرتبطة باللاعب ولوحة الصدارة وبذرة من الخادم. تُحتسب التذكرة مرة واحدة فقط، والجولة المرفوضة تستهلكها أيضًا، فلا يستطيع أحد تحسّس حدودك بتذكرة واحدة.

القواعد على الخادم فقط

حدود النتيجة والحد الأدنى للمدة والنتيجة في الثانية وقواعد المراحل وحدود العملة لكل جولة موجودة على الخادم. لا تظهر أبدًا في ردود التطبيق أو رسائل الخطأ، والخادم وحده يكتب العملة.

سجلات الإدخال والإشراف

بالنسبة لأفضل الجولات والجولات المُعلَّمة، يطلب الخادم من اللعبة سجل الإدخال الخاص بها. يمكنك إعادة تشغيل الجولة المشبوهة بنفسك باستخدام البذرة والسجل ثم تقرير ما تفعله بها.

تكامل سريع

تكامل سريع

إعداد الإجراءات الموثّقة
الفيديو قريباً

فعّل الإرسالات الموثّقة للوحة صدارة وحدد قواعد الخادم ضمن الإجراءات الموثّقة. بعد ذلك تابع الجولات التي تم فحصها وراجع أدلة أفضل الجولات في لوحة التحكم.

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
الأسئلة الشائعة

الأسئلة الشائعة

مستعد للتكامل؟

ابدأ البناء مع horizOn اليوم. الباقة المجانية متاحة.