aip-sci 0.1.0

Affective Interaction Programming - 情感交互编程
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
# AIP Roguelite 游戏技术方案

本文档描述用于AIP实验验证的Roguelite游戏技术实现方案,基于Rust Bevy引擎开发。

---

## 1. 项目概述

### 1.1 目标

开发一个2D俯视像素风格Roguelite游戏,用于验证AIP(情感交互编程)系统的有效性。游戏需要:

1. 支持实时情绪数据采集(15维行为特征)
2. 支持AIP Director的交互参数动态调节
3. 支持大规模在线实验(N > 500)
4. 运行于移动端(iOS/Android)

### 1.2 技术栈

| 组件 | 技术选型 | 说明 |
|------|----------|------|
| 游戏引擎 | Bevy 0.18 | Rust原生ECS引擎 (最新稳定版) |
| 渲染 | Bevy 2D | 像素风格渲染 |
| 物理引擎 | bevy_rapier2d 0.30 | 2D碰撞检测 |
| 粒子系统 | bevy_hanabi 0.15 | 视觉反馈效果 |
| UI框架 | bevy_egui 0.32 | 调试界面、游戏UI |
| 音频 | bevy_kira_audio 0.22 | 动态音频反馈 |
| 存储 | sled 0.34 | 嵌入式数据库 |
| 网络 | reqwest 0.12 + tokio 1.0 | 异步HTTP |

### 1.3 项目结构

```
roguelite/
├── Cargo.toml
├── assets/
│   ├── sprites/
│   │   ├── player/          # 玩家精灵
│   │   ├── enemies/         # 敌人精灵
│   │   ├── items/           # 道具精灵
│   │   ├── tiles/           # 地图瓦片
│   │   └── effects/         # 特效精灵
│   ├── audio/
│   │   ├── sfx/             # 音效
│   │   └── music/           # 背景音乐
│   └── fonts/               # 字体文件
├── src/
│   ├── main.rs
│   ├── core/                # 核心系统
│   ├── player/              # 玩家系统
│   ├── world/               # 世界生成
│   ├── enemies/             # 敌人系统
│   ├── items/               # 道具系统
│   ├── ui/                  # 用户界面
│   ├── aip/                 # AIP集成
│   ├── audio/               # 音频系统
│   ├── effects/             # 视觉效果
│   └── utils/               # 工具函数
├── tests/
└── docs/
```

---

## 2. 游戏设计

### 2.1 核心玩法循环

```
进入地牢 → 探索房间 → 战斗/收集 → 升级/选择 → 下一层/死亡
```

**核心机制**:
- 程序化生成的地牢地图
- 实时战斗,自动锁定目标
- 收集道具和装备
- 升级技能树
- 死亡后重新开始(Roguelite核心)

### 2.2 移动端控制方案

**横屏布局**:

```
┌─────────────────────────────────────────────────────────────────────┐
│  ┌─────────┐                                    ┌─────────────────┐│
│  │ HP: ████│                                    │ Level: 1-3      ││
│  │ MP: ██  │                                    │ Score: 12,450   ││
│  └─────────┘                                    └─────────────────┘│
│                                                                     │
│                    ┌─────────────────────┐                          │
│                    │    游戏画面区域      │                          │
│                    │    (玩家 + 敌人)     │                          │
│                    └─────────────────────┘                          │
│                                                                     │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐    ┌─────┐  ┌─────┐        │
│  │ 技能1   │  │ 技能2   │  │ 技能3   │    │道具1│  │道具2│        │
│  └─────────┘  └─────────┘  └─────────┘    └─────┘  └─────┘        │
│                                                                     │
│  ┌───────────────┐                                                  │
│  │   虚拟摇杆     │  (左手控制移动)                                  │
│  └───────────────┘                                                  │
└─────────────────────────────────────────────────────────────────────┘
```

**控制映射**:

| 操作 | 触控方式 | 说明 |
|------|----------|------|
| 移动 | 左侧虚拟摇杆 | 8方向移动 |
| 普通攻击 | 自动锁定 | 自动攻击最近敌人 |
| 技能1-3 | 右侧按钮 | 点击释放技能 |
| 道具1-2 | 右侧小按钮 | 使用消耗品 |
| 暂停 | 右上角按钮 | 打开暂停菜单 |

