Idées et fonctionnalités de jeu

Votre prochaine fonctionnalité

Parties

Jeux au tour par tour avec révisions explicites, état opaque et rapports de résultats distincts.

SDK : developSession de joueur requise
Unity
Illustration de Parties
Votre résultat visible

Coordonnez un salon, des tours alternés et des rapports finaux indépendants avec deux sessions joueur.

Vidéo à venir

Cette étape n’a pas encore de vidéo. Le guide et la demande MCP sont utilisables.

Parties au tour par tour

Préparer le même projet

  1. Sélectionnez dans le tableau de bord le même projet que dans la configuration de votre jeu.

    Parties →
  2. Aucune définition supplémentaire pour la première requête. Un résultat vide est valide tant que les données du jeu manquent.

    Utilisez deux sessions distinctes : créez un salon, rejoignez-le, démarrez dans un ordre explicite, alternez les états binaires puis rapportez indépendamment le même résultat final.

    Ce premier exemple lit les données. Il ne crée ni groupe, ni partie, ni objet. Une liste vide est une première réponse valide.

Intégrer cette fonctionnalité

Vous pouvez consulter le guide. Son exécution nécessite une clé de projet active. Préparer le projet

SDK installé, configuration du projet importée et joueur connecté.

Cet exemple du SDK utilise develop. Vérifiez que les API nécessaires existent dans votre SDK installé.

Terminez la connexion du démarrage rapide avec le joueur choisi. Appelez ReadMyMatches() via un bouton ou une action de scène explicite. Ouvrir le fichier seul n’envoie aucune requête.

C#
Assets/Scripts/MatchesDemo.cs
Appel 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.
Ouvrir l’exemple SDK complet ↗

Deux joueurs, un tour original

Utilisez deux sessions distinctes : créez un salon, rejoignez-le, démarrez dans un ordre explicite, alternez les états binaires puis rapportez indépendamment le même résultat final.

Enregistrez la requête exacte avant envoi. Après expiration, lisez l’état et réconciliez. Ne remplacez jamais silencieusement la révision ou l’intention originale.

Les rapports utilisent la révision finale immuable. Un accord ne prouve pas une victoire fiable ; désaccords et rapports manquants ne désignent aucun gagnant.

Les parcours classés exigent une partie classée confirmée et le circuit Validated Actions existant. Les rapports ordinaires n’accordent aucune récompense.

PHP prend en charge les routes REST ordinaires. Validation classée et temps réel sont indisponibles et renvoient FEATURE_NOT_SUPPORTED si nécessaire.

Testez votre nouvelle fonctionnalité.

Coordonnez un salon, des tours alternés et des rapports finaux indépendants avec deux sessions joueur.

Sélectionnez dans le tableau de bord le même projet que dans la configuration de votre jeu.

Points de terminaison
  • 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
Tous les points de terminaison dans la référence API
Notre suggestion pour la suite

Donnez un meilleur score à chaque partie.

Enregistrez le score après une partie et montrez qui est en tête. Continuez avec votre connexion et la session du joueur.