Spelideeën en functies

Je volgende functie

Gedeelde objecten

Deel niet-geïnterpreteerde spelgegevens via expliciet toegangsbeleid, geïndexeerde query’s en oorspronkelijke revisies.

SDK: developSpelerssessie vereist
Unity
Illustratie van Gedeelde objecten
Je zichtbare resultaat

Vraag vóór het maken het gebruik van de eigenaar op. Maken gebruikt de revisie van dat gebruik; bijwerken en verwijderen gebruiken de oorspronkelijke objectrevisie. Eigenaar, groep en de bij het maken ingestelde vervaltijd blijven ongewijzigd.

Video volgt

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

Gedeelde objecten

Hetzelfde project voorbereiden

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

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

    Sleutel
    bases
    Leesbeleid
    all
    Schrijfbeleid
    owner
    Rasterpositie
    true
    Maximumaantal bytes per object
    1024
    Maximumaantal objecten per eigenaar
    1

    Sleutels blijven gereserveerd. Na het eerste gebruik zijn beleid, zoekschema, TTL en positie onveranderlijk. Archiveren blokkeert nieuwe schrijfbewerkingen; lezen en verwijderen blijven mogelijk.

    Dit eerste voorbeeld leest gegevens. Het maakt geen groep, wedstrijd of object. Een lege lijst is een geldig eerste antwoord.

  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 ReadWorldMap() expliciet aan via een knop of scèneactie. Alleen het bestand openen verstuurt geen verzoek.

C#
Assets/Scripts/SharedObjectsDemo.cs
horizOn-aanroep
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}
Volledig SDK-voorbeeld openen ↗

Wereldkaart

Sla bases van eigenaren op als niet-geïnterpreteerde bytes. Vraag expliciet een geconfigureerde rasterrechthoek met gehele coördinaten op; werk bij met de oorspronkelijke objectrevisie. Positie dient als query-index en valideert geen spelregels.

Asynchrone PvP

Kies een tegenstander via een begrensde, niet-uniforme integerquery. Laad diens verdedigingsbytes en valideer de partij met een door de server beheerde Validated Actions-run. Alleen een vertrouwde backend bepaalt de uitkomst en verstuurt een onveranderlijk Inbox-bericht.

Gebruik bijpassende spelersessies, een duurzaam bewaarde oorspronkelijke schrijfintentie en expliciete, begrensde leesbewerkingen. Betrouwbare resultaatvalidatie en Inbox-bezorging horen op de backend van je spel; Account Keys horen nooit in spelbuilds.

Test je nieuwe functie.

Vraag vóór het maken het gebruik van de eigenaar op. Maken gebruikt de revisie van dat gebruik; bijwerken en verwijderen gebruiken de oorspronkelijke objectrevisie. Eigenaar, groep en de bij het maken ingestelde vervaltijd blijven ongewijzigd.

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

Eindpunten
  • 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 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.