Spielideen & Features

Euer nächstes Feature

Gemeinsame Objekte

Teilt uninterpretierte Spieldaten mit expliziten Zugriffsrichtlinien, indizierten Abfragen und ursprünglichen Revisionen.

SDK: developSpielersession erforderlich
Unity
Illustration für Gemeinsame Objekte
Euer sichtbares Ergebnis

Lest vor dem Erstellen die Belegung des Eigentümers. Beim Erstellen wird deren Revision verwendet; Aktualisieren und Löschen verwenden die ursprüngliche Objektrevision. Eigentümer, Gruppe und der beim Erstellen festgelegte Ablaufzeitpunkt bleiben unverändert.

Video folgt

Für diesen Schritt fehlt noch das Video. Die Anleitung und der MCP-Auftrag sind bereits nutzbar.

Gemeinsame Objekte

Dasselbe Projekt vorbereiten

  1. Wählt im Dashboard dasselbe Projekt wie in eurer Spielkonfiguration.

    Gemeinsame Objekte →
  2. Erstellt diese Testeinträge im Dashboard-Formular oder verwendet passende vorhandene Einträge. Die Werte sind Beispieldaten, kein aktueller Projektstand.

    Schlüssel
    bases
    Leserichtlinie
    all
    Schreibrichtlinie
    owner
    Rasterposition
    true
    Maximale Bytes pro Objekt
    1024
    Maximale Objekte pro Eigentümer
    1

    Schlüssel bleiben reserviert. Nach der ersten Verwendung sind Richtlinien, Suchschema, TTL und Position unveränderlich. Archivieren sperrt neue Schreibvorgänge; Lesen und Löschen bleiben möglich.

    Dieses erste Beispiel liest Daten. Es erstellt keine Gruppe, keinen Match und kein Objekt. Eine leere Liste ist eine gültige erste Antwort.

  3. Speichert die Einträge, ladet sie neu und prüft sie vor dem Beispiel. Erhaltet andere vorhandene Definitionen.

Feature einbauen

Ihr könnt die Anleitung vorab ansehen. Zum Ausführen braucht ihr einen aktiven Projekt-Key. Projekt vorbereiten

SDK installiert, Projekt-Konfiguration importiert und Spieler angemeldet.

Dieses SDK-Beispiel nutzt develop. Prüft, ob die nötigen APIs in eurem installierten SDK verfügbar sind.

Verbindet zuerst den vorgesehenen Spieler über den Schnellstart. Ruft ReadWorldMap() ausdrücklich über einen Button oder eine Szenenaktion auf. Allein das Öffnen der Datei sendet keine Anfrage.

C#
Assets/Scripts/SharedObjectsDemo.cs
horizOn-Aufruf
1using UnityEngine;
2using PM.horizOn.Cloud.Manager;
3using PM.horizOn.Cloud.Objects.Network.Responses;
4​
5public sealed class SharedObjectsDemo : MonoBehaviour
6{
7 // Initialize/connect and restore the existing player in the Quickstart first.
8 // Wire an explicit player action; do not add this read to a startup/poll loop.
9 public async void ReadWorldMap()
10 {
11 var user = UserManager.Instance.CurrentUser;
12 if (user == null || !user.IsValid()) return;
13 var result = await SharedObjectsManager.Instance.QueryObjects(user.UserId, "bases", new SharedQuery {
14 mode = SharedQueryMode.Rectangle,
15 minX = -10, maxX = 10, minY = -10, maxY = 10, limit = 20
16 });
17 if (!result.IsSuccess) {
18 Debug.LogWarning(result.ErrorCode);
19 return;
20 }
21 foreach (var item in result.Data.objects) {
22 byte[] bytes = item.data; // Opaque game bytes; validate your game's own format.
23 Debug.Log($"Object {item.id}: {bytes.Length} bytes");
24 }
25 // Respect result.Data.pollAfterSeconds; no automatic poll or next-page loop.
26 // Keep exact dataBase64 and typed search metadata unchanged on metadata edits.
27 // Persist original target, bytes and If-Match revision before a single mutation.
28 // Unknown CREATE: explicit GetRecoveryUsage/QueryRecoveryObjects; never resend.
29 // Generic/defense/ranked VA starts share one start/submit lease; do not replace a pending run.
30 // Trusted validation and durable ordinary Inbox delivery belong to the game backend.
31 }
32}
Vollständiges SDK-Beispiel öffnen ↗

Weltkarte

Speichert die Basen der Eigentümer als uninterpretierte Bytes. Fragt ein konfiguriertes Rasterrechteck mit ganzzahligen Koordinaten ausdrücklich ab; aktualisiert mit der ursprünglichen Objektrevision. Die Position dient als Abfrageindex und prüft keine Spielregeln.

Asynchrones PvP

Wählt einen Gegner über eine begrenzte, nicht gleichverteilte Ganzzahlabfrage. Ladet dessen Verteidigungsbytes und validiert das Spiel mit einem serververwalteten Validated Actions-Lauf. Nur ein vertrauenswürdiges Backend entscheidet das Ergebnis und sendet eine unveränderliche Inbox-Mitteilung.

Verwendet passende Spielersitzungen, eine dauerhaft gespeicherte ursprüngliche Schreibabsicht und ausdrücklich angeforderte, begrenzte Lesevorgänge. Vertrauenswürdige Ergebnisprüfung und Inbox-Zustellung gehören auf euer Spiel-Backend; Account Keys gehören niemals in Spiel-Builds.

Testet euer neues Feature.

Lest vor dem Erstellen die Belegung des Eigentümers. Beim Erstellen wird deren Revision verwendet; Aktualisieren und Löschen verwenden die ursprüngliche Objektrevision. Eigentümer, Gruppe und der beim Erstellen festgelegte Ablaufzeitpunkt bleiben unverändert.

Wählt im Dashboard dasselbe Projekt wie in eurer Spielkonfiguration.

Endpunkte
  • GET/shared-objects/collections
  • GET/shared-objects/{collection}/usage
  • GET/shared-objects/{collection}/objects/{objectId}
  • POST/shared-objects/{collection}/query
  • POST/shared-objects/{collection}/objects
  • PUT/shared-objects/{collection}/objects/{objectId}
  • DELETE/shared-objects/{collection}/objects/{objectId}
Alle Endpunkte in der API-Referenz
Unser Vorschlag für den nächsten Schritt

Gebt jeder Runde einen Highscore.

Speichert den Score nach dem Spiel und zeigt, wer vorne liegt. Eure Verbindung und Spielersession nutzt ihr weiter.