Идеи и функции для игры

Ваша следующая функция

Рынок

Передайте оригинальный предмет от одного игрока другому через торговлю.

SDK: developТребуется сессия игрока
Unity
Иллюстрация функции «Рынок»
Видимый результат

Покупатель получает тот же предмет, а продавец получает согласованную цену за вычетом настроенной комиссии.

Видео появится позже

Для этого шага пока нет видео. Инструкция и запрос MCP уже доступны.

Рынок

Подготовьте тот же проект

  1. Выберите в панели тот же проект, что указан в конфигурации игры.

    Рынок →
  2. Для первого запроса дополнительное определение не нужно. Пустой результат допустим, пока нет соответствующих игровых данных.

    Задайте валюту, комиссию и хотя бы одно активное правило цены.

    Используйте двух вошедших в систему игроков одного проекта. Настройте валюту, комиссию и правило цены, выставьте неэкипированный предмет и явно подтвердите покупку.

    Предметы →Значения игрока →

Добавьте эту функцию

Вы можете просмотреть руководство. Для выполнения нужен активный ключ проекта. Подготовить проект

SDK установлен, конфигурация проекта импортирована, игрок вошёл в систему.

Этот пример SDK использует develop. Проверьте наличие нужных API в установленном SDK.

Завершите подключение нужного игрока по быстрому старту. Вызовите ReadListing(listingId) явной кнопкой или действием сцены. Открытие файла само по себе запрос не отправляет.

C#
Assets/Scripts/MarketplaceDemo.cs
Вызов 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}
Открыть полный пример SDK ↗

Проверка с двумя игроками

Используйте двух вошедших в систему игроков одного проекта. Настройте валюту, комиссию и правило цены, выставьте неэкипированный предмет и явно подтвердите покупку.

Используйте уже открытую сессию. Если покупка не подтверждена, сохраните и повторите тот же исходный запрос, затем обновите инвентарь и балансы.

Отмена сохраняет исходный предмет до получения владельцем. Восстановление доступно только после удаления предыдущего владельца.

Объявления и защита от повторного выполнения хранятся в проекте один раз. Игроки сохраняют ссылки и ограниченные данные состояния.

Проверьте новую функцию.

Покупатель получает тот же предмет, а продавец получает согласованную цену за вычетом настроенной комиссии.

Выберите в панели тот же проект, что указан в конфигурации игры.

Эндпоинты
  • 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
Все эндпоинты в справочнике API
Наше предложение для следующего шага

Добавьте рекорд для каждого раунда.

Сохраняйте результат после раунда и показывайте лидеров. Продолжайте использовать подключение и сессию игрока.