### 2.3 自动锁定系统

- 自动检测范围内最近敌人
- 自动瞄准和攻击
- 可切换锁定目标(点击屏幕其他区域)

---

## 3. 生成式地牢系统

### 3.1 地牢生成流程

```
1. 生成房间
   ├── 确定房间数量 (5-12个)
   ├── 随机放置房间位置
   └── 确保房间不重叠

2. 连接房间
   ├── 使用Delaunay三角剖分
   ├── 生成最小生成树 (MST)
   └── 添加额外通道增加循环

3. 细化走廊
   ├── 生成走廊瓦片
   └── 添加装饰和陷阱

4. 放置内容
   ├── 入口/出口
   ├── 敌人生成点
   ├── 宝箱和道具
   └── 秘密房间
```

### 3.2 房间类型

| 类型 | 说明 | 出现概率 |
|------|------|----------|
| Start | 起始房间 | 固定1个 |
| Normal | 普通战斗房间 | 50-60% |
| Elite | 精英怪房间 | 10-15% |
| Boss | Boss房间 | 每层1个 |
| Treasure | 宝箱房间 | 10-15% |
| Shop | 商店房间 | 5-10% |
| Secret | 秘密房间 | 5-10% |
| Rest | 休息房间 | 5-10% |

### 3.3 瓦片系统

| 瓦片类型 | 是否可行走 | 是否阻挡视线 |
|----------|-----------|-------------|
| Floor | ✓ | ✗ |
| Wall | ✗ | ✓ |
| Door | ✓ | ✗ |
| Pit | ✗ | ✓ |
| Water | ✓ (减速) | ✗ |
| Lava | ✗ (伤害) | ✗ |
| Spike | ✓ (伤害) | ✗ |
| Breakable | ✗ → ✓ | ✓ → ✗ |

### 3.4 AIP可控的地牢参数

| 参数 | 对应Director参数 | 影响范围 |
|------|-----------------|----------|
| 敌人密度 | intensity_factor | 0.3-0.8 |
| 宝箱概率 | reward_scarcity | 0.1-0.5 |
| 陷阱密度 | env_arousal | 0.05-0.2 |
| 精英房间概率 | challenge_curve | 0.1-0.3 |

---

## 4. 数据采集系统

### 4.1 行为事件类型

| 事件类型 | 数据字段 |
|----------|----------|
| Tap | position, timestamp, pressure |
| Swipe | start, end, duration_ms, velocity |
| MultiTouch | touch_count, positions |
| JoystickMove | direction, intensity |
| SkillUse | skill_id, target_position |
| ItemUse | item_id |
| Pause/Resume | timestamp |
| Death | timestamp, cause |
| LevelComplete | timestamp, time_ms |
| EnemyKill | enemy_type |
| TakeDamage | amount, source |

### 4.2 15维行为特征

| ID | 特征名 | 计算窗口 | 情绪关联 |
|----|--------|----------|----------|
| 0 | 点击频率 | 10秒 | 唤醒↑ |
| 1 | 滑动速度 | 每次滑动 | 唤醒↑ |
| 2 | 多点触控比例 | 10秒 | 唤醒↑ |
| 3 | 设备运动方差 | 10秒 | 唤醒↑ |
| 4 | 重试延迟 | 每次失败 | 效价↓ |
| 5 | 暂停时长 | 每次暂停 | 效价↓ |
| 6 | 犹豫时间 | 10秒 | 效价↓ |
| 7 | 路径效率 | 10秒 | 掌控↑ |
| 8 | 取消率 | 10秒 | 掌控↓ |
| 9 | 完成率 | 10秒 | 掌控↑ |
| 10 | 平均压力 | 10秒 | 唤醒↑ |
| 11 | 压力标准差 | 10秒 | 唤醒↑ |
| 12 | 动作精度 | 10秒 | 掌控↑ |
| 13 | 平均反应时间 | 10秒 | 效价↓ |
| 14 | 反应时间标准差 | 10秒 | 效价↓ |

### 4.3 数据采集流程

