Idées et fonctionnalités de jeu

Votre prochaine fonctionnalité

Objets

Équipement unique, propriétés encadrées et inventaire des joueurs du projet sélectionné.

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

Après enregistrement, le catalogue contient starter_sword. Après l’achat vérifié, l’inventaire actuel contient son instanceId unique.

Vidéo à venir

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

Objets

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.

    Objets →
  2. Créez ou réutilisez ces entrées de test dans le formulaire du tableau de bord. Ce sont des exemples, pas les données actuelles.

    Clé
    starter_sword
    Nom
    Quickstart Sword
    Type
    equipment
    Rareté
    common
    Actif
    true
    Propriétés de base
    {"damage":5}
    Règles de propriété
    []

    Les objets ont une identité et des propriétés propres. Les ressources comptables restent dans les valeurs du joueur ; les éléments purement visuels restent dans son profil.

    Préparez coins avec le guide des valeurs. Enregistrez l’offre active starter-sword : coût de 10 coins, récompense de 1 starter_sword.

    Valeurs du joueur →
  3. Enregistrez, rechargez et vérifiez les entrées avant l’exemple. Conservez les autres définitions.

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 ReadCatalogPage(), ReadInventory() via un bouton ou une action de scène explicite. Ouvrir le fichier seul n’envoie aucune requête.

C#
Assets/Scripts/ItemsDemo.cs
Appel horizOn
1using UnityEngine;
2using PM.horizOn.Cloud.Manager;
3​
4public sealed class ItemsDemo : MonoBehaviour
5{
6 // Initialize/connect and restore the existing player in the Quickstart first.
7 public async void ReadInventory()
8 {
9 var user = UserManager.Instance.CurrentUser;
10 if (user == null || !user.IsValid()) return;
11 var result = await ItemsManager.Instance.GetInventory(user.UserId);
12 if (!result.IsSuccess) { Debug.LogWarning(result.ErrorCode); return; }
13 foreach (var item in result.Data.instances)
14 Debug.Log($"{item.instanceId}: {item.itemKey}");
15 // Keep result.Data.revision for a separately reviewed mutation.
16 }
17​
18 // Wire a separate explicit action; no automatic catalog traversal or poll.
19 public async void ReadCatalogPage()
20 {
21 var user = UserManager.Instance.CurrentUser;
22 if (user == null || !user.IsValid()) return;
23 var result = await ItemsManager.Instance.GetCatalog(user.UserId, limit: 1);
24 if (!result.IsSuccess) { Debug.LogWarning(result.ErrorCode); return; }
25 Debug.Log($"Catalog revision: {result.Data.revision}");
26 // Explicit Next keeps result.Data.revision and nextAfterKey unchanged.
27 }
28}
29// SDK ItemsExample/ItemsSampleStore persist original instanceId/body/revision before writes.
30// Keep the original Player Values operationId for purchase recovery.
31// The initial success may include item references; retained replay may return empty applied/items.
32// Read the current inventory separately. Never reconstruct earlier item references.
33// A failed refresh never authorizes a replacement purchase or a local item grant.
Ouvrir l’exemple SDK complet ↗

Utiliser l’objet enregistré

Importez l’exemple officiel et ses fichiers auxiliaires. Vérifiez l’offre et suivez la séquence avec le joueur actuel. Attendez chaque étape et confirmez l’achat une seule fois. Gardez la requête originale si la réponse est incertaine.

ItemsExample: projectId → ReadOneCatalogPage() → ReviewOffers() → SavePurchaseAfterReview("starter-sword") → RefreshInventory()

Testez votre nouvelle fonctionnalité.

Après enregistrement, le catalogue contient starter_sword. Après l’achat vérifié, l’inventaire actuel contient son instanceId unique.

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

Points de terminaison
  • GET/items
  • GET/items/catalog
  • POST/items/adjust
  • POST/items/equip
  • POST/items/discard
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.