横板格斗游戏设计金字塔
1. 基础架构层
graph TD
A[输入响应] --> B[8方向识别+按键组合]
C[状态管理] --> D[硬直/取消/霸体状态]
E[空间划分] --> F[前后台判定/Z轴深度]
2. 战斗系统核心三要素
- 时机系统:
- 预输入缓冲(例如:提前6帧输入保持)
- 复合指令识别(→↓↘ + 拳)
- 连段取消窗口(普通技→必杀技的3帧黄金时间)
-
空间系统: │ 攻击范围 = 基础攻击距离 × 角色体型系数 │ 受击框动态调整( crouch状态高度减少30%) └ 场景互动区域(版边反弹/地形杀)
- 资源系统:
pie title 资源类型占比 "气槽" : 45 "防御值" : 30 "觉醒状态" : 25
深度系统设计思路
1. 攻击判定九宫格
攻击效果 = 基础值 × 位置修正
↓
[1.2][1.0][0.8] ← 头部修正
[1.0][1.0][0.9] ← 躯干修正
[0.7][0.8][1.1] ← 下肢修正
2. 防御动态平衡机制
- 完美格挡:防御后3帧反击窗口
- 破防系统:连续防御10次后护甲值归零
- 择策略: │ 上段攻击 ← 站防有效 │ 下段攻击 ← 蹲防必需 └ 投技攻击 ← 拆解指令
单次攻击全流程时序图
sequenceDiagram
participant 玩家输入
participant 指令系统
participant 状态机
participant 动画系统
participant 命中检测
participant 伤害计算
participant 受击反馈
participant 镜头系统
玩家输入->>指令系统: 按下攻击键(帧0)
指令系统->>状态机: 触发"攻击启动"事件
状态机->>动画系统: 播放攻击动画(帧1)
loop 每帧检测
动画系统->>命中检测: 提交当前帧碰撞体数据(帧N)
命中检测->>伤害计算: 检测到有效命中(帧6)
伤害计算->>状态机: 计算伤害值(攻击力×修正系数)
状态机->>受击反馈: 触发受击状态(硬直15帧)
受击反馈->>镜头系统: 请求屏幕震动(中强度)
end
动画系统->>状态机: 动画播放完毕(帧24)
状态机->>指令系统: 恢复可操作状态
关键节点说明:
- 攻击启动阶段(帧0-5):
- 输入缓冲窗口处理
- 攻击初始姿态准备
- 攻击属性确认(上/中/下段)
- 有效判定阶段(帧6-12):
- 碰撞盒动态调整(每帧更新位置)
- 伤害类型判断(普通/破防/暴击)
- 连段计数递增
- 收招阶段(帧13-24):
- 取消窗口检测(允许特殊技取消)
- 硬直恢复计时
- 角色回归中立状态
进阶版本可扩展:
graph TB
A[攻击启动] --> B{命中?}
B -->|是| C[伤害结算] --> D[受击反应]
B -->|否| E[收招恢复]
D --> F[镜头特效] --> G[连段计数]
G --> H{满足条件?}
H -->|是| I[触发特殊效果]
H -->|否| J[回归中立]
现代格斗游戏四大进化方向
- 逆向兼容设计
- 新旧机制并存(《街霸6》Modern/Classic双控制模式)
- 动态难度平衡
graph LR A[新手] -->|自动连招| B[25%伤害补正] C[高手] -->|手动输入| D[120%伤害加成]
- 视觉反馈强化
- 命中停顿:关键攻击冻结2帧
- 镜头抖动:重击时摄像机震动
- 特效分级:轻拳→火花 / 超杀→全屏粒子
- 网络对战优化
- 延迟补偿:3帧回滚缓冲
- 行为预测:提前模拟5种输入可能
经典问题解决方案库
Q1:如何设计有差异化的角色?
-
移动系统差异化: │ 标准型:前后Dash │ 跳跃型:三段跳 │ 特殊型:瞬移/爬墙
-
能量系统特化: │ 累积型:随时间增长 │ 攻击型:命中获取 └ 风险型:受伤增加
Q2:如何处理无限连问题?
- 连段伤害衰减(第5hit开始70%递减)
- 强制受身机制(空中被击3次后自动脱离)
- 资源限制(必杀技消耗气槽无法无限使用)
设计检验清单
- 每个角色是否有至少3种进攻路径?
- 系统是否支持200ms内的输入响应?
- 是否所有攻击都有明确的反制手段?
- 新手能否在10分钟内理解基础规则?
- 高手能否开发出超过设计师预期的连段?