一起玩
PlayDrop 遊戲的成就
在 catalogue.json 中宣告附圖示的標準成就與累進成就,並用 sdk.achievements 解鎖成就及回報進度。
成就標記遊戲中的目標,附有玩家在 PlayDrop 上看到的圖示與說明。訪客和已登入的玩家都能使用。
宣告成就
json
{
"achievements": [
{ "key": "first-win", "displayName": "First flag", "description": "Reach the flag once",
"kind": "STANDARD", "icon": "achievements/first-win.png" },
{ "key": "collector", "displayName": "Collector", "description": "Collect 100 stars",
"kind": "INCREMENTAL", "maxProgress": 100, "icon": "achievements/collector.png" },
{ "key": "secret-room", "displayName": "Secret room", "description": "Find the hidden room",
"kind": "STANDARD", "hidden": true, "icon": "achievements/secret-room.png" }
]
}key的格式與排行榜的鍵相同。kind為STANDARD(解鎖一次)或INCREMENTAL(進度達到maxProgress時解鎖,maxProgress為正整數)。icon是套件中的 PNG。請使用清楚的正方形圖片,縮小後仍能看清楚。hidden: true會在解鎖前隱藏名稱與說明。
已發布的鍵無法移除,kind、maxProgress 和 hidden 也無法變更。要停用成就,請設定 "status": "RETIRED"。
解鎖並回報進度
js
await sdk.achievements.unlock("first-win");
await sdk.achievements.setProgressAtLeast("collector", starsCollected);
const { achievements } = await sdk.achievements.list();
const { achievement } = await sdk.achievements.get("collector");setProgressAtLeast接受目前為止的累計總量,絕不是增量。進度只會上升,以maxProgress為上限,並在達到上限時解鎖。- 兩種呼叫都會傳回
{ accepted, changed, unlocked, progress, unlockedAt, achievement };沒有新變化時changed為 false,讓你自己的提示通知只顯示一次。 list({ includeHiddenDefinitions: true, includeRetired: true })會包含隱藏與已停用的定義。
只在真正遊玩時解鎖,絕不要在預覽或擷取時解鎖。完全沒有玩家工作階段時,呼叫會正常完成,但不會儲存。
好的成就
混合教玩家熟悉遊戲的早期成就與長期目標。用動作命名,而不是用獎勵命名:「無傷獲勝」直接說明要做什麼。十來個用心設計的成就,勝過一百個瑣碎的成就。