# GameMaker Windows Auth Achievements Smoke Checklist

这份清单只覆盖首期范围：

- 授权验证
- 防沉迷状态
- 成就解锁
- 成就进度上报

## 目标

把最小样例从“能看见代码”推进到“知道怎么按顺序验收”。

## 步骤

1. 打开 `project/IGP.WindowsAuthAchievements.yyp`
2. 确认 `project/datafiles/IGP.GamemakerDesktopBridge.Native.dll` 在工程里
3. 启动时先调用 `igp_init(app_id, options)`
4. 每帧或固定时机调用 `igp_update()`
5. 用 `igp_poll_event()` 取事件
6. 先看状态快照
7. 再确认连接状态
8. 再确认授权状态
9. 再确认防沉迷状态，或按 F3 主动刷新
10. 再点解锁成就
11. 再点进度上报
12. 看最近一次结果
13. 看最近一次错误
14. 看 UI 状态整理函数是否把页面状态拼对

## 预期

### 初始化后

- `igp_is_initialized()` 为 `true`
- `igp_get_state_snapshot()` 有值
- `igp_get_state_snapshot().bridge_loaded` 为 `true`
- `igp_get_connection_state()` 有值
- `igp_get_authorization_state()` 有值
- `igp_get_current_anti_addiction_status()` 有值
- 如果开了自动附着，先看到 `connecting` 也正常
- 工程本体能从 `project/IGP.WindowsAuthAchievements.yyp` 直接打开

### 连接变化时

- 能看到 `connection_state_changed`
- 事件里会带 `state`
- 页面上的连接状态会跟着变

### 授权变化时

- 能看到 `authorization_state_changed`
- 页面上的授权状态会跟着变

### 防沉迷变化时

- 能看到 `anti_addiction_state_changed`
- 页面上的防沉迷状态会跟着变
- 按 F3 会调用 `igp_refresh_anti_addiction_status(...)`

### 成功调用时

- 能看到 `achievement_result`
- 最近一次结果会刷新
- `igp_sample_ui_model(...)` 会把按钮状态和最后摘要一起整理出来
- `project/` 里的房间里会先看到控制对象

### 出错时

- 能看到 `error_reported`
- 最近一次错误会刷新

## 现在这份清单的作用

这份清单不是正式工程说明，只是用来让后面做真实项目时，知道样例页要怎么验收。
