GameMaker Studio · GML
Monedas y compras
Gamdato incluye una economia: monedas virtuales que el jugador compra con dinero real (via Stripe), y articulos que adquiere gastando esas monedas. Todo se define en el panel y se consume desde la extension.
Definir Monedas y Articulos
En el panel, define tus monedas (cada una con un codigo) y los articulos de la tienda (cada uno con un SKU).
El "code" de la moneda es lo que pasas a gmda_getCurrencyLeaderboard().
Saldos
Lee los saldos actuales y tu catalogo de monedas. Lee 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().Comprar Moneda (Recarga)
Inicia un checkout de Stripe para un paquete de moneda y lee topup_started; abre la URL retornada.
gmda_buyPack("coins_500"); // -> topup_started (e.response.url)Gastar en Articulos
Compra un articulo de la tienda por su SKU. Se genera una clave de idempotencia por ti si la omites.
gmda_purchase("sword_of_dawn"); // -> purchase_completedPasa tu propia clave de idempotencia como segundo argumento para que un reintento sea seguro.
Inventario
Lista los articulos que posee el jugador y lee 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).Libro de Movimientos
Lee el historial de transacciones (mas recientes primero) y lee ledger_loaded.
gmda_getLedger(); // -> ledger_loaded
gmda_getLedger(50, 0); // limite, desplazamiento# 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 Moneda
Una tabla de clasificacion ordenada por saldo de moneda. Lee 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
}Otorgar Moneda
Aplica un otorgamiento definido en el servidor por su clave de razon (p. ej. una recompensa de mision) y lee grant_completed.
gmda_grantCurrency("daily_quest"); // -> grant_completedLos otorgamientos se definen en el panel; el cliente solo los referencia por su clave de razon.