```
游戏运行中
        ├── 触控事件监听 (TouchInput System)
        ├── 游戏事件监听 (GameEvent System)
        行为记录生成 (BehaviorRecord)
        本地缓存队列 (sled数据库)
        ├──→ 实时处理 → 特征提取 → EDM推理
        └──→ 批量上传 → 云端存储
```

### 4.4 数据存储格式

**Session数据结构**:
- session_id: 会话唯一标识
- user_id: 用户标识
- device_id: 设备标识
- start_time / end_time: 会话时间
- behavior_events: 行为事件列表
- predicted_emotions: EDM预测情绪列表
- game_stats: 游戏统计

---

## 5. AIP系统集成

### 5.1 EDM集成

**功能**:实时情绪推断

**输入**:15维行为特征(10秒窗口)

**输出**:EmotionState (valence, arousal, dominance)

**更新频率**:每10秒

### 5.2 Director集成

**功能**:生成交互参数

**输入**:
- 用户特质 (8维)
- 环境状态 (6维)
- 实时情绪 (3维)
- 情绪统计 (6维)

**输出**:InteractionParams (7维)

**更新频率**:每2秒

### 5.3 交互参数应用

| 参数 | 游戏影响 |
|------|----------|
| intensity_factor | 敌人生成速率、伤害倍率 |
| feedback_intensity | 屏幕震动、音效音量 |
| pace_speed | 游戏节奏、事件触发频率 |
| reward_scarcity | 稀有道具掉落率 |
| env_arousal | 环境特效密度、背景音乐强度 |
| rhythm_modulation | 音乐节奏、心跳音效 |
| challenge_curve | 难度曲线斜率 |

---

## 6. 视觉效果系统

### 6.1 像素风格渲染

- 4x像素放大
- 像素对齐渲染
- 调色板限制(可选)

### 6.2 动态效果

| 效果 | 触发条件 | AIP控制 |
|------|----------|---------|
| 屏幕震动 | 受伤、爆炸 | feedback_intensity |
| 粒子效果 | 攻击、技能 | env_arousal |
| 闪光效果 | 暴击、升级 | feedback_intensity |
| 屏幕色调 | 情绪状态 | Director输出 |

---

## 7. 音频系统

### 7.1 音频类型

| 类型 | 说明 | AIP控制 |
|------|------|---------|
| 背景音乐 | 循环播放 | rhythm_modulation |
| 战斗音效 | 攻击、受伤 | feedback_intensity |
| 环境音效 | 风声、水声 | env_arousal |
| UI音效 | 按钮、弹窗 | 固定音量 |

### 7.2 动态音频

- 音乐节奏随 rhythm_modulation 变化
- 音效音量随 feedback_intensity 变化
- 环境音密度随 env_arousal 变化

---

## 8. 网络与数据上传

### 8.1 数据上传策略

| 场景 | 上传时机 |
|------|----------|
| 会话结束 | 立即上传 |
| 网络不可用 | 本地缓存,恢复后上传 |
| 大数据量 | 分批上传 |

### 8.2 数据格式

- JSON格式
- Gzip压缩
- HTTPS加密传输

---

## 9. 构建与部署

### 9.1 依赖版本

```toml
[dependencies]
bevy = "0.18"
bevy_rapier2d = "0.30"
bevy_egui = "0.32"
bevy_kira_audio = "0.22"
bevy_hanabi = "0.15"
serde = "1.0"
serde_json = "1.0"
sled = "0.34"
reqwest = "0.12"
tokio = "1.0"
chrono = "0.4"
uuid = "1.0"
aip = { path = "../" }
```

### 9.2 构建目标

| 平台 | Target | 说明 |
|------|--------|------|
| macOS | x86_64-apple-darwin | 开发调试 |
| iOS | aarch64-apple-ios | App Store |
| iOS Sim | aarch64-apple-ios-sim | 模拟器 |
| Android | aarch64-linux-android | Google Play |
| Android | armv7-linux-androideabi | 兼容设备 |

### 9.3 构建命令

```bash
# 桌面调试
cargo run

# Android构建
cargo build --target aarch64-linux-android --release

# iOS构建
cargo build --target aarch64-apple-ios --release
```

