Quick answer: When an achievement (or trophy) won't unlock, the chain from earning it to it appearing fails somewhere: the unlock condition isn't being detected (a logic bug, so the game never tries to unlock it), the platform unlock call isn't made or fails (the game detects the condition but the call to the platform's achievement API fails or is never made), or it's not syncing (the unlock happened but didn't reach the platform, e.g. offline). Check each link, condition detection, the unlock call, and platform sync.

Achievements that don't unlock frustrate players (especially achievement hunters) and look broken. The unlock is a chain, detect the condition, call the platform to unlock, sync with the platform, and a break anywhere means the achievement doesn't pop. Fixing it is about finding which link in that chain fails.

Why Achievements Don't Unlock

Unlocking an achievement requires detecting the player met the condition, calling the platform's achievement API to unlock it, and that unlock syncing with the platform. Breaks: condition not detected, a bug in the condition logic means the game never recognizes the achievement was earned (the condition check is wrong, never triggers, or has an edge case), so it never tries to unlock. Unlock call not made/failing, the game detects the condition but doesn't call the platform unlock API, or the call fails (an API error, the platform service unavailable, an offline state). Not syncing, the unlock was registered but doesn't reach/sync with the platform (offline unlocks not syncing when back online, a sync issue).

So an achievement that won't unlock has a break in detect → unlock-call → sync. Which link fails determines the fix: a logic bug (detection), an API/call issue (unlock), or a sync issue (platform). A specific achievement never unlocking points at its condition logic; achievements generally not unlocking points at the unlock-call/sync mechanism.

How to Diagnose It

Test the achievement's chain. Is the condition being detected, does the game recognize when the achievement is earned (add logging/check the condition logic)? If not, it's a detection/logic bug. If detected, is the platform unlock call being made, and does it succeed (check for API errors, offline state)? If the call fails or isn't made, that's the break. Is it syncing with the platform (does it appear on the platform after unlocking, including after being offline)? Reproduce by meeting the condition and tracing what happens.

Bugnet captures errors and reports with context, so failed achievement-unlock calls (if you capture them) and player reports ('I earned X but it didn't unlock') surface, helping identify whether it's specific achievements (condition logic) or general (the unlock/sync mechanism). Capturing unlock-call failures directly shows when the platform call is erroring, a common cause.

How to Fix It

Fix the broken link. For condition detection, fix the logic so the game correctly recognizes when each achievement is earned (handle the edge cases, ensure the condition triggers when met), so it actually attempts the unlock. For the unlock call, ensure the platform unlock API is called when the condition is met, and handle the call robustly, check for and handle failures (retry, queue for later), including the offline case (queue the unlock and submit it when back online) so a failed/offline call doesn't lose the achievement. For syncing, ensure unlocks (including offline ones) sync with the platform when possible.

A robust approach: detect the condition reliably, call the platform unlock, and if it fails (offline, error), queue and retry so the unlock isn't lost, syncing when connectivity returns. After fixing, verify the achievement unlocks when earned (online and offline-then-online), and appears on the platform. Also consider re-granting achievements players should have earned but didn't due to the bug. Reliable achievement unlocking, robust detection, unlock calls with retry/offline handling, and syncing, is what makes achievements work, which players (especially completionists) care about.

An achievement that won't unlock breaks at detection, the platform call, or sync. Check each link, fix the condition logic, make the unlock call robust (retry, queue offline), and ensure it syncs.