Ideas y funciones para tu juego

Tu próxima función

Objetos compartidos

Comparte datos opacos del juego mediante políticas de acceso explícitas, consultas indexadas y revisiones originales.

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

Consulta el uso del propietario antes de crear. La creación utiliza la revisión de ese uso; la actualización y la eliminación utilizan la revisión original del objeto. El propietario, el grupo y la caducidad fijada al crear no cambian.

Vídeo próximamente

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

Objetos compartidos

Preparar el mismo proyecto

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

    Objetos compartidos →
  2. Cread o reutilizad estas entradas de prueba en el formulario del panel. Son valores de ejemplo, no datos actuales.

    Clave
    bases
    Política de lectura
    all
    Política de escritura
    owner
    Posición en la cuadrícula
    true
    Máximo de bytes por objeto
    1024
    Máximo de objetos por propietario
    1

    Las claves siguen reservadas. Tras el primer uso, las políticas, el esquema de búsqueda, el TTL y la posición son inmutables. Archivar bloquea nuevas escrituras; la lectura y la eliminación siguen disponibles.

    Este primer ejemplo lee datos. No crea grupos, partidas ni objetos. Una lista vacía es una primera respuesta válida.

  3. Guardad, recargad y verificad las entradas antes del ejemplo. Conservad las demás definiciones.

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 ReadWorldMap() mediante un botón o acción de escena explícita. Abrir el archivo no envía peticiones.

C#
Assets/Scripts/SharedObjectsDemo.cs
Llamada a 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}
Abrir el ejemplo completo del SDK ↗

Mapa del mundo

Almacena las bases de los propietarios como bytes opacos. Consulta explícitamente un rectángulo configurado de cuadrícula con coordenadas enteras; actualiza con la revisión original del objeto. La posición es un índice de consulta y no valida reglas del juego.

PvP asíncrono

Elige un rival mediante una consulta de enteros acotada y no uniforme. Carga sus bytes de defensa y valida la partida con una ejecución de Validated Actions controlada por el servidor. Solo un backend de confianza decide el resultado y envía una notificación inmutable de Inbox.

Usa las sesiones de jugador correspondientes, una intención original de escritura almacenada de forma duradera y lecturas explícitas y acotadas. La validación fiable del resultado y la entrega de Inbox corresponden al backend del juego; Account Keys nunca deben incluirse en las compilaciones del juego.

Prueba tu nueva función.

Consulta el uso del propietario antes de crear. La creación utiliza la revisión de ese uso; la actualización y la eliminación utilizan la revisión original del objeto. El propietario, el grupo y la caducidad fijada al crear no cambian.

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

Endpoints de la 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}
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.