---

## 10. 性能指标

| 指标 | 目标值 |
|------|--------|
| 帧率 | ≥ 60 FPS |
| 内存占用 | ≤ 200MB |
| 启动时间 | ≤ 3秒 |
| 特征提取延迟 | ≤ 5ms |
| EDM推理延迟 | ≤ 10ms |
| Director决策延迟 | ≤ 10ms |

---

## 11. 任务清单

### Phase 1: 项目初始化

- [ ] **T1.1** 创建项目目录结构 `roguelite/`
- [ ] **T1.2** 配置 Cargo.toml 依赖
- [ ] **T1.3** 创建基础模块文件
- [ ] **T1.4** 配置 Bevy 基础渲染管线
- [ ] **T1.5** 实现像素风格渲染设置

### Phase 2: 核心游戏系统

- [ ] **T2.1** 实现游戏状态机 (GameState)
- [ ] **T2.2** 实现玩家实体和组件
- [ ] **T2.3** 实现玩家移动系统
- [ ] **T2.4** 实现虚拟摇杆控制
- [ ] **T2.5** 实现自动锁定系统
- [ ] **T2.6** 实现战斗系统
- [ ] **T2.7** 实现技能系统
- [ ] **T2.8** 实现道具系统

### Phase 3: 地牢生成系统

- [ ] **T3.1** 实现房间生成算法
- [ ] **T3.2** 实现房间连接算法 (Delaunay + MST)
- [ ] **T3.3** 实现走廊生成
- [ ] **T3.4** 实现瓦片系统
- [ ] **T3.5** 实现内容放置 (敌人/宝箱/陷阱)
- [ ] **T3.6** 实现多层地牢
- [ ] **T3.7** 实现地牢参数调节接口

### Phase 4: 敌人系统

- [ ] **T4.1** 设计敌人类型和属性
- [ ] **T4.2** 实现敌人生成器
- [ ] **T4.3** 实现敌人AI (寻路、攻击)
- [ ] **T4.4** 实现敌人行为树
- [ ] **T4.5** 实现Boss AI
- [ ] **T4.6** 实现敌人难度调节

### Phase 5: UI系统

- [ ] **T5.1** 实现游戏HUD (HP/MP/分数)
- [ ] **T5.2** 实现虚拟摇杆UI
- [ ] **T5.3** 实现技能按钮UI
- [ ] **T5.4** 实现道具栏UI
- [ ] **T5.5** 实现暂停菜单
- [ ] **T5.6** 实现游戏结束界面

### Phase 6: 数据采集系统

- [ ] **T6.1** 定义行为事件类型
- [ ] **T6.2** 实现触控事件监听
- [ ] **T6.3** 实现游戏事件监听
- [ ] **T6.4** 实现行为记录存储
- [ ] **T6.5** 实现15维特征提取器
- [ ] **T6.6** 实现Z-score归一化
- [ ] **T6.7** 实现校准数据收集
- [ ] **T6.8** 实现本地数据缓存 (sled)

### Phase 7: AIP集成

- [ ] **T7.1** 实现EDM Bridge
- [ ] **T7.2** 实现Director Bridge
- [ ] **T7.3** 实现交互参数应用系统
- [ ] **T7.4** 实现情绪历史管理
- [ ] **T7.5** 实现用户特质采集
- [ ] **T7.6** 实现环境状态采集
- [ ] **T7.7** 集成测试

### Phase 8: 视觉效果系统

- [ ] **T8.1** 实现屏幕震动效果
- [ ] **T8.2** 实现粒子效果系统
- [ ] **T8.3** 实现闪光效果
- [ ] **T8.4** 实现屏幕色调调节
- [ ] **T8.5** 实现动态效果参数接口

### Phase 9: 音频系统

- [ ] **T9.1** 集成 bevy_kira_audio
- [ ] **T9.2** 实现背景音乐播放
- [ ] **T9.3** 实现音效系统
- [ ] **T9.4** 实现动态音频调节
- [ ] **T9.5** 实现音乐节奏调节

### Phase 10: 网络与数据上传

