GameMaker Studio · GML
Валюта и покупки
Gamdato поставляется с экономикой: виртуальные валюты, которые игрок покупает за реальные деньги (через Stripe), и предметы, которые он приобретает, тратя эти валюты. Всё определяется в панели и используется из расширения.
Определите валюты и предметы
В панели определите ваши валюты (каждую с кодом) и предметы магазина (каждый с SKU).
«code» валюты это то, что вы передаёте в gmda_getCurrencyLeaderboard().
Балансы
Прочитайте текущие балансы и каталог ваших валют. Читайте balances_loaded.
gmda_getBalances(); // -> balances_loaded# balances: Array, each:
{
"currency_id": String,
"balance": int
}
# currencies: Array, the catalog you defined in the panel:
{
"id": String,
"code": String,
"display_name": String,
"icon_url": String,
"is_active": bool
}
# "code" is the currency code you pass to get_currency_leaderboard().Покупка валюты (пополнение)
Запустите оплату Stripe для пакета валюты и прочитайте topup_started; откройте возвращённый URL.
gmda_buyPack("coins_500"); // -> topup_started (e.response.url)Траты на предметы
Купите предмет магазина по SKU. Ключ идемпотентности генерируется за вас, если вы его опустите.
gmda_purchase("sword_of_dawn"); // -> purchase_completedПередайте свой собственный ключ идемпотентности вторым аргументом, чтобы сделать повтор безопасным.
Инвентарь
Получите список предметов, которыми владеет игрок, и прочитайте inventory_loaded.
gmda_getInventory(); // -> inventory_loaded# items: Array, each owned item:
{
"item_id": String,
"source": String,
"acquired_at": String,
"metadata": Dictionary
}
# Rows also include internal ids (id, player_id, game_id).Журнал
Прочитайте историю транзакций (сначала новые) и прочитайте ledger_loaded.
gmda_getLedger(); // -> ledger_loaded
gmda_getLedger(50, 0); // limit, offset# entries: Array, newest first:
{
"id": String,
"currency_id": String,
"delta": int,
"balance_after": int,
"op_type": String,
"created_at": String
}
# Rows also include internal ids/metadata (player_id, game_id, ref_kind, ref_value, idempotency_key, metadata).Рейтинг по валюте
Таблица лидеров, упорядоченная по балансу валюты. Читайте currency_leaderboard_loaded.
gmda_getCurrencyLeaderboard("gold"); // -> currency_leaderboard_loaded# entries: Array, ordered by balance, highest first:
{
"rank": int,
"player_id": String,
"player_name": String,
"balance": int
}Начисление валюты
Примените определённое на сервере начисление по ключу причины (например, награду за квест) и прочитайте grant_completed.
gmda_grantCurrency("daily_quest"); // -> grant_completedНачисления определяются в панели; клиент лишь ссылается на них по ключу причины.