「在线联机原型全集」扩展篇之二:成就与里程碑系统(Achievement & Milestone System)

扩展篇之二:成就与里程碑系统。设计了事件驱动的成就判定引擎、进度持久化、解锁通知、成就面板与运营埋点,帮助联机游戏用低成本机制提升新手引导、留存与长期目标感。

成就系统是「低成本高感知」的留存工具:它不改变核心玩法,却给玩家提供了额外的小目标与身份认同。本 PRD 是《在线联机原型全集》的扩展篇之二,聚焦事件驱动的成就引擎,可横向接入任意联机原型。


1. 目标与验证点

编号验证能力说明
A1事件驱动判定对局事件实时流式判定,延迟 < 100ms
A2进度持久化成就进度原子落库,跨端一致
A3解锁通知弹窗/横幅触发,不打断对局
A4成就面板分类浏览、进度条、已解锁态
A5运营埋点解锁率、卡点统计,支撑迭代

一句话目标:给每个对局外目标配上「可量化进度 + 可感知反馈」,让玩家的努力被系统记住。


2. 系统架构

flowchart TD
A["Game Events"] -->|kafka/redis stream| B["Event Bus"]
B --> C["Achievement Engine"]
C -->|matched| D["Progress Store (Redis)"]
C -->|unlocked| E["Notify Service"]
E --> F["Client Banner"]
C -->|stats| G["Analytics (ClickHouse)"]
D --> H["Achievement Panel"]

说明:

  • Event Bus:统一游戏事件流(对局结束、击杀、连胜、累计场次等)
  • Achievement Engine:无状态判定器,规则可配置热更新
  • Progress Store:Redis 存活跃进度,异步落库 Postgres
  • Notify Service:解锁后推送到客户端,支持延迟/离线补发

3. 成就规则模型

3.1 三类典型成就

类型示例判定方式
一次性首次获胜、完成新手引导单事件到达即解锁
累积型累计胜利 100 场、击败 1000 个 AI计数器累加到达阈值
条件型无伤通关、单局连杀 5 人对局内状态满足即解锁

3.2 规则配置 DSL

achievement:
  id: "win_100"
  name: "百胜传奇"
  description: "累计获胜 100 场"
  type: cumulative
  event: "game_finished"
  filter: "result == WIN"
  counter: "total_wins"
  threshold: 100
  reward: "title:百胜"

关键设计:规则与代码解耦。运营改阈值、加成就,无需发版——配置热更新 + 判定引擎重载。


4. 进度管理与一致性

4.1 原子计数

// 累积型成就:Redis INCR 保证原子性,超阈值触发解锁
func (e *Engine) OnGameFinished(playerID string, result Result) error {
    if result != WIN {
        return nil
    }
    wins, err := redis.Incr(ctx, fmt.Sprintf("ach:win_100:%s", playerID))
    if err != nil {
        return err
    }
    if wins == 100 {
        return e.Unlock(playerID, "win_100")
    }
    return nil
}

4.2 幂等与防重

解锁必须是幂等的:重复触发不重复发奖、不重复通知
进度回滚(如作弊清零)要有审计日志
跨端一致性:同一玩家多端进度以服务端为准

4.3 数据模型

表字段
achievement_defid、name、type、event、filter、threshold、reward
player_achievementplayer_id、achievement_id、progress、unlocked_at、unlocked

5. 接口定义

模块接口描述
EnginePOST /achievement/evaluate接收事件批量判定
ProgressGET /achievement/progress/{playerId}查询全部成就进度
PanelGET /achievement/list?category=成就面板分类数据
NotifyPOST /achievement/notify推送解锁通知(内部)
AdminPUT /achievement/def运营配置增改(后台)

6. 解锁反馈设计

反馈形式原则
即时弹窗横幅 + 成就名 + 图标不阻断对局,3s 自动消失
首次解锁全屏庆祝(可跳过)仅限稀有/里程碑成就
累积进度面板进度条 + 百分比持续目标感
奖励落地称号/图标/货币解锁后立刻可感知

设计心法:成就是「给玩家的自我叙述」。文案要具体、带情绪(「百胜传奇」优于「获得 100 场胜利」),奖励要与身份相关(称号、徽章)而非只有数值。


7. 运营埋点与迭代闭环

埋点维度:
- 解锁率:某成就到达阈值并被解锁的比例
- 卡点分布:玩家最常卡在哪个进度区间
- 回归率:解锁某成就后 7 日留存变化

迭代闭环:
看数据 → 调阈值/改文案/加成就 → 再测解锁率

核心指标:成就系统健康度 = 活跃玩家的「平均解锁成就数」随时间上升,而非一次性爆发。


8. 里程碑与验收

M1 事件总线接入(1 周)
  ✅ 对局事件可配置化路由到 Engine
M2 判定 + 进度持久化(1 周)
  ✅ 累积/条件/一次性三类均可正确解锁,重启不丢
M3 通知与面板(1 周)
  ✅ 解锁横幅、成就面板、进度条上线
M4 运营后台(1 周)
  ✅ 配置热更新生效,埋点报表可看

验收指标:事件到解锁判定 P99 < 100ms;并发解锁幂等(同事件重复不重发奖);进度跨端一致率 100%。


9. 相关原型衔接

本系统是横向能力,可接入全部 60 个原型:

扩展篇定位:成就系统是「对局外目标」的基础设施。它与赛季与段位系统共同构成玩家成长的「记分牌」——先记录每一次努力,再给努力分级。

延伸阅读

下一扩展篇:AI 陪练机器人。成就记录「你已经走了多远」,陪练让「继续变强」永远有人陪。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「products」更多文章

  1. 「在线联机原型全集」扩展篇之十二:赛季通行证与商业化(Battle Pass & Monetization)
  2. 「在线联机原型全集」扩展篇之十一:本地化与多语言(Localization & i18n)
  3. 「在线联机原型全集」扩展篇之十:经济风控与反作弊(Economy Risk & Anti-Fraud)