- [ ] **T10.1** 实现数据上传服务
- [ ] **T10.2** 实现离线缓存
- [ ] **T10.3** 实现断点续传
- [ ] **T10.4** 实现数据压缩
- [ ] **T10.5** 实现错误处理

### Phase 11: 移动端适配

- [ ] **T11.1** Android平台构建配置
- [ ] **T11.2** iOS平台构建配置
- [ ] **T11.3** 触控输入优化
- [ ] **T11.4** 屏幕适配
- [ ] **T11.5** 性能优化

### Phase 12: 测试与优化

- [ ] **T12.1** 单元测试编写
- [ ] **T12.2** 集成测试编写
- [ ] **T12.3** 性能测试
- [ ] **T12.4** 内存泄漏检测
- [ ] **T12.5** AIP功能验证测试

### Phase 13: 资源制作

- [ ] **T13.1** 玩家精灵图
- [ ] **T13.2** 敌人精灵图
- [ ] **T13.3** 道具精灵图
- [ ] **T13.4** 地图瓦片图
- [ ] **T13.5** 特效精灵图
- [ ] **T13.6** 背景音乐
- [ ] **T13.7** 音效资源

---

## 13. 资源规格表

### 13.1 图片资源规格

**精灵图规格CSV**:

| 资源ID | 类别 | 名称 | 尺寸 | 帧数 | 帧率 | 调色板 | 风格提示词 | 来源 |
|--------|------|------|------|------|------|--------|-----------|------|
| SPR_001 | player | player_idle | 32x32 | 4 | 8 | 16色 | 像素风格, 俯视角度, 战士角色, 盔甲细节, 静止站立动画 | 色块图 |
| SPR_002 | player | player_walk | 32x32 | 8 | 12 | 16色 | 像素风格, 俯视角度, 战士角色, 行走动画, 四方向 | 色块图 |
| SPR_003 | player | player_attack | 48x48 | 6 | 15 | 16色 | 像素风格, 俯视角度, 挥剑攻击, 攻击特效, 动态姿势 | 色块图 |
| SPR_004 | player | player_hurt | 32x32 | 3 | 10 | 16色 | 像素风格, 受伤闪烁, 红色色调, 痛苦表情 | 色块图 |
| SPR_005 | player | player_death | 32x32 | 8 | 8 | 16色 | 像素风格, 死亡倒地, 消失动画, 灵魂升起 | 色块图 |
| ENM_001 | enemies | slime_green | 24x24 | 6 | 8 | 8色 | 像素风格, 史莱姆, 绿色果冻状, 跳跃移动, Q弹动画 | 色块图 |
| ENM_002 | enemies | slime_red | 24x24 | 6 | 8 | 8色 | 像素风格, 史莱姆, 红色火焰状, 跳跃移动, 火焰特效 | 色块图 |
| ENM_003 | enemies | skeleton | 32x32 | 8 | 10 | 12色 | 像素风格, 骷髅战士, 白色骨骼, 持剑盾牌, 行走攻击 | 色块图 |
| ENM_004 | enemies | bat | 16x16 | 4 | 12 | 6色 | 像素风格, 蝙蝠, 黑色翅膀, 飞行动画, 简单形状 | 色块图 |
| ENM_005 | enemies | ghost | 32x32 | 6 | 8 | 8色 | 像素风格, 幽灵, 半透明蓝色, 漂浮动画, 幽灵尾巴 | 色块图 |
| ENM_006 | enemies | boss_demon | 64x64 | 10 | 10 | 24色 | 像素风格, 恶魔Boss, 红色皮肤, 犄角翅膀, 攻击施法动画 | 色块图 |
| ITM_001 | items | sword_iron | 16x16 | 1 | - | 8色 | 像素风格, 铁剑, 银色剑身, 木质剑柄, 简洁设计 | 色块图 |
| ITM_002 | items | sword_fire | 16x16 | 1 | - | 12色 | 像素风格, 火焰剑, 红橙色火焰包裹, 魔法武器 | 色块图 |
| ITM_003 | items | potion_hp | 16x16 | 1 | - | 8色 | 像素风格, 红色药水瓶, 玻璃瓶身, 红色液体, 瓶塞 | 色块图 |
| ITM_004 | items | potion_mp | 16x16 | 1 | - | 8色 | 像素风格, 蓝色药水瓶, 玻璃瓶身, 蓝色液体, 瓶塞 | 色块图 |
| ITM_005 | items | coin_gold | 12x12 | 6 | 10 | 6色 | 像素风格, 金币, 黄色闪亮, 旋转动画, 简单形状 | 色块图 |
| ITM_006 | items | chest | 32x32 | 3 | 8 | 12色 | 像素风格, 宝箱, 木质箱体, 金色装饰, 打开动画 | 色块图 |
| TILE_001 | tiles | floor_stone | 16x16 | 1 | - | 8色 | 像素风格, 石板地面, 灰色纹理, 地牢风格, 可平铺 | 色块图 |
| TILE_002 | tiles | wall_stone | 16x16 | 1 | - | 8色 | 像素风格, 石墙, 深灰色, 砖块纹理, 地牢风格 | 色块图 |
| TILE_003 | tiles | door | 32x16 | 4 | 8 | 12色 | 像素风格, 木门, 棕色木质, 铁质门环, 开关动画 | 色块图 |
| TILE_004 | tiles | water | 16x16 | 8 | 6 | 8色 | 像素风格, 水面, 蓝色波纹, 流动动画, 可平铺 | 色块图 |
| TILE_005 | tiles | lava | 16x16 | 8 | 6 | 12色 | 像素风格, 岩浆, 红橙黄色, 冒泡动画, 危险区域 | 色块图 |
| FXP_001 | effects | hit_slash | 32x32 | 6 | 20 | 8色 | 像素风格, 斩击特效, 白色弧线, 快速闪烁, 攻击反馈 | 色块图 |
| FXP_002 | effects | explosion | 48x48 | 10 | 15 | 16色 | 像素风格, 爆炸特效, 红橙黄火焰, 扩散消失 | 色块图 |
| FXP_003 | effects | heal | 32x32 | 8 | 10 | 8色 | 像素风格, 治愈特效, 绿色光芒, 上升动画, 恢复效果 | 色块图 |
| FXP_004 | effects | levelup | 48x48 | 12 | 12 | 16色 | 像素风格, 升级特效, 金色光芒, 光柱上升, 庆祝效果 | 色块图 |

