联网与插件
成就插件
用条件、进度、领取状态和幂等奖励建立可验证的成就系统。
联网与插件
成就是一条有状态的奖励合同
一条成就至少经历未达成、已达成、可领取和已领取。界面只是状态展示,真正的奖励必须只结算一次。
# 先写成就清单
每条成就先定义:
| 项目 | 必须明确 |
|---|---|
| 稳定身份 | 名称之外的稳定资源 ID |
| 达成条件 | 读取哪些属性或对象,何时检查 |
| 进度 | 当前值、目标值和显示格式 |
| 可见性 | 未解锁是否隐藏或显示占位 |
| 领取方式 | 自动领取或玩家手动领取 |
| 奖励 | 绑定控件或明确的属性/对象变化 |
| 重置 | 转生或赛季重置时是否保留 |
稀有度、分类、图标、描述和提示位置属于表现,不应替代达成条件。
# 纯 AI 实现流程
- 让 AI 查询真实属性、对象类、奖励控件和现有成就。
- 按分类建立成就,并配置进度与条件。
- 选择自动或手动领取,明确奖励唯一结算点。
- 在渲染布局中显示分类、进度、领取状态和失败反馈。
- 用测试存档覆盖达成前后与刷新恢复。
若条件需要复杂对象筛选或跨系统状态,让脚本计算一个可审计结果,不要把自然语言交给运行时猜测。
# 传统字段参考
打开传统模式文档后,成就插件包含:
- 页面:链接标签、显示未解锁、自动领取、领取按钮文字;
- 分类:分类名称和显示顺序;
- 成就:名称、分类、稀有度、描述、提示、图标/SVG;
- 规则:达成所需属性、奖励绑定控件;
- 表现:未解锁样式控件、提示位置、入口使用条件。
# 状态与幂等
stateDiagram-v2
[*] --> Locked
Locked --> Earned: 条件首次满足
Earned --> Claimed: 自动或手动领取
Claimed --> Claimed: 再次打开/重复点击
“达成”和“领取”必须分开记录。重复进入页面、快速连点、刷新和后台重试都不能重复发奖。奖励失败时保留可重试状态,不要标记为已领取。
# 验收矩阵
- 未达成时隐藏/占位符合配置;
- 达成提示只出现一次;
- 自动领取和手动领取分别正确;
- 奖励控件失败时不丢失领取资格;
- 重复点击、刷新和多设备恢复不重复奖励;
- 重置后保留范围符合设计;
- 长分类名、长描述和移动端列表不溢出。
下一步:地图插件。