Idee e funzionalità per il gioco

La tua prossima funzionalità

Oggetti condivisi

Condividi dati di gioco opachi tramite criteri di accesso espliciti, query indicizzate e revisioni originali.

SDK: developSessione del giocatore richiesta
Unity
Illustrazione di Oggetti condivisi
Il risultato visibile

Leggi l’utilizzo del proprietario prima di creare. La creazione usa la revisione di tale utilizzo; aggiornamento ed eliminazione usano la revisione originale dell’oggetto. Proprietario, gruppo e scadenza fissata alla creazione restano invariati.

Video in arrivo

Questo passaggio non ha ancora un video. La guida e la richiesta MCP sono già utilizzabili.

Oggetti condivisi

Preparare lo stesso progetto

  1. Seleziona nella dashboard lo stesso progetto presente nella configurazione del gioco.

    Oggetti condivisi →
  2. Create o riutilizzate queste voci di prova nel modulo del pannello. Sono valori di esempio, non dati attuali.

    Chiave
    bases
    Criterio di lettura
    all
    Criterio di scrittura
    owner
    Posizione nella griglia
    true
    Byte massimi per oggetto
    1024
    Oggetti massimi per proprietario
    1

    Le chiavi restano riservate. Dopo il primo utilizzo, criteri, schema di ricerca, TTL e posizione sono immutabili. L’archiviazione blocca nuove scritture; lettura ed eliminazione restano disponibili.

    Questo primo esempio legge dati. Non crea gruppi, partite o oggetti. Un elenco vuoto è una prima risposta valida.

  3. Salvate, ricaricate e verificate le voci prima dell’esempio. Conservate le altre definizioni.

Integra questa funzionalità

Puoi consultare la guida. Per eseguirla serve una chiave di progetto attiva. Prepara il progetto

SDK installato, configurazione del progetto importata e giocatore connesso.

Questo esempio del SDK usa develop. Verifica che le API necessarie siano disponibili nel SDK installato.

Completate la connessione rapida con il giocatore scelto. Chiamate ReadWorldMap() tramite un pulsante o un’azione esplicita della scena. Aprire il file non invia richieste.

C#
Assets/Scripts/SharedObjectsDemo.cs
Chiamata horizOn
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}
Aprire l’esempio SDK completo ↗

Mappa del mondo

Memorizza le basi dei proprietari come byte opachi. Interroga esplicitamente un rettangolo configurato della griglia a coordinate intere; aggiorna con la revisione originale dell’oggetto. La posizione è un indice di query e non convalida le regole del gioco.

PvP asincrono

Scegli un avversario con una query di interi limitata e non uniforme. Carica i suoi byte di difesa e convalida la partita con un’esecuzione Validated Actions controllata dal server. Solo un backend affidabile decide l’esito e invia una notifica Inbox immutabile.

Usa le sessioni giocatore corrispondenti, un intento originale di scrittura conservato durevolmente e letture esplicite e limitate. La convalida affidabile dell’esito e la consegna Inbox spettano al backend del gioco; le Account Keys non devono mai essere incluse nelle build del gioco.

Prova la tua nuova funzionalità.

Leggi l’utilizzo del proprietario prima di creare. La creazione usa la revisione di tale utilizzo; aggiornamento ed eliminazione usano la revisione originale dell’oggetto. Proprietario, gruppo e scadenza fissata alla creazione restano invariati.

Seleziona nella dashboard lo stesso progetto presente nella configurazione del gioco.

Endpoint dell'API
  • 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}
Tutti gli endpoint nel riferimento API
Il nostro suggerimento per il prossimo passo

Dai un record a ogni partita.

Salva il punteggio dopo una partita e mostra chi è in testa. Continua a usare la connessione e la sessione del giocatore.