Freunde

Freunde

Verbindet Spieler durch Anfragen und Freundeslisten.

Kostenlos starten

Freunde

Verbindet Spieler durch Anfragen und Freundeslisten.

SDKs und REST

Integriert mit Unity, Godot oder Unreal oder nutzt die REST-Schnittstelle.

Projekt-Dashboard

Richtet die Funktion ein und verwaltet ihre aktuellen Daten in eurem Projekt.

Schnelle Integration

Schnelle Integration

Freunde
Video folgt in Kürze

Freunde, Anfragen und Blockierungen im ausgewählten Projekt.

Schnelle Integration
Unity (C#)
using UnityEngine;
using PM.horizOn.Cloud.Manager;

var userId = UserManager.Instance.CurrentUser.UserId;
var manager = FriendsManager.Instance;
var loaded = await manager.GetFriends(userId);
if (!loaded.IsSuccess) { Debug.LogWarning(loaded.ErrorCode); return; }
Debug.Log(loaded.Data.friendCode); // Public identifier, not a credential.
foreach (var friend in loaded.Data.friends)
    Debug.Log(friend.display.name + ": " + (friend.lastActiveAt ?? "unknown"));

// Invoke only after the player explicitly reviews this snapshot and chooses an action.
async System.Threading.Tasks.Task ApplyReviewed(string action, string targetUserId,
    long expectedRevision, string requestId = null)
{
    var result = action switch {
        "request" => await manager.SendRequest(userId, targetUserId, expectedRevision),
        "accept" => await manager.AcceptRequest(userId, targetUserId, expectedRevision, requestId),
        "decline" => await manager.DeclineRequest(userId, targetUserId, expectedRevision, requestId),
        "cancel" => await manager.CancelRequest(userId, targetUserId, expectedRevision, requestId),
        "remove" => await manager.RemoveFriend(userId, targetUserId, expectedRevision),
        "block" => await manager.BlockPlayer(userId, targetUserId, expectedRevision),
        "unblock" => await manager.UnblockPlayer(userId, targetUserId, expectedRevision),
        _ => throw new System.ArgumentException("Unknown action")
    };
    if (!result.IsSuccess) {
        Debug.LogWarning(result.ErrorCode); // Timeout/409: reload and reconcile; do not repeat automatically.
        return;
    }
    Debug.Log(result.Data.revision); // Replace the whole displayed snapshot.
}
// Accept/decline: original incoming requestId. Cancel: original outgoing requestId.
// Never replace expectedRevision on an uncertain retry. A new request is a new identity.
// FindPlayer(userId, exactUuidOrHCode) never searches names or emails.
// Last login is nullable, never an online flag. No hidden polling timer.

Diese Beispiele nutzen das Unity-SDK (C#) und die REST-API. Godot und Unreal haben dieselben Aufrufe in ihren eigenen SDKs: siehe Quickstart

Häufig gestellte Fragen

Häufig gestellte Fragen

Bereit zur Integration?

Startet noch heute mit horizOn. Free Tier inklusive.