关于 game-feel
game-feel 是一项用于理解和调校游戏操控触感的设计技能,面向游戏设计者。它涵盖评估指标、感知阈值、模拟模式与问题排查方法。
主要功能
- 01游戏手感的三项基础要素
- 02评估手感的六项指标
- 03ADSR 响应调校模型
- 04移动与跳跃模拟方案
- 05润色效果与关卡设计指导
适用场景
- 01排查操控漂浮或迟缓问题
- 02调校跳跃和移动响应
- 03协调音效、特效与碰撞反馈
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jarrodmedrano/ jarrod-claude-skills --skill game-feel安装后在 Claude Code 中输入/game-feel确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/adsr-tuning.mdclassic-profiles.mdperception-thresholds.mdpolish-effects.mdsimulation-recipes.mdsix-metrics.md详细介绍
游戏手感技能
基于 Steve Swink 的全面分析,帮助理解、衡量并打造令人满意的游戏操控体验的框架。
核心定义
游戏手感是操控虚拟物体时的触觉和运动觉。它是一种操控感——那种身临其境地转向、跳跃和互动的感觉,存在于玩家与游戏之间。
“游戏手感是一门无形的艺术。如果设计师做得对,玩家永远不会注意到它,只会觉得一切恰到好处。”
三大构成要素
游戏手感需要以下三个要素协同发挥作用:
| 要素 | 定义 | 缺少时 |
|---|---|---|
| 实时操控 | 对输入做出连续、即时的响应 | 感觉像是在下达命令,而不是亲自操控 |
| 模拟空间 | 虚拟世界中的碰撞与物理效果 | 没有物理互动感 |
| 润色 | 突出互动效果的表现手法 | 平淡、缺乏生气、令人难以信服 |
人类感知阈值
修正周期
玩家以约 240ms 的周期进行感知、思考和行动:
- 感知处理器:约 100ms
- 认知处理器:约 70ms
- 运动处理器:约 70ms
关键阈值
| 阈值 | 数值 | 效果 |
|---|---|---|
| 运动错觉 | 10+ fps | 低于此值时,感觉不到运动 |
| 平滑运动 | 30+ fps | 运动感觉流畅 |
| 即时响应 | <50ms | 感觉可以直接操控 |
| 可察觉的延迟 | 100-200ms | 操作迟缓,但仍可使用 |
| 操控失效 | >240ms | 玩家会察觉延迟,手感开始崩坏 |
“50ms 的响应时间会让游戏感觉像是身体的延伸。超过 100ms,就会察觉到延迟。超过 240ms,实时操控便会失效。”
参见:references/perception-thresholds.md
游戏手感的六项指标
1. 输入
物理设备及其发送的信号。
衡量方式:灵敏度、状态、信号类型(布尔值或连续值)、人体工学设计
2. 响应
输入如何映射为游戏状态变化。
衡量方式:直接或间接映射、模拟复杂度、ADSR 包络
3. 环境
为空间运动赋予意义的环境。
衡量方式:物体间距与角色速度的相对关系、碰撞密度、关卡布局
4. 润色
突出并强化互动效果的表现手法。
衡量方式:粒子效果、屏幕震动、动画同步、声音设计
5. 隐喻
游戏所表现的内容及其带来的预期。
衡量方式:写实与抽象、玩家预期、类型惯例
6. 规则
影响即时手感的游戏规则。
衡量方式:生命值系统、风险与奖励、状态变化、能力解锁
参见:references/six-metrics.md
游戏手感的 ADSR 包络
借鉴自声音合成,用于描述响应如何随时间变化:
Sustain ___________
/ \
/ Attack Decay \ Release
/ \
_/ \_____
| 阶段 | 描述 | 示例(马力欧跳跃) |
|---|---|---|
| 起音 | 达到完整响应所需的时间 | 按住按钮时,跳跃力度逐渐增强 |
| 衰减 | 过渡到持续水平 | 初始爆发后逐渐平稳 |
| 延音 | 按住输入时保持的水平 | 保持最大跳跃高度 |
| 释音 | 停止输入后的衰减 | 松开按钮后由重力接管 |
关键要点:大多数“飘忽”与“紧实”手感的差异,都来自起音和释音时间。
参见:references/adsr-tuning.md
常见操控手感词汇
| 术语 | 含义 | 典型成因 |
|---|---|---|
| 紧实 | 精准、响应即时 | 起动时间短、加速度高、释放时间短 |
| 飘浮 | 松散、延迟、漂移 | 起动/释放时间长、惯性大 |
| 响应灵敏 | 立即按预期行动 | 响应时间 <100ms、直接映射 |
| 迟缓 | 感觉延迟、沉重 | 响应时间 >150ms、起动时间长 |
| 滑溜 | 难以精准停下 | 摩擦力低、释放时间长 |
| 黏滞 | 难以开始移动 | 摩擦力高、起动时间长 |
| 厚重 | 感受到质量和动量 | 加速度曲线、重力强度 |
| 干脆 | 状态切换迅速 | 起动时间和释放时间都短 |
模拟基础
位置、速度与加速度
| 层级 | 变化内容 | 手感 |
|---|---|---|
| 设置位置 | 直接传送 | 僵硬、机械(Donkey Kong) |
| 设置速度 | 直接改变速度 | 响应灵敏但不自然 |
| 施加力 | 增加加速度 | 流畅、符合物理规律(Mario、Asteroids) |
Asteroids 原则
将推进与旋转分开,营造富有表现力的太空操控感:
- 旋转:直接、即时(不进行模拟)
- 推进:沿飞船朝向施加力(经模拟)
- 效果:飞船感觉仿佛即将失控,却从未真正失控
Mario 原则
将水平与垂直系统分开:
- 水平:加速度、最高速度、减速度、奔跑修正
- 垂直:跳跃力、重力、下落重力(正常值的 3 倍!)、终端速度
- 按住按键的时间会影响跳跃高度(设有最小值/最大值)
参见:references/simulation-recipes.md
Mario 跳跃方案
游戏史上被分析最多的跳跃:
水平移动
Walk acceleration → Walk max speed
Run acceleration → Run max speed (B held)
Air acceleration (reduced)
Deceleration (same for walk/run)
垂直移动
Initial jump force (instant, large)
Gravity (constant, moderate)
Jump button hold → extends upward force (with max time)
Early release → force artificially set to low value
Apex detection → gravity triples for descent
Terminal velocity cap
让它奏效的“技巧”
当玩家提前松开跳跃键时:
- 检查向上的速度是否 > 阈值
- 如果是,则立即将速度设为预设的低值
- 无论松开时机如何,都能形成一致的弧线形状
参见:references/mario-mechanics.md
重要的润色细节
三级冲击系统
轻微/中等/强烈冲击各自配有:
- 独特动画
- 独特音效
- 独特视觉效果(粒子、屏幕震动)
声音与动作的协调
- 音高上升 = 动作上升(Mario 的跳跃音效)
- 冲击音效与视觉规模相匹配
- 脚步声与动画帧同步
- 按材质区分音效(金属、草地、石头)
交叉机制的感受
多种机制应让人感觉遵循同一套物理规律:
- 游泳感觉飘浮,正是因为奔跑感觉踏实
- 飞行违背的是同一套重力规律,而这套规律也会影响跳跃
- 对比带来感知上的一致性
参见:references/polish-effects.md
背景:为操控手感设计关卡
空间关系必须符合机制
- 跳跃高度 → 平台高度
- 奔跑速度 → 通道宽度
- 停止距离 → 危险物前的间隙大小
“恰到好处”原则
物体的间距应使预期动作勉强能够成功:
- 远跳间隙:恰好等于远跳距离
- 三段跳高度:恰好等于三段跳的最高点
- 成功完成时会产生掌握技巧的成就感
柔性边界
用物理规律引导,而不是用墙壁阻挡:
- 陡坡会导致滑行(Mario 64)
- 水会减慢移动速度
- 风会将玩家推向预期方向
“玩家不会感受到设计师直接介入。限制看起来像是合乎逻辑的结果,而不是明显的约束。”
参见:references/spatial-context.md
调试手感问题
| 症状 | 可能原因 | 修复方法 |
|---|---|---|
| “漂浮” | 攻击/释放时间过长 | 缩短加速度曲线 |
| “迟缓” | 响应延迟过高 | 降低输入到显示的延迟 |
| “打滑” | 减速度过低 | 增加摩擦力/减速度 |
| “僵硬” | 没有加速度曲线 | 为移动添加起势阶段 |
| “无响应” | 输入未被检测到 | 检查输入轮询率 |
| “难以预测” | 轨迹不固定 | 为特殊动作使用固定弧线 |
| “失重” | 重力较弱 | 尤其要增大下落重力 |
优秀游戏手感的原则
- 可预测的特殊动作 — 为精准操作使用固定轨迹
- 多变的基础动作 — 为即时操控提供丰富的表现空间
- 一致的抽象 — 采用简单但自洽的物理规则
- 超越隐喻预期 — 手感比画面所暗示的更真实
- 打磨让各方面协调一致 — 声音、视觉和动画讲述同一个故事
- 情境符合能力 — 关卡设计尊重角色的能力限制
- 响应时间 < 100ms — 保持即时的手感
- 对比创造多样性 — 不同机制带来不同的手感
快速参考:经典手感特征
Asteroids(漂浮的太空感)
- 推进与旋转分开处理
- 摩擦力极低(停止需要 4 秒以上)
- 屏幕边缘循环衔接
- 旋转:即时响应,不做模拟
Super Mario Bros(平台游戏的黄金标准)
- 水平和垂直系统分开处理
- 跳跃高度可变(按住按钮)
- 下落时重力增至三倍
- 奔跑修正同时改变加速度和最高速度
- 空中操控能力降低
Mario 64(3D 转换)
- 相机相对方向的摇杆控制
- 基于斜坡的滑行动力学
- 多种跳跃类型,各自使用固定轨迹
- 转弯时采用弧线插值
- 地面砸击作为精准着陆工具
参见:references/classic-profiles.md
核心准则
- “游戏应当像身体的延伸。”
- “系统分开,世界统一。” — 机制彼此独立,物理规则保持统一。
- “超越隐喻。” — 手感要胜过视觉呈现。
- “精准靠固定,表现靠变化。” — 特殊动作与基础动作各有所长。
- “打磨不是可选项。” — 效果能让交互更有说服力。
- “240ms 是极限。” — 实时操控的响应时间上限。