Ide dan fitur game

Fitur berikutnya

Pertandingan

Permainan bergiliran dengan revisi eksplisit, status buram dan laporan hasil terpisah.

SDK: developMemerlukan sesi pemain
Unity
Ilustrasi Pertandingan
Hasil yang terlihat

Koordinasikan lobi, giliran bergantian, dan laporan akhir independen dengan dua sesi pemain.

Video akan tersedia

Langkah ini belum memiliki video. Panduan dan permintaan MCP sudah dapat digunakan.

Pertandingan berbasis giliran

Siapkan proyek yang sama

  1. Pilih proyek yang sama di dasbor dan konfigurasi game.

    Pertandingan →
  2. Permintaan pertama tidak memerlukan definisi tambahan. Hasil kosong tetap sah sebelum ada data permainan yang sesuai.

    Gunakan dua sesi terpisah: buat lobi, bergabung, mulai dengan urutan eksplisit, kirim status byte bergantian lalu laporkan hasil akhir yang sama secara mandiri.

    Contoh pertama membaca data. Tidak membuat grup, pertandingan, atau objek. Daftar kosong adalah respons pertama yang sah.

Tambahkan fitur ini

Kamu dapat membaca panduan. Untuk menjalankannya, diperlukan kunci proyek aktif. Siapkan proyek

SDK terpasang, konfigurasi proyek diimpor, dan pemain sudah masuk.

Contoh SDK ini menggunakan develop. Periksa apakah API yang diperlukan tersedia di SDK yang terpasang.

Selesaikan koneksi mulai cepat dengan pemain yang dipilih. Panggil ReadMyMatches() dari tombol atau tindakan adegan yang eksplisit. Membuka berkas saja tidak mengirim permintaan.

C#
Assets/Scripts/MatchesDemo.cs
Panggilan horizOn
1using UnityEngine;
2using PM.horizOn.Cloud.Manager;
3​
4public sealed class MatchesDemo : MonoBehaviour
5{
6 // Initialize/connect and restore the existing player in the Quickstart first.
7 // Invoke explicitly. The SDK also enforces the returned polling cadence.
8 public async void ReadMyMatches()
9 {
10 var user = UserManager.Instance.CurrentUser;
11 if (user == null || !user.IsValid()) return;
12 var result = await MatchesManager.Instance.GetMatches(user.UserId);
13 if (!result.IsSuccess) { Debug.LogWarning(result.ErrorCode); return; }
14 Debug.Log($"Ledger revision: {result.Data.revision}");
15 foreach (var match in result.Data.recent)
16 Debug.Log($"Match {match.id}: {match.status}");
17 // Recent may include an active match after this player's forfeit.
18 // Respect result.Data.pollAfterSeconds; no background poll or automatic timeout.
19 }
20}
21// Full two-player recipe: SDK Examples/MatchesExample and MatchesSampleStore.
22// ReadLedger/ReadMatch -> SaveCreateAfterLedgerReview/SaveActionAfterMatchReview.
23// ApplySavedIntent sends one durable original body/revision. Unknown create is reconciled.
24// Never replace a pending original with the revision from a later read.
25// ReportResult uses the original finalStateRevision/result bytes/sorted winnerIds.
26// Ordinary consensus is not trusted victory proof. Ranked runs use Validated Actions.
Buka contoh SDK lengkap ↗

Dua pemain, satu giliran asli

Gunakan dua sesi terpisah: buat lobi, bergabung, mulai dengan urutan eksplisit, kirim status byte bergantian lalu laporkan hasil akhir yang sama secara mandiri.

Simpan permintaan persis sebelum dikirim. Setelah batas waktu, baca status dan rekonsiliasi. Jangan diam-diam mengganti revisi atau maksud asli.

Laporan memakai revisi akhir yang tetap. Kesepakatan bukan bukti kemenangan tepercaya; laporan berbeda atau hilang tidak menyimpulkan pemenang.

Proses berperingkat memerlukan pertandingan berperingkat yang dikonfirmasi dan alur Validated Actions yang ada. Laporan biasa tidak memberi hadiah.

PHP mendukung rute REST biasa. Validasi peringkat dan waktu nyata tidak tersedia dan mengembalikan FEATURE_NOT_SUPPORTED bila diperlukan.

Uji fitur barumu.

Koordinasikan lobi, giliran bergantian, dan laporan akhir independen dengan dua sesi pemain.

Pilih proyek yang sama di dasbor dan konfigurasi game.

Titik akhir
  • GET/matches
  • GET/matches/limits
  • GET/matches/open
  • GET/matches/{matchId}
  • POST/matches
  • POST/matches/{matchId}/join
  • POST/matches/{matchId}/decline
  • POST/matches/{matchId}/start
  • POST/matches/{matchId}/turn
  • POST/matches/{matchId}/timeout
  • POST/matches/{matchId}/leave
  • POST/matches/{matchId}/cancel
  • POST/matches/{matchId}/result
  • POST/matches/{matchId}/ranked-run
Semua titik akhir di referensi API
Saran kami untuk langkah berikutnya

Berikan skor tertinggi untuk setiap ronde.

Simpan skor setelah ronde dan tampilkan siapa yang unggul. Tetap gunakan koneksi dan sesi pemainmu.