Spelideeën en functies

Je volgende functie

Vrienden

Vrienden, verzoeken en blokkades in het gekozen project.

SDK: developSpelerssessie vereist
Unity
Illustratie van Vrienden
Je zichtbare resultaat

Ververs na een time-out of conflict en beoordeel de bedoeling. Herhaal nooit automatisch met een nieuwe revisie.

Video volgt

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

Vrienden

Hetzelfde project voorbereiden

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

    Vrienden →
  2. Voor het eerste verzoek is geen extra definitie nodig. Een leeg resultaat is geldig zolang bijpassende spelgegevens ontbreken.

    Gebruik twee afzonderlijke spelersessies in hetzelfde project. Kopieer de exacte UUID van de andere speler uit gebruikersbeheer.

    Gebruik een exacte UUID of canonieke H-code. Namen en e-mails zijn niet toegestaan.

    Alleen bekijken; uitsluitend de eigen spelerssessie wijzigt relaties.

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/FriendsDemo.cs
horizOn-aanroep
1using UnityEngine;
2using PM.horizOn.Cloud.Core;
3using PM.horizOn.Cloud.Manager;
4​
5// Existing SDK/project configuration and authenticated player session required.
6// Call RunReviewedAction explicitly after reviewing this example and its data.
7// Ververs na een time-out of conflict en beoordeel de bedoeling. Herhaal
8// nooit automatisch met een nieuwe revisie.
9public sealed class FriendsDemo : MonoBehaviour
10{
11 public async void RunReviewedAction()
12 {
13 var sessionUser = UserManager.Instance.CurrentUser;
14 if (sessionUser == null || !sessionUser.IsValid()) return;
15 var userId = UserManager.Instance.CurrentUser.UserId;
16 var manager = FriendsManager.Instance;
17 var loaded = await manager.GetFriends(userId);
18 if (!loaded.IsSuccess) { Debug.LogWarning(loaded.ErrorCode); return; }
19 Debug.Log(loaded.Data.friendCode); // Public identifier, not a credential.
20 foreach (var friend in loaded.Data.friends)
21 Debug.Log(friend.display.name + ": " + (friend.lastActiveAt ?? "unknown"));
22​
23 // Invoke only after the player explicitly reviews this snapshot and chooses an action.
24 async System.Threading.Tasks.Task ApplyReviewed(string action, string targetUserId,
25 long expectedRevision, string requestId = null)
26 {
27 var result = action switch {
28 "request" => await manager.SendRequest(userId, targetUserId, expectedRevision),
29 "accept" => await manager.AcceptRequest(userId, targetUserId, expectedRevision, requestId),
30 "decline" => await manager.DeclineRequest(userId, targetUserId, expectedRevision, requestId),
31 "cancel" => await manager.CancelRequest(userId, targetUserId, expectedRevision, requestId),
32 "remove" => await manager.RemoveFriend(userId, targetUserId, expectedRevision),
33 "block" => await manager.BlockPlayer(userId, targetUserId, expectedRevision),
34 "unblock" => await manager.UnblockPlayer(userId, targetUserId, expectedRevision),
35 _ => throw new System.ArgumentException("Unknown action")
36 };
37 if (!result.IsSuccess) {
38 Debug.LogWarning(result.ErrorCode); // Timeout/409: reload and reconcile; do not repeat automatically.
39 return;
40 }
41 Debug.Log(result.Data.revision); // Replace the whole displayed snapshot.
42 }
43 // Accept/decline: original incoming requestId. Cancel: original outgoing requestId.
44 // Never replace expectedRevision on an uncertain retry. A new request is a new identity.
45 // FindPlayer(userId, exactUuidOrHCode) never searches names or emails.
46 // Last login is nullable, never an online flag. No hidden polling timer.
47 }
48}
Volledig SDK-voorbeeld openen ↗

Test je nieuwe functie.

Ververs na een time-out of conflict en beoordeel de bedoeling. Herhaal nooit automatisch met een nieuwe revisie.

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

Eindpunten
  • GET/friends
  • GET/friends/find
  • POST/friends/request
  • POST/friends/accept
  • POST/friends/decline
  • POST/friends/cancel
  • POST/friends/remove
  • POST/friends/block
  • POST/friends/unblock
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.