### 13.2 音频资源规格

**背景音乐规格CSV**:

| 资源ID | 类别 | 名称 | 时长 | BPM | 格式 | 情绪标签 | 风格提示词 | 来源 |
|--------|------|------|------|-----|------|---------|-----------|------|
| BGM_001 | music | dungeon_explore | 180s | 90 | OGG | 神秘,紧张 | 8-bit芯片音乐, 地牢探索, 低沉贝斯, 神秘氛围, 循环播放 | 网络搜索 |
| BGM_002 | music | battle_normal | 120s | 140 | OGG | 激烈,紧张 | 8-bit芯片音乐, 战斗音乐, 快节奏, 鼓点密集, 紧张刺激 | 网络搜索 |
| BGM_003 | music | battle_boss | 150s | 160 | OGG | 史诗,紧张 | 8-bit芯片音乐, Boss战, 史诗感, 管弦乐风格, 高潮迭起 | 网络搜索 |
| BGM_004 | music | safe_room | 120s | 70 | OGG | 平静,安心 | 8-bit芯片音乐, 安全区域, 舒缓旋律, 治愈风格, 放松氛围 | 网络搜索 |
| BGM_005 | music | victory | 30s | 120 | OGG | 欢快,胜利 | 8-bit芯片音乐, 胜利音乐, 欢快旋律, 庆祝氛围, 短促有力 | 网络搜索 |
| BGM_006 | music | game_over | 20s | 60 | OGG | 悲伤,失败 | 8-bit芯片音乐, 失败音乐, 低沉旋律, 悲伤氛围, 短促收尾 | 网络搜索 |

**音效规格CSV**:

