Ideas y funciones para tu juego

Tu próxima función

Amigos

Amigos, solicitudes y bloqueos del proyecto seleccionado.

SDK: developRequiere una sesión de jugador
Unity
Ilustración de Amigos
El resultado visible

Tras un tiempo de espera o conflicto, recarga y revisa la intención. No reintentes automáticamente con otra revisión.

Vídeo próximamente

Este paso aún no tiene vídeo. La guía y la solicitud MCP ya se pueden utilizar.

Amigos

Preparar el mismo proyecto

  1. Selecciona en el panel el mismo proyecto que en la configuración de tu juego.

    Amigos →
  2. La primera petición no necesita otra definición. Un resultado vacío es válido mientras no existan datos del juego.

    Usad dos sesiones distintas en el mismo proyecto. Copiad el UUID exacto del otro jugador desde la gestión de usuarios.

    Usa un UUID exacto o código H canónico. No se aceptan nombres ni correos.

    Solo consulta; únicamente la sesión del propio jugador cambia las relaciones.

Implementa esta función

Puedes consultar la guía. Para ejecutarla necesitas una clave de proyecto activa. Preparar el proyecto

SDK instalado, configuración del proyecto importada y jugador conectado.

Este ejemplo del SDK usa develop. Comprueba si las API necesarias están disponibles en el SDK instalado.

Completad la conexión de inicio rápido con el jugador elegido. Llamad a RunReviewedAction() mediante un botón o acción de escena explícita. Abrir el archivo no envía peticiones.

C#
Assets/Scripts/FriendsDemo.cs
Llamada a horizOn
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// Tras un tiempo de espera o conflicto, recarga y revisa la intención. No
8// reintentes automáticamente con otra revisión.
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}
Abrir el ejemplo completo del SDK ↗

Prueba tu nueva función.

Tras un tiempo de espera o conflicto, recarga y revisa la intención. No reintentes automáticamente con otra revisión.

Selecciona en el panel el mismo proyecto que en la configuración de tu juego.

Endpoints de la API
  • 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
Todos los endpoints en la referencia de la API
Nuestra sugerencia para el siguiente paso

Dale una puntuación máxima a cada partida.

Guarda la puntuación después de una partida y muestra quién va primero. Sigue usando tu conexión y la sesión del jugador.