Idee e funzionalità per il gioco

La tua prossima funzionalità

Partite

Giochi a turni con revisioni esplicite, stato opaco e rapporti dei risultati separati.

SDK: developSessione del giocatore richiesta
Unity
Illustrazione di Partite
Il risultato visibile

Coordina una sala, turni alternati e rapporti finali indipendenti con due sessioni giocatore.

Video in arrivo

Questo passaggio non ha ancora un video. La guida e la richiesta MCP sono già utilizzabili.

Partite a turni

Preparare lo stesso progetto

  1. Seleziona nella dashboard lo stesso progetto presente nella configurazione del gioco.

    Partite →
  2. La prima richiesta non richiede altre definizioni. Un risultato vuoto è valido finché mancano i dati del gioco.

    Usa due sessioni distinte: crea una sala, unisciti, avvia con ordine esplicito, alterna stati in byte e comunica indipendentemente lo stesso risultato finale.

    Questo primo esempio legge dati. Non crea gruppi, partite o oggetti. Un elenco vuoto è una prima risposta valida.

Integra questa funzionalità

Puoi consultare la guida. Per eseguirla serve una chiave di progetto attiva. Prepara il progetto

SDK installato, configurazione del progetto importata e giocatore connesso.

Questo esempio del SDK usa develop. Verifica che le API necessarie siano disponibili nel SDK installato.

Completate la connessione rapida con il giocatore scelto. Chiamate ReadMyMatches() tramite un pulsante o un’azione esplicita della scena. Aprire il file non invia richieste.

C#
Assets/Scripts/MatchesDemo.cs
Chiamata 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.
Aprire l’esempio SDK completo ↗

Due giocatori, un turno originale

Usa due sessioni distinte: crea una sala, unisciti, avvia con ordine esplicito, alterna stati in byte e comunica indipendentemente lo stesso risultato finale.

Salva la richiesta esatta prima dell’invio. Dopo una scadenza, leggi lo stato e riconcilia. Non sostituire silenziosamente revisione o intenzione originale.

I rapporti usano la revisione finale immutabile. La concordanza non prova una vittoria attendibile; divergenze e rapporti mancanti non determinano un vincitore.

Le sessioni classificate richiedono una partita classificata confermata e il flusso Validated Actions esistente. I rapporti normali non assegnano premi.

PHP supporta le rotte REST ordinarie. Validazione classificata e tempo reale non sono disponibili e restituiscono FEATURE_NOT_SUPPORTED ove necessario.

Prova la tua nuova funzionalità.

Coordina una sala, turni alternati e rapporti finali indipendenti con due sessioni giocatore.

Seleziona nella dashboard lo stesso progetto presente nella configurazione del gioco.

Endpoint dell'API
  • 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
Tutti gli endpoint nel riferimento API
Il nostro suggerimento per il prossimo passo

Dai un record a ogni partita.

Salva il punteggio dopo una partita e mostra chi è in testa. Continua a usare la connessione e la sessione del giocatore.