Spelideeën en functies

Je volgende functie

Spelerstatistieken

Meld rondes, kills en records in één sessiebatch, met som, maximum, minimum of de laatste waarde.

SDK: developSpelerssessie vereist
Unity
Illustratie van Spelerstatistieken
Je zichtbare resultaat

Je spel meldt één volledige sessiebatch en toont de huidige tellers en perioden.

Video volgt

Voor deze stap is nog geen video. De handleiding en MCP-opdracht zijn al bruikbaar.

Spelerstatistieken

Hetzelfde project voorbereiden

  1. Kies in het dashboard hetzelfde project als in de configuratie van je spel.

    Spelerstatistieken →
  2. Maak of hergebruik deze testgegevens in het dashboardformulier. Dit zijn voorbeeldwaarden, geen huidige projectgegevens.

    Statistiekdefinities
    kills: mode=sum, reset=none; best_score: mode=max, reset=none

    Som telt elke melding op. Maximum en minimum behouden de uiterste waarde; laatste vervangt deze. Maximum, minimum en laatste beginnen bij de eerste melding. Waarden zijn gehele getallen met teken binnen het veilige bereik.

  3. Sla de gegevens op, laad ze opnieuw en controleer ze vóór het voorbeeld. Behoud andere definities.

Bouw deze functie

Je kunt de handleiding bekijken. Voor uitvoering heb je een actieve projectsleutel nodig. Project voorbereiden

SDK geïnstalleerd, projectconfiguratie geïmporteerd en speler aangemeld.

Dit SDK-voorbeeld gebruikt develop. Controleer of de benodigde API's in je geïnstalleerde SDK bestaan.

Voltooi de Quickstart-verbinding met de bedoelde speler. Roep RunReviewedAction() expliciet aan via een knop of scèneactie. Alleen het bestand openen verstuurt geen verzoek.

C#
Assets/Scripts/StatisticsDemo.cs
horizOn-aanroep
1using PM.horizOn.Cloud.Objects.Network.Requests;
2using UnityEngine;
3using PM.horizOn.Cloud.Core;
4using PM.horizOn.Cloud.Manager;
5​
6// Existing SDK/project configuration and authenticated player session required.
7// Call RunReviewedAction explicitly after reviewing this example and its data.
8// Lees eerst een status en behoud bij herhaling dezelfde operatie-ID en
9// oorspronkelijke batch. Een verlopen of onzeker resultaat vereist
10// controle, nooit automatisch een nieuwe ID.
11// This explicit action reports the shown persisted batch.
12public sealed class StatisticsDemo : MonoBehaviour
13{
14 public async void RunReviewedAction()
15 {
16 var sessionUser = UserManager.Instance.CurrentUser;
17 if (sessionUser == null || !sessionUser.IsValid()) return;
18 var manager = StatisticsManager.Instance;
19 var snapshot = await manager.GetStatistics();
20 if (snapshot == null) { Debug.LogWarning(manager.LastErrorCode); return; }
21 string pendingKey = "horizOn_statistics_pending_" + snapshot.userId;
22 var pending = PlayerPrefs.HasKey(pendingKey)
23 ? JsonUtility.FromJson<UpdateStatisticsRequest>(PlayerPrefs.GetString(pendingKey))
24 : new UpdateStatisticsRequest {
25 userId = snapshot.userId, operationId = manager.CreateOperationId(),
26 updates = new[] { new StatisticUpdate("kills", 3), new StatisticUpdate("best_score", 250) }
27 };
28 string originalJson = JsonUtility.ToJson(pending);
29 PlayerPrefs.SetString(pendingKey, originalJson);
30 PlayerPrefs.Save();
31 var result = await manager.UpdateStatistics(pending.updates, pending.operationId);
32 if (result == null) {
33 // Keep the saved ID and batch. Reconcile OPERATION_EXPIRED before a new logical report.
34 Debug.LogWarning(manager.LastErrorCode);
35 return;
36 }
37 // A late success for O1 must never acknowledge a newer pending O2.
38 if (PlayerPrefs.GetString(pendingKey, null) == originalJson) {
39 PlayerPrefs.DeleteKey(pendingKey);
40 PlayerPrefs.Save();
41 }
42 foreach (var counter in result.values) Debug.Log(counter.key + "=" + counter.value);
43 }
44}
Volledig SDK-voorbeeld openen ↗

Test je nieuwe functie.

Je spel meldt één volledige sessiebatch en toont de huidige tellers en perioden.

Kies in het dashboard hetzelfde project als in de configuratie van je spel.

Eindpunten
  • GET/statistics
  • GET/statistics/definitions
  • POST/statistics
Alle eindpunten in de API-referentie
Onze suggestie voor je volgende stap

Geef elke ronde een topscore.

Sla de score na een ronde op en laat zien wie vooropstaat. Blijf je verbinding en de sessie van de speler gebruiken.