GameMaker Studio · GML
Moeda e compras
O Gamdato vem com uma economia: moedas virtuais que o jogador compra com dinheiro real (via Stripe), e itens que ele adquire gastando essas moedas. Tudo é definido no painel e consumido a partir da extensão.
Defina Moedas e Itens
No painel, defina suas moedas (cada uma com um código) e os itens da loja (cada um com um SKU).
O "code" da moeda é o que você passa para gmda_getCurrencyLeaderboard().
Saldos
Leia os saldos atuais e o seu catálogo de moedas. Leia 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().Comprando Moeda (Recarga)
Inicie um checkout do Stripe para um pacote de moeda e leia topup_started; abra a URL retornada.
gmda_buyPack("coins_500"); // -> topup_started (e.response.url)Gastando em Itens
Compre um item da loja por SKU. Uma chave de idempotência é gerada para você se você a omitir.
gmda_purchase("sword_of_dawn"); // -> purchase_completedPasse sua própria chave de idempotência como segundo argumento para tornar uma repetição segura.
Inventário
Liste os itens que o jogador possui e leia 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).Histórico
Leia o histórico de transações (mais recentes primeiro) e leia ledger_loaded.
gmda_getLedger(); // -> ledger_loaded
gmda_getLedger(50, 0); // limite, 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).Ranking de Moeda
Um ranking ordenado pelo saldo de moeda. Leia 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
}Concedendo Moeda
Aplique uma concessão definida pelo servidor por chave de motivo (ex.: a recompensa de uma missão) e leia grant_completed.
gmda_grantCurrency("daily_quest"); // -> grant_completedAs concessões são definidas no painel; o cliente apenas as referencia pela chave de motivo.