Soul Knight Clone — 像素射击游戏
Created: May 2026 | Hermes Agent + Phaser.js
项目概述
俯视角射击游戏,复刻 Soul Knight(元气骑士)核心玩法。通过动态心流难度系统自动平衡挑战性。
文件位置: C:\Users\IDA\phaser\soul_knight.html
运行方式: cd C:\Users\IDA\phaser && python -m http.server 8000
访问: http://localhost:8000/soul_knight.html
操作说明
| 按键 | 功能 |
|---|---|
| WASD | 移动 |
| 鼠标左键 | 瞄准 + 射击 |
| 空格 | 闪避(无敌帧) |
| Q | 切换武器 |
| R | 重新开始 |
游戏特性
武器系统
- 骑士剑 — 高伤害,近战,300ms冷却
- 散弹枪 — 3发子弹,散布0.3rad,600ms冷却
- 激光 — 高速低伤,150ms冷却
关卡设计
- 14×10 房间,每格 48px
- 每波次生成敌人从边缘进入
- 层数递增(floor 1, 2, 3…)
动态心流难度系统
核心思想
心流理论:游戏难度应匹配玩家当前技能水平——太难焦虑,太易无聊。通过实时观察玩家行为,动态调整敌人属性/数量,让玩家保持「挑战但可克服」状态。
算法
每 3秒 重新校准,观察玩家 8秒滑动窗口 内的表现:
| 指标 | 含义 | 响应 |
|---|---|---|
| DPS承伤 | 持续掉血 | 降低敌人伤害倍率 |
| 击杀速度 | 杀太快/太慢 | 调整敌人数量和属性 |
| HP比例 | 血量低于60% | 全面下调难度 |
| 成功闪避 | 鼓励使用空格 | 维持当前难度 |
三大独立倍率
| 倍率 | 范围 | 作用 |
|---|---|---|
dmgMultiplier | 0.5–1.6 | 敌人单次伤害 |
hpMultiplier | 0.4–2.0 | 敌人HP |
spawnMultiplier | 0.5–1.8 | 每次生成数量 |
EMA 平滑
- 心流评分:
flowScore = flowScore * 0.6 + newScore * 0.4 - 倍率更新:
newMultiplier = oldMultiplier * 0.7 + flowScore * 0.3 - 效果:难度变化柔和,不会突变
右上角心流指示器
| 评分范围 | 标签 | 颜色 |
|---|---|---|
| < 0.65 | ▼ 困难 | 🔴 红色 |
| 0.65–0.85 | ↘ 偏难 | 🟠 橙色 |
| 0.85–1.15 | ✓ 心流 | 🟢 绿色 |
| 1.15–1.45 | ↗ 偏易 | 🟡 黄色 |
| > 1.45 | ▲ 简单 | 🔵 蓝色 |
基础难度参数(调整后)
| 参数 | 原值 | 新值 | 降幅 |
|---|---|---|---|
| 敌人移速 | 60+随机40 | 45+随机25 | ~25% |
| 敌人HP | 30+层×10 | 25+层×8 | ~17% |
| 接触伤害 | 10 | 6 | 40% |
技术栈
- 引擎: Phaser 3 (CDN: dist/phaser.js)
- 语言: 原生 JavaScript(无构建工具)
- 平台: 单 HTML 文件,浏览器直接运行
- 服务: Python http.server(本地开发)
相关链接
- 技能: game-flow-difficulty — 心流难度算法的通用模式
- 动态难度源码:
soul_knight.html内的rebalanceDifficulty()函数