| 资源ID | 类别 | 名称 | 时长 | 格式 | 情绪标签 | 风格提示词 | 来源 |
|--------|------|------|------|------|---------|-----------|------|
| SFX_001 | sfx | sword_swing | 0.3s | OGG | 中性 | 8-bit音效, 剑挥舞声, 嗖嗖声, 简洁有力 | 网络搜索 |
| SFX_002 | sfx | sword_hit | 0.2s | OGG | 冲击 | 8-bit音效, 剑命中声, 撞击声, 金属质感 | 网络搜索 |
| SFX_003 | sfx | player_hurt | 0.3s | OGG | 痛苦 | 8-bit音效, 受伤声, 痛苦呻吟, 低沉短促 | 网络搜索 |
| SFX_004 | sfx | player_death | 0.5s | OGG | 悲伤 | 8-bit音效, 死亡声, 低沉坠落, 悲伤收尾 | 网络搜索 |
| SFX_005 | sfx | enemy_death | 0.3s | OGG | 满足 | 8-bit音效, 敌人死亡, 爆炸声, 消失音效 | 网络搜索 |
| SFX_006 | sfx | pickup_coin | 0.2s | OGG | 欢快 | 8-bit音效, 拾取金币, 叮当声, 清脆悦耳 | 网络搜索 |
| SFX_007 | sfx | pickup_item | 0.3s | OGG | 欢快 | 8-bit音效, 拾取道具, 闪光声, 魔法音效 | 网络搜索 |
| SFX_008 | sfx | use_potion | 0.4s | OGG | 治愈 | 8-bit音效, 使用药水, 液体声, 恢复音效 | 网络搜索 |
| SFX_009 | sfx | chest_open | 0.5s | OGG | 期待 | 8-bit音效, 宝箱打开, 吱呀声, 惊喜音效 | 网络搜索 |
| SFX_010 | sfx | door_open | 0.3s | OGG | 中性 | 8-bit音效, 门打开, 吱呀声, 木质质感 | 网络搜索 |
| SFX_011 | sfx | footstep | 0.1s | OGG | 中性 | 8-bit音效, 脚步声, 石板地面, 轻快节奏 | 网络搜索 |
| SFX_012 | sfx | explosion | 0.4s | OGG | 冲击 | 8-bit音效, 爆炸声, 巨大轰鸣, 震撼效果 | 网络搜索 |
| SFX_013 | sfx | level_up | 0.6s | OGG | 欢快 | 8-bit音效, 升级音效, 上升旋律, 成就感 | 网络搜索 |
| SFX_014 | sfx | button_click | 0.1s | OGG | 中性 | 8-bit音效, 按钮点击, 清脆短促, UI反馈 | 网络搜索 |
| SFX_015 | sfx | menu_select | 0.2s | OGG | 中性 | 8-bit音效, 菜单选择, 确认音效, 简洁有力 | 网络搜索 |

### 13.3 资源来源策略

| 来源类型 | 说明 | 适用资源 |
|---------|------|----------|
| 色块图 | 使用纯色块或简单渐变生成的占位图 | 开发阶段所有精灵图 |
| 网络搜索 | 从免费资源网站搜索合适的8-bit风格资源 | 音效、背景音乐 |
| AI生成 | 使用AI工具生成像素风格图片 | 最终版精灵图 |
| 委托制作 | 委托像素艺术家定制 | 高质量核心资源 |

### 13.4 推荐资源网站

| 网站 | 网址 | 资源类型 | 授权 |
|------|------|----------|------|
| OpenGameArt | opengameart.org | 图片、音频 | CC0/CC-BY |
| Freesound | freesound.org | 音效 | CC0/CC-BY |
| Incompetech | incompetech.com | 背景音乐 | CC-BY |
| Kenney | kenney.nl | 图片、音频 | CC0 |
| itch.io | itch.io | 图片、音频 | 多种授权 |

---

## 14. 总结

本方案设计了一个完整的Roguelite游戏系统,满足AIP论文实验需求:

| 模块 | 功能 |
|------|------|
| 游戏核心 | 2D俯视像素风格,生成式地牢,移动端横屏控制 |
| 数据采集 | 完整的15维行为特征提取,支持EDM训练 |
| AIP集成 | EDM实时情绪推断,Director动态参数调节 |
| 实验支持 | 数据上传,A/B测试框架 |