跳轉到

Hero Unlock Idempotency

概念概覽

Idempotency Key 設計

核心知識

Idempotency Key 設計

角色解鎖操作在 1M CCU 環境下,網路重試是常態。必須在操作層加 idempotency key 防止重複扣款:

idempotency_key = (player_id, role_id, unlock_stage)

這個三元組唯一標識「某玩家對某角色的某解鎖階段」,重複請求命中同一 key 時直接回傳上次結果,不重複執行扣款邏輯。

Luban 配置整合

Luban 生成的 GameRoleConfig Go struct 已包含: - RoleUnlockCondition:解鎖前置條件 - RoleUnlockReward:解鎖獎勵配置

企劃配置已完整更新,後端直接讀取即可,無需額外定義配置結構。

多階段解鎖架構要點

  • 解鎖消耗的貨幣(DungeonToken)從 player_resources 垂直表扣除,搭配 CAS 防超扣
  • 每個 unlock_stage 獨立記錄,支援分階段解鎖進度查詢
  • BooleanAutoOpen(領取後自動打開道具/禮包)是獨立功能議題,不在角色解鎖系統範疇內

經驗教訓

  • 1M CCU 環境下角色解鎖必須加 idempotency key,(player_id, role_id, unlock_stage) 三元組是最小唯一標識

  • Luban GameRoleConfig 已內含 RoleUnlockCondition/RoleUnlockReward,整合前應先確認 struct 現況而非重新定義

  • BooleanAutoOpen 等外圍功能應明確劃定系統邊界,避免設計範疇蔓延

常見陷阱

  • 未加 idempotency key 的解鎖操作在高 CCU 網路重試下會造成重複扣款

  • 將 BooleanAutoOpen 等無關功能納入角色解鎖系統範疇,增加不必要的複雜度

最佳實踐

  • 角色解鎖操作加 idempotency key(player_id + role_id + unlock_stage)

  • 整合 Luban 配置前先讀取最新 struct 定義,不依賴對話中先前的讀取結果

相關概念

相關視角

以下頁面與本概念共享主題,但從不同角度切入。保留獨立視角同時提供交叉參考:

來源 Sessions

日期 Session 貢獻摘要

| 2026-03-19 | 04c2b73d-c00e-4eaf-959f-0dbf0f224e24 | 設計了 1M CCU 環境下角色多階段解鎖的 idempotency key 方案,以及確認 Luban GameRoleConfig 已完整包含解鎖配置 |


本概念頁面由 Semi-Brain Wiki 系統自動維護

最後更新: 2026-03-19