Ideias e funcionalidades do jogo

A tua próxima funcionalidade

Mercado

Troque um item original entre dois jogadores.

SDK: developRequer uma sessão de jogador
Unity
Ilustração de Mercado
O resultado visível

O comprador recebe o mesmo item e o vendedor recebe o preço combinado menos a taxa configurada.

Vídeo em breve

Este passo ainda não tem vídeo. O guia e o pedido MCP já podem ser usados.

Mercado

Preparar o mesmo projeto

  1. Seleciona no painel o mesmo projeto que na configuração do teu jogo.

    Mercado →
  2. O primeiro pedido não exige outra definição. Um resultado vazio é válido enquanto faltarem dados do jogo.

    Definam uma moeda, uma taxa e pelo menos uma regra de preço ativa.

    Use dois jogadores autenticados no mesmo projeto. Configure a moeda, a taxa e a regra de preço, anuncie um item não equipado e confirme explicitamente a compra.

    Itens →Valores do jogador →

Integra esta funcionalidade

Podes consultar o guia. Para o executar, precisas de uma chave de projeto ativa. Preparar o projeto

SDK instalado, configuração do projeto importada e jogador com sessão iniciada.

Este exemplo do SDK usa develop. Verifica se as API necessárias existem no SDK instalado.

Concluam a ligação do início rápido com o jogador escolhido. Chamem ReadListing(listingId) através de um botão ou ação explícita da cena. Abrir o ficheiro não envia pedidos.

C#
Assets/Scripts/MarketplaceDemo.cs
Chamada ao 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 o exemplo SDK completo ↗

Testar com dois jogadores

Use dois jogadores autenticados no mesmo projeto. Configure a moeda, a taxa e a regra de preço, anuncie um item não equipado e confirme explicitamente a compra.

Use a sessão já autenticada. Após uma compra não confirmada, guarde e repita o mesmo pedido original e atualize depois o inventário e os saldos.

O cancelamento protege o item original até que seu proprietário o resgate. A recuperação só está disponível se o proprietário anterior tiver sido excluído.

Os anúncios e a proteção contra repetições são armazenados uma única vez no projeto. Os jogadores mantêm referências e dados de estado limitados.

Testa a tua nova funcionalidade.

O comprador recebe o mesmo item e o vendedor recebe o preço combinado menos a taxa configurada.

Seleciona no painel o mesmo projeto que na configuração do teu jogo.

Endpoints da 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 os endpoints na referência da API
A nossa sugestão para o próximo passo

Dá uma pontuação máxima a cada partida.

Guarda a pontuação depois de uma partida e mostra quem está à frente. Continua a usar a ligação e a sessão do jogador.