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%全面下调难度
成功闪避鼓励使用空格维持当前难度

三大独立倍率

倍率范围作用
dmgMultiplier0.5–1.6敌人单次伤害
hpMultiplier0.4–2.0敌人HP
spawnMultiplier0.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+随机4045+随机25~25%
敌人HP30+层×1025+层×8~17%
接触伤害10640%

技术栈

  • 引擎: Phaser 3 (CDN: dist/phaser.js)
  • 语言: 原生 JavaScript(无构建工具)
  • 平台: 单 HTML 文件,浏览器直接运行
  • 服务: Python http.server(本地开发)

相关链接

  • 技能: game-flow-difficulty — 心流难度算法的通用模式
  • 动态难度源码: soul_knight.html 内的 rebalanceDifficulty() 函数