Ideas y funciones para tu juego

Tu próxima función

Mercado

Intercambia un objeto original entre dos jugadores.

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

El comprador recibe el mismo objeto y el vendedor recibe el precio acordado menos la comisión configurada.

Vídeo próximamente

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

Mercado

Preparar el mismo proyecto

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

    Mercado →
  2. La primera petición no necesita otra definición. Un resultado vacío es válido mientras no existan datos del juego.

    Configurad una moneda, una comisión y al menos una regla de precio activa.

    Usa dos jugadores con sesión iniciada en el mismo proyecto. Configura la moneda, la comisión y la regla de precios, publica un objeto sin equipar y confirma expresamente su compra.

    Objetos →Valores del jugador →

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

C#
Assets/Scripts/MarketplaceDemo.cs
Llamada a horizOn
1using System.Threading.Tasks;
2using UnityEngine;
3using PM.horizOn.Cloud.Examples.Features;
4using PM.horizOn.Cloud.Objects.Network.Responses;
5​
6public class MarketplaceDemo : MonoBehaviour
7{
8 // Import the SDK Examples sample. Bind its screen to the signed-in player
9 // and set the stable projectId in the Inspector. Never use an Account Key.
10 public MarketplaceExample screen;
11​
12 public Task<MarketplaceResult<MarketplaceListingView>> ReadListing(string listingId)
13 => MarketplaceQuickstart.ReadOneListing(screen, listingId);
14​
15 // Wire only to the player's Buy confirmation after displaying ReadListing.
16 public Task<bool> ConfirmPurchase(string listingId)
17 => MarketplaceQuickstart.BuyReviewedListing(screen, listingId);
18​
19 // false/timeout does not prove nonexecution. Use screen.RetryPending() or
20 // screen.RecoverOriginalOperation(); never replace the unresolved original.
21 // The sample refreshes Inventory, Values and Marketplace before acknowledgement.
22 // Its native file journal rejects WebGL writes; use a durable browser persister.
23}
Abrir el ejemplo completo del SDK ↗

Probar con dos jugadores

Usa dos jugadores con sesión iniciada en el mismo proyecto. Configura la moneda, la comisión y la regla de precios, publica un objeto sin equipar y confirma expresamente su compra.

Usa la sesión iniciada existente. Tras una compra sin confirmar, conserva y reintenta la misma solicitud original y actualiza después el inventario y los saldos.

La cancelación protege el objeto original hasta que su propietario lo recoja. La recuperación solo está disponible si se eliminó al propietario anterior.

Los anuncios y la protección contra repeticiones se almacenan una sola vez en el proyecto. Los jugadores conservan referencias y datos de estado limitados.

Prueba tu nueva función.

El comprador recibe el mismo objeto y el vendedor recibe el precio acordado menos la comisión configurada.

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

Endpoints de la API
  • GET/marketplace/limits
  • GET/marketplace/rules
  • GET/marketplace
  • GET/marketplace/listings
  • GET/marketplace/listings/{listingId}
  • POST/marketplace/listings
  • POST/marketplace/listings/{listingId}/buy
  • POST/marketplace/listings/{listingId}/cancel
  • GET/marketplace/operations/{operationId}
  • POST/marketplace/listings/{listingId}/retry-return
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.