GameMaker Studio · GML
Achievements
Achievements you define in the panel and unlock from the game. Each has a key; hidden ones stay masked until the player unlocks them.
Define Achievements
Create achievements in the panel, each with a key, name, description, icon, points, and an optional hidden flag.
Save each achievement key; you pass it to the check and unlock calls.
Listing Achievements
Pull the full catalog with the unlock state for the current player and read achievements_loaded.
gmda_listAchievements(); // -> achievements_loaded (e.response.achievements)# achievements_loaded -> achievements: Array, each:
{
"achievement_key": String,
"name": String,
"description": String,
"icon_url": String,
"points": int,
"is_hidden": bool,
"sort_order": int,
"unlocked": bool,
"unlocked_at": String # null while locked
}Unlocking
Unlock an achievement for the current player and read achievement_unlocked.
gmda_unlockAchievement("first_blood"); // -> achievement_unlocked// achievement_unlocked -> e.response:
{ "success": true, "already_unlocked": false }
// achievement_checked -> e.response:
{ "unlocked": true, "unlocked_at": "2026-06-07T18:00:00.000Z" } // null while lockedUnlocking an already-unlocked achievement is safe; the event reports already_unlocked.
Checking One
Check a single achievement state, or pull its panel definition.
gmda_checkAchievement("first_blood"); // -> achievement_checked (e.response.unlocked)
gmda_getAchievementInfo("first_blood"); // -> achievement_info_loaded