单击游戏交流网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 158|回复: 20

2d格斗游戏制作基础知识

[复制链接]

2

主题

3

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2022-9-21 14:40:11 | 显示全部楼层 |阅读模式
本电子书下载:链接:https://pan.baidu.com/s/1rKch1oC4us8Nq32ellW0eA
提取码:mn0y

===================
本文为上述电子书的网页版,作者为厉风(也就是我老人家),本文只贴出本电子书的一小部分内容,其余内容请查阅上述电子书,本书写于2014年之前

===================前言======================
本书所列内容仅是格斗游戏中最基础和最简单的部分,相当于格斗游戏制作领域经验的冰山一角(全部内容恐怕要编写一本大辞典才能粗略讲清楚,格斗游戏水深无比,因此即使是当年街霸2这种简单到不能再简单的格斗游戏,任天堂南梦宫等公司照样仿制不出来)
2d格斗游戏的复杂性远远超出即时战略、角色扮演、足球篮球那些类型的游戏,其根本原因在于格斗游戏有最复杂的指令系统,最复杂的判定系统,最复杂的战斗条件、所以也有最复杂的AI,在这些层面上的东西还需要同时运行并相互影响,在制作中总会出现各种想不到的bug,即使是一个像街霸2那样简单的格斗游戏,要想将游戏各个并行系统调整到协调配合也不是很容易的事情,而游戏系统的设定越复杂,这种协调就越困难
即使是3d格斗游戏(例如vr战士和铁拳、生死格斗等),其复杂性也远远不及2d格斗游戏,虽然表观上看来,似乎2d格斗游戏所有的东西3d格斗游戏都有,但具体的判定细节是完全不同的,3d格斗游戏充其量是在效果上看似招办的很像,实质却完全不是那么回事

【注释】上述说法年代比较久远(本书中拳皇的案例还仅限于9X系列),在今天看来已经不经一驳,各位读者不必在意,2d格斗游戏在最近这些年取得的进步已经远远落后于其他种类的游戏了。

举个例子,拳皇中有如下几种投技:
1---普通投技,攻击命中敌人被投属性受伤区触发投技成功,开始控制对手,敌人处于攻击状态时投技无效(抓空且被攻击)
2---距离投技,敌人与我方距离足够近时只要不在空中就能抓到,无论敌人有没有受伤区(通常默认不能攻击空中敌人),敌人处于攻击状态也会被投,不能追击(对已经受伤或者防御的敌人无效)
3---打击投技,打中敌人受伤区域就能对敌人进行控制,即使敌人已经受伤和防御(98八神的指令投就是典型)
4---伪投技,实际上就是攻击招式,只是打中敌人之后开始控制敌人,因此能被防御:敌人防御本招之后,我方不能控制敌人
拳皇中还有好多种当身(格挡反击或反投),实现方法完全不同,细节效果也不同,这里不细表了
其他招式类型(即使是普通攻击或者扔飞镖的招式)也都分许多种不同机制

这些招式看似都是同类的,但实现原理有本质不同,除了2d格斗游戏之外,其他动作游戏根本没有这么复杂的设定,这么多种类的招式,实现原理如此多样,要保证它们之间的判定不出故障是个很麻烦的事情,所以97、99等bug满天飞,其实要说那些bug,算是出的少了,换一般的制作公司来做同样的东西,恐怕难以出厂(各种显见的bug估计都解决不掉,最后项目都要坑爹)
3d格斗游戏中的投技完全都是打击投,没有另外三种,当身也只有一种,至于其他常规打击招式和飞镖招式更没有本质区别,所以我们常说3d格斗游戏比2d格斗游戏简单太多了,3d格斗游戏的复杂性与常规动作游戏没有本质区别(指令系统甚至没有2d动作游戏复杂)

一些老黄历:
snk经历龙虎之拳、旧版饿狼传说、新版饿狼传说、拳皇94~96四个系列的探索,才最终推出拳皇97这一革命性作品,而它却bug百出
直到拳皇98才真正成为巅峰的一作(99开始又是bug满天飞,后面几代几乎永无宁日了,直到拳皇10完全由snkPM重设系统,去掉了原有的复杂性,才算是解决了bug要人命的问题,实际上bug还是有,但是拳皇玩家群早已衰落,没有什么人会像当年研究97那样研究10了,之后的11,12,13更是如此,网游大时代早已经把格斗游戏挤入小众爱好圈,全民深入研究的时代早已终结)
snk在格斗游戏界是不可超越的巅峰,而它最巅峰的一作其实是《饿狼传说-狼之烙印(群狼之证)》,这游戏的系统以拳皇98为基础构架(99开始有了新构架,而且是个问题多多的构架),稳定性和功能完备性无可比拟,这恐怕是snk原始公司格斗游戏领域最重要的制作机密所在,估计后来的snkPlaymore也没有得到这个构架的原版程序,得到的只是99采用的母程序(这个其实是降级版的)
至于snk同期推出的《snk  vs capcom》在基础系统上简直就是渣作

capcom制作《capcom vs  snk》的程序构架则很可能98原版的,虽然素材形制不同,但系统很像,玩家中有一种猜测是98的设计师被capcom挖走了,98的原始程序可能随着去了卡普空,当这只是猜测

在实际制作中可能会遇到巨量细节问题,是在本书中没有提到的,遇到的时候再细说吧  

=============格斗游戏的框架=================
本部分只介绍最关键的系统,或者格斗游戏特有的系统,至于血条计分显示、过关判定、过场动画之类的东西,本书不做涉及

本部分所含各篇文章,都仅对关键系统作原理或者概括上的介绍,而不涉及到具体细节(例如受伤反应系统不会介绍相关的受身反击系统,也不会介绍具体的制作,制作请看下一部分介绍具体制作的相关内容)

受伤招式系统:
由受伤招式组成的体系,同一个游戏中的每个人物都含有同样多的受伤招式,受伤招式在人物被打伤或者被投技控制时自动使用
受伤招式系统包括两类招式:受伤招式  和  被控招式
受伤招式是在人物被敌人打伤时自动使用的招式(例如被打飞坠落躺倒),被控招式是在人物被敌人投技控制时自动使用的招式(例如被敌人扔出,动作和被打飞坠地形似,但却是不同的招式)
这些招式就像是人物的基本移动技能一样,属于人人都有的基础招式
每个人物的同一个受伤招式(例如站立轻度受伤后仰)的动作持续时间、后退距离、后退速度和加速度等指标都是一样的,这是为了保证通用连续技可成立
但不同人物的身高不同导致他们的受伤区域面积和阻挡区域面积不同,这是不同人物受伤招式的唯一区别,这个因素导致了那些只对特定角色成立的连技的成立
需要说明的是:防御成功以后的后退动作也属于受伤招式,防御成功也属于被打伤

商业格斗游戏标准受伤招式系统招式列表(蓝色字为拳皇专有,红字为受伤招式后续招式):
==========受伤招式(防御成功也是受伤)=========被打伤时自动使用
【注】拳皇的受伤招式默认是后退的,但如果敌人在身后攻击我方,我方受伤动作则是前进的,速度和加速度不变(防御招式没有这个效果,总是后退)
1站立轻防御,后退初速小,加速度(减速)也小,持续时间短,没有纵向移动,后退速度减至0时有一小段时间原地不动(立和蹲防御结束都有这个停顿,停顿时间都一样)
2蹲轻防御,同上,区别仅在于动画和受伤框(含阻挡框)大小不同
3站立重防御,后退初速大,加速度(减速)也大,持续时间长,没有纵向移动
4蹲重防御,同上,区别仅在于动画和受伤框(含阻挡框)大小不同
5跳轻防御,向后斜抛以抛物线后退,初速度(向上分量)小,滞空时间略短,落地恢复站立
6跳重防御,向后斜抛以抛物线后退,初速度(向上分量)比轻防御略大,滞空时间略长,一般与轻防御效果区分不明显,但即使是这么一点差距,在战术上的影响也是巨大的,落地恢复站立
7站立轻后仰,速度和时间等参数与站立轻防御相同,但后退速度减至0时立即结束,没有防御的原地不动时间
8站立轻前俯,同上,只是动画和伤区略有不同
9蹲轻后仰,同上,只是动画和伤区略有不同
10站立重后仰,速度和时间等参数与站立重防御相同,但后退速度减至0时立即结束,没有防御的原地不动时间
11站立重前俯,同上,只是动画和伤区略有不同
12蹲重后仰,同上,只是动画和伤区略有不同
13站立被绊倒,与跳防御的时间速度参数相近,有专用动画与其他空中受伤区分,落地躺倒(躺着触地后弹,所有躺着触地后弹的反弹高度和反弹距离都相同,它们都是同一招式,这类招式称为受伤招式的后续招式
14空中仰受伤至立,与跳轻防御的时间速度等参数相同,落地恢复站立
15空中仰受伤至躺,后退比 站立被绊倒 远,落地躺倒(躺着触地后弹)
16空中仰受伤至趴,后退与 空中仰受伤至躺 相同,落地趴倒(趴着触地后弹)
17空中仰受伤旋转上升落至躺,后退比  空中仰受伤至躺 还要远,有专用动画,落地躺倒(躺着触地后弹)
18空中仰受伤旋转上升落至趴,后退比  空中仰受伤至躺 还要远,有专用动画,落地趴倒(趴着触地后弹)
19空中仰受伤旋仰上升旋转退落至趴,后退距离极小,上升高度极高,有专用动画,落地趴倒(趴着触地后弹)
20空中俯受伤至趴,后退参数与 空中仰受伤至躺 相同,落地趴倒(趴着触地后弹),所有能将敌人打成 空中仰受伤至躺  的攻击招式在爆气之后能把敌人打成这个效果
21空中俯受伤高飞退至躺,后退距离比 空中仰受伤至躺  少,但竖直向上飞行高度较高,动画与 空中仰受伤至躺 相同,落地躺倒(躺着触地后弹)
22空中俯受伤高飞退至趴,后退参数与 空中俯受伤高飞退至躺 相同,落地趴倒(趴着触地后弹),所有能将敌人打成  空中俯受伤高飞退至躺 的攻击招式在爆气之后能把敌人打成这个效果
23空中仰姿态被击落下落至躺,直落,速度很快,落地躺倒(后背撞地后弹,有较长时间定格)
24空中仰姿态被击落退落至躺,斜后落,速度很快,落地躺倒(后背撞地后弹)
25空中俯姿态被击落下落至趴,直落,速度很快,落地趴倒(头胸撞地后弹,有较长时间定格)
26空中俯姿态被击落退落至趴,斜后落,速度很快,落地趴倒(头胸撞地后弹,有较长时间定格)
【彩蛋】关于这四个坠落的秘密:在低空出现时,由于很快落地,落地姿态就和上述一样。但如果在高空(例如画面顶部)被击落,在空中的坠落时间就足够长,以至于落地时坠地动作改变,原来是趴的一律变成躺,原来是躺的一律变成趴,这是拳皇98的彩蛋,其他版本未发现这个隐藏效果,所以拳皇系列中98是最神的一作,没有之一。这个秘密目前尚未公开,知道的人很少

27站立仰俯仰俯仰飞退至躺,除了开始原地站立仰伤和俯伤姿势切换以外,从开始仰飞后退起,与 空中仰受伤至躺  完全相同,八神的八酒杯能打出的专用受伤招式
28神·空中仰受伤旋转上升落至趴,与  空中仰受伤旋转上升落至趴 几乎相同,只是被连击时没有受伤停顿且自身动画不被打断和重置,大蛇圣光普照能打出的专用受伤招式
29立防御崩坏,人物在地面受攻击防御崩坏时做出此动作(无论人物处于站立还是蹲状态),与站立受重伤后退的速度时间参数相同
30跳防御崩坏,人物在空中受攻击防御崩坏时做出此动作(无论人物处于站立还是蹲状态),与 空中仰受伤至立  的速度时间参数相同,落地恢复站立

===========被控招式============被敌人投技或伪投(打中后控制技)控制后自动使用
【原地静止动作类,动画是单一图形】
101被控立俯受伤-3图禁拆,投技抓到敌人的瞬间,敌人做出的动作,本招式中不可拆投,指令投抓到敌人时,敌人都处于此招状态,所有的无拆投的格斗游戏中投技抓到敌人瞬间,敌人都处于此状态,图形是站立俯受伤四张图中第三张(四张图按照屈体严重程度由低到高为标号1234,拳皇受伤招式素材标准具体参见贴吧帖子


102被控立俯受伤-3图可拆,投技抓到敌人的瞬间,敌人做出的动作,本招式中可拆投,拳皇中普通投抓到敌人时,敌人都处于此招状态,这个招式非常重要,只有在它结束前可以拆投,一旦人物转入其他被控招式,就不能拆投了。在人物进入此状态后第二帧才开始允许拆投
103被控立俯受伤-3图被抓头部,人物投技控制攻击时,头部遭到攻击专用,例如克里斯或七枷社按敌人头翻至敌人身后,例如军爷空中的绞刑旋转,被控制的敌人都处于本招状态下
104被控立微仰受伤-1图,
105被控立弱仰受伤-2图,
106被控立中仰受伤-3图,
107被控立强仰受伤-4图,
108被控立微俯受伤-1图,
109被控立弱俯受伤-2图,
110被控立中俯受伤-3图,
111被控立强俯受伤-4图,
112被控蹲微仰受伤-1图,
113被控蹲弱仰受伤-2图,
114被控蹲中仰受伤-3图,
115被控蹲强仰受伤-4图,这12个招式都是我方控制敌人做出的静止动作,具体图形参看上面链接帖子,这12个招式用于人物被敌人抓着打的时候做出受伤动作
116被控倒立微俯受伤-1图,
117被控倒立弱俯受伤-2图,
118被控倒立中俯受伤-3图,
119被控倒立强俯受伤-4图,这4个招式用于人物被头向下砸向地面的投技使用

120被控飞退后仰姿,人物从站立被打飞开始后仰的姿态图,头在上,面朝前上,身体角度比站立倾斜45度
121被控飞退躺姿,人物从站立被打飞后仰至身体水平姿态图,头在人物原来站立时的背后方向,面朝上
122被控飞退头下脚上倾斜姿,比上一姿态又转过45度,头在后下方,面朝后上,空中被击飞由仰躺转换为头向下趴着坠落前的转换姿态就是这个招式用的图
123被控头朝下坠落姿,面向后方倒立坠落姿态,空中被击飞由仰躺转换为头向下趴着坠落时的坠落姿态就是这个招式用的图
124被控头朝下扑姿,头在前下方,脚在后上方,扑倒的姿态,空中头向下坠落着地后转化为趴所用到的过渡图就是本招式所用的图
125被控趴着姿,头在前,脚在后,面向下趴着
126被控头朝上扑姿,头在前上方,脚在后下方,前扑的姿态
127被控头朝上飞升姿,头上脚下,面对前方的正立仰姿态
【注】上面8个招式正好是人物转动一周,大门五郎跘摔敌人和麻宫雅典娜投技旋转敌人身体用,微丝等人物投技中把敌人拖在地上走然后向前提起扔上空中时也将用到这些动作,这8个动作在街霸中用于红肯著名的投技“地狱车”以及T·Hawk的“墨西哥大风车”

128被控折腿-1图,
129被控折腿-2图,玛丽折断对方腿的关节技专用

130被控旋转飞-1图,
131被控旋转飞-2图,
132被控旋转飞-3图,
133被控旋转飞-4图,这四个招式用的图分别是空中仰受伤旋转上升时用到的四张图,即人物头在后上,脚在前下,以脊柱为轴自转时用到的四张图,一些特殊投技将用到这四张图

【投技抛出类,都是动态的,这些招式有自己的移动速度持续时间等设置,很多看似和受伤招式一样,但请注意它们没有被击中时的原地定格震动,而且有些招式移动速度也和受伤招式不同】
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眩晕后倒地,镇元斋投技效果,这个不是真正的眩晕招式,真正的眩晕招式集成在倒地爬起招式里

其他受伤招式的后续招式:
躺着爬起至蹲(注意不是恢复站立!是恢复到蹲的动作,然后如果玩家没有按↓来蹲,爬起的招式结束会自动回复站立。如果你让人物爬起恢复到站立,那么当玩家按住↓的时候,你的人物会爬起之后先站立又蹲下,这个效果是错的,没有一个格斗游戏是这样的!)
趴着爬起至蹲(同上,另补充:眩晕招式是集成在这两个爬起招式里的,爬起后判定条件来决定是否跳转去眩晕)

具体运动参数(速度和持续时间等,可用kawaks街机模拟器打开拳皇游戏进行采集,推荐98,系统最严谨,而且有彩蛋,99开始走下坡路,2000以后的作品无研究价值,受伤反应系统各种粗制滥造)

受伤反应系统的作用可看帖子
招式取消系统:
包括常规移动招式(站立,前进后退,跳跃,蹲,转身等)的互相取消规则
也包括受伤招式取消其他招式(在人物受伤时)的规则,以及受伤招式进行中输入指令激活特殊招式(例如反击和闪避)的功能(在某些攻击招式中也可以输入指令来变招)
此外还有超杀取消必杀,必杀取消普通攻击等攻击命中时用招式取消招式的规则
最重要的是防御生效原理,它决定防御招式如何取消普通移动招式

具体情况:
【一】基础移动招式的相互取消
人物基础移动招式为:
主动的:蹲、站立前进和后退,前、上、后三方向跳跃
被动的:站立、站立转身、蹲着转身、站立至蹲(下蹲)、蹲至站立(站起)
这些招式通常不能取消攻击招式和受伤招式,它们互相之间的取消也有限制:
站立转身、蹲着转身、站立至蹲(下蹲)、蹲至站立(站起)这四个招式实际上都是人物已经处于站立或蹲的招式出招过程中,只是程序根据状况替换了站立和蹲的动画
跳可以取消跳跃以外的其他移动招式,具有最高优先级
敌人跳过我方头顶时会触发我方的强制转身,此时我方人物会自动使用站立转身或蹲着转身招式,这两个招式具体使用哪个,取决于我方人物处于站立还是蹲着状态,它们会自动取消掉原来的站立移动或蹲(包括站蹲切换)的动作,例如当我方人物站立前进时,如果敌人跳过我方头顶,我方会站立转身然后转为后退(因为此时我方人物面对方向改变,所有涉及左右的指令都反向)
蹲可以取消所有站立移动招式,从站立状态切换到蹲的时候,会自动使用站立至蹲(下蹲)这个招式,它实际上就是蹲(状态属性和受伤区等都和蹲完全一样,被打伤后会自动转入蹲系列的受伤招式),只是图像看起来不是
从蹲恢复站立时,程序是立即恢复站立的,但站立的动画播放的是蹲至站立(站起)的动画,蹲至站立(站起)并不是一个独立招式,它只是蹲结束(玩家松开↓时)自动回复站立的结果,只不过此时程序判断战力之前的状态是蹲,于是自动将站立动画用蹲至站立(站起)替换
所有招式结束时(包括蹲停止、站立移动停止、站立停止、跳落地,攻击招式或受伤招式结束)人物都会自动转入站立招式
特殊移动招式:
如果还有快进快退,移动闪避,这些招式应该可以取消地面系统的任何基础移动招式,例如拳皇中快进可以取消站立,前进,后退,蹲等所有地面系基础移动招式,而这些招式却不能取消快进,前跳却可以取消快进,但会转变为影跳(远跳)
谁取消谁通常是绝对顺位的,不能制作成前冲可以取消蹲,而蹲也可以在前冲中取消前冲,这样并不是做不到,而是会造成玩家操作失误,影响游戏控制灵活性

【二】受伤招式取消其他招式以及受伤招式被特殊招式取消
受伤招式在人物受伤时会自动取消一切其他招式,被控招式在人物被控时也会强制取消一切其他招式(被控指敌人执行一次控制脚本强制我方进入某个被控招式)
当人物第一次被攻击受伤后做出受伤招式,如果在受伤招式未结束前,人物又受到一次攻击再次受伤,新的受伤招式将会自动取消刚才受伤招式剩余的部分,在格斗游戏中,通常受伤状态有自己的标志变量,系统只要检查这个变量的数值就知道人物是在受伤状态还是其他状态
如果任务本次受伤前已经处于受伤状态,那么在本次受伤时,将会累加连击数并通过系统图像显示,具体原理就是:
上一次受伤时,设定受伤变量为1(受伤结束时恢复为0,受伤开始乃至受伤状态中一直保持是1),每次受伤转入受伤招式时,程序先检查上受伤变量是不是1,如果是,表明上一次的受伤没结束,就被本次受伤取消了,则说明本次受伤可以计算为敌人的连击成立,于是给系统连击数加1。如果程序检查受伤变量不是1而是0,说明上一次的受伤结束了,受伤变量被归零过了,于是程序也把系统连击数清零
受伤招式中通过指令激活其他招式强制取消受伤招式就是所谓受身,常见的有:
1--防御成功开始瞬间输入某个指令激活一个隐藏攻击招式(平时不能直接使用的,必须在防御成功后可用)取消防御并反击敌人(拳皇中可消耗能量豆使用)
2--在被投技控制中输入特定指令使出特殊攻击招式来挣脱控制(例如拳皇中的拆投)
3--空中受伤坠落着地瞬间输入指令激活的闪避(拳皇中的受身闪避)
攻击招式施展中,在攻击招式出招进行到特定阶段输入指令可以用其他特定招式取消当前攻击招式,例如拳皇中草薙京的推进连技

【三】攻击命中时的招式取消
普通攻击招式攻击命中瞬间,玩家完成必杀技指令输入,可用必杀技取消当前普通攻击招式收招,此时存在一个特定的取消顺序:笼统地说可以是超杀可以取消普通必杀,普通必杀可以取消特殊技、特殊技可以取消普通攻击技
事实上,每个攻击招式都存在一个“命中取消列表”
这个列表中记录了所有能将这个招式取消掉的招式序号以及它们的激活指令,这个表像人物的指令表一样,按照指令越复杂越优先的原则多招式进行排序,在当前攻击招式攻击命中时,系统会调用这个指令表来检查玩家指令输入,如果符合表中某一招的指令条件,就用那一招取消当前攻击招式的收招

【四】防御生效原理
对防御招式的错误认识是认为格斗游戏中存在所谓防御框来判定防御成立,事实上这种判定框根本不存在
防御生效原理:
作为“预备防御”的招式被敌人攻击命中时,我方受伤动作自动转为防御成功招式(就是受伤招式中那几个名称为防御的招式)
而所谓“预备防御”的招式才是关键。格斗游戏中:
后退、按住后下的蹲、空中跳跃中按后,这三招都属于预备防御招式,它们被攻击命中时,无论敌人的攻击招式指定我方做出何种受伤动作,我方都一律无视,而是根据预备动作情况进入防御动作(站立后退转入站立防御、按后下的蹲转入蹲防御,空中按后键的状态转入空中防御,拳皇中要判定人物是否在上升阶段,如果是,防御无效)
指令响应系统
格斗游戏有最复杂的指令响应系统,因为玩家使用招式需要依靠按键组合,这里就涉及到程序应该优先响应哪个指令组合的问题,通用原则是:越复杂的指令越优先响应,例如人物白隆面对右侧时:
→↓↘拳(升龙拳)要比↓↘拳(波动拳)优先,因为前者指令更复杂
如果玩家成功输入升龙拳指令,则会优先激活升龙拳招式,而不是波动拳
指令系统的主要功能有:
定时记录玩家输入(通常为每1/60秒记录一次,每秒记录可达60次,古典游戏为30)
每次记录完毕时,按照人物的招式指令表检测一下玩家输入是否符合指令表中记录的指令成立条件,先从复杂指令开始检查,复杂指令不成立时检查简单指令,如果复杂指令成立,则判断人物当前是否处于允许使用该指令对应招式的状态,如果是,在本系统改变人物招式(效果就是人物使出主动招式)

指令响应系统的工作原理
【一】缓存如何存储玩家输入的指令:
一个格斗游戏的程序每隔1/30秒检测一次玩家的输入,我们假定5代表我按下攻击键(具体什么数值代表什情况,程序设计者制定),那么如果我按下攻击键长达半秒,那么游戏就会连续记录15次我的输入,知道我松开攻击键的一刹那,用来记录玩家输入的那个数组的前16项的数值是0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5...,15个5表示我按住攻击键长达半秒的时间,0表示我松开了攻击键
如果我松开攻击键半秒后输入↑(标志数值是8),那么我刚按下↑方向键时,记录玩家输入的数组的前31项变成
8000000000000000555555555555555...表示我按下半秒攻击键(程序记录了15次5),然后什么按钮都没按持续了半秒(程序记录了15次0),然后我按下了↑(程序记录了1次8)
之后如果我按下↑之后立即同时按下攻击键,假定↑和攻击键同时按的标志数值是a,那么数组记录的我的输入是:
aaaaaaaaaaa88000000000000000555555555555555.....
表示最后一次记录时,我先按了1/15秒↑然后同时按住攻击键
嘉定我输入了很多次指令,而这个数组只记录2秒以内的玩家输入,那么按照每1/30秒记录一次来算,这个数组需要有60个项,每次记录新输入,就把原有的输入记录向后推一项,那么距离第一项记录两秒以前的输入就丢自动失了(当然,它们也没有用了)
一个波动拳指令的输入如下:假定2代表↓,3代表↘,5代表攻击键和↘用时按,整个指令要求在1/3秒内输入完成,那么下列输入就能成功激活波动拳:
5553322222000000..即最近记录的5是攻击键和↘同时按,3表示按下↘但还没来得及按攻击键时,2表示按住↓,000000...表示之前没有输入任何指令
逆推过来就是先按2(↓,然后输入3,即↘),然后同时按住攻击键,即5,所有523记录总数不超过10,说明总输入时间不超过1/3秒,符合指令成功条件,所以这条指令被判定为↓↘+A输入成功
类似地,5555333220000777799988880.....和532220000000.....都属于成功的输入
为什么呢?这就要说说指令响应系统如何来判断指令输入成功

【二】读取缓存数据判定指令输入
程序在指令表中查到↓↘+A对应的是5,3,2组成的一个数值序列,它会先检查最近一次输入是不是5,如果是,继续检查5之前的数是什么,如果还是5就继续检查更前一个数,指令输入时间要求1/3秒内,就表示程序只检查包括最后一次输入在内的1/3内的全部10项数值,如果前几位都是5,就继续检测,如果5之后出现个4,那就表示输入的不是532的排列,判定输入失败。
如果前几位全是5,继续检测发现有5前有3,那几继续检查3之前的数,只要不超过第十个数(1/3秒)就继续检查,如果第十个数还是3,那么无论第十一个数是不是2,指令输入都被判定为超时失败
如果在第十个数以内按顺序分别找到了5,3,2,程序就认为指令在规定时间内输入成功

如果程序检查↓↘+A输入成功,就会继续检查现在的人物是否处于发波动拳这招的条件(在地面自由站立且没有受伤没有防御),条件成立就让人物使用波动拳

如果程序检查↓↘+A输入失败,就会继续检查人物指令表中排在它后面的其他指令,例如↘+A(蹲轻拳,序列为5,3),这个如果经检查成功就让人物使用蹲轻拳,如果还不成功就检测下一指令,例如是↓+A(还是蹲轻拳,但这个指令要简单些,毕竟方向键不是两个方向一起按)。。。。直到找到一个符合当前玩家输入的指令,例如是单独的A,则程序让人物使用出A对应的站立轻拳
常见的情况:
如果1代表按住↙方向键:
00000111111就代表按住↙方向键后松开
如果6代表按→,b代表→+A,那么指令:
b66600000111111111111111111111111111111111111111111111111111111111111000000...
就代表按住↙2秒(记录60次)后松开按钮(即0)然后按→切换到→+A,街霸中美国兵的手刀气功

攻击判定系统
格斗游戏中的判定框至少分为五种属性:
普通攻击框、投技攻击框、普通受伤框、被投受伤框、阻挡框
攻击框与其他类型的判定框有部分区域重叠时,就会触发判定功能,判定功能将检测重叠的是哪两种框,并根据情况记录判定结果给专用变量,以便游戏系统根据这些判定作出处理
例如,普通攻击框与受伤框重叠时,系统检测到重叠并记录为将专用变量设置为与攻击命中对应的数值(比如1)
而系统另外的程序进程检测到这个变量数值1,就让受伤一方做出对应的受伤动作
通常只有攻击框与受伤框之间的重叠能影响系统事件(例如人物变招),而阻挡框只有在与阻挡框重叠时才起作用,而所起作用并不影响系统事件,而是修改阻挡框所在人物或者物体(例如飞镖)的移动速度,使重叠双方弹开
具体情况
拳皇中有本体攻击框、飞镖攻击框、投技攻击框、特殊追击框、当身攻击框等5种攻击框
有被投受伤框、本体受伤框、飞镖受伤框、特殊受伤框、阻挡框等5种受伤框
===========================
本体攻击框或飞镖攻击框与本体受伤框重叠判定攻击命中,如果敌人处于预备防御姿态,则触发敌人使用防御招式
本体攻击框与敌人的本体攻击框或飞镖攻击框或特殊追击框重叠时触发攻击相抵
飞镖攻击框与飞镖受伤框重叠判定飞镖命中(炸开)
飞镖攻击框与敌人当身攻击框重叠判定飞镖命中敌人(炸开)
投技攻击框与敌人被投受伤框或当身攻击框重叠判定投技命中敌人
特殊追击框与本体受伤框或特殊受伤框重叠判定特殊追击命中
阻挡框与阻挡框重叠判定人物互相推开
当身攻击框与本体攻击框或特殊追击框重叠判定当身成功
除上述情况之外的重合情况都不予判定(无意义)

用途
1----普通打击招式攻击命中:人物本体常规招式都含有本体受伤框,因此常规攻击招式的本体攻击框与敌人本体受伤框重叠判定攻击命中,如果敌人处于预备防御姿态,则触发敌人使用防御招式
2----飞镖打击招式攻击命中:飞镖攻击框与人物本体受伤框重叠判定攻击命中,如果敌人处于预备防御姿态,则触发敌人使用防御招式,而飞镖没有本体受伤框,只有飞镖受伤框,而本体攻击框与飞镖受伤框重叠不触发攻击命中,因此人物本体不能攻击飞镖,却能被飞镖攻击
3----飞镖互抵:飞镖攻击框与飞镖受伤框重叠判定飞镖命中(炸开),飞镖只有飞镖攻击框和飞镖受伤框,所以飞镖与飞镖只能互抵(都炸开)
4----投技:我方投技攻击框与敌人被投受伤框重叠判定投技命中,被投受伤框只有人物本体可用,飞镖不带有这个属性的受伤区,所以飞镖不能被投技攻击,但飞镖也可以带有投技攻击框,这样的话,当飞镖外观看起来像是援护时,这个援护也可以用投技攻击敌人本体(但不能用投技攻击敌人的援护)
5----特殊追击属性:拳皇中人物被击飞到空中开始坠落时,其受伤框属性就从本体受伤框变成了特殊受伤框,此时普通攻击招式的本体攻击框无法攻击坠落的敌人,只有特殊追击框与特殊受伤框重叠判定特殊追击命中
倒地的敌人有时也能被攻击,也是因为此时他带有特殊受伤框,能被具有特殊追击框的专用攻击招式攻击
6----当身(格挡反击或反投):人物使用的攻击招式具有当身攻击框时,当身攻击框与敌人的本体攻击框或特殊追击框重叠判定当身成功,请注意,当身攻击框不具有主动攻击性,因为它和任何受伤框重合时都不做任何判定。然而不能抵挡飞镖攻击框和投技攻击框,所以当身招式不能反击投技或飞镖,当身招式反而会被投技和飞镖攻击命中
7----强硬格挡:由于本体攻击框与敌人的本体攻击框或飞镖攻击框或特殊追击框重叠时触发攻击相抵,此时本体攻击框不具有攻击性,但可以用来挡掉敌人的攻击
8----反射飞镖:人物前方反射飞镖的部分携带飞镖攻击框,能对飞镖和敌人本体进行攻击(分别给出两种不同攻击命中判定),一旦攻击命中对方飞镖,就跳转去我方发射飞镖的一个隐藏招式,发射一个飞镖作为反射的飞镖,如果命中的是敌人本体,则不进行任何跳转

拳皇各类招式携带的框
1---普通移动招式(立蹲跳等):含有被投受伤框、本体受伤框、阻挡框、可以被普通攻击、特殊追击和投技攻击,不含有攻击框
2---普通站立攻击招式(近身的):与敌人距离很近时使用的普通攻击招式与远距离使用的普通攻击招式不同,它只含有本体受伤框和阻挡框,可以被普通攻击、特殊追击攻击,但不能被投技攻击,因此近身攻击招式是用来克制一切投技(包括指令投)的,仅含有本体攻击框1种攻击框
3---普通地面攻击招式(远身的站立系或任意距离下的蹲系):与敌人距离较远时使用的普通攻击招式,含有被投受伤框、本体受伤框、阻挡框、可以被普通攻击、特殊追击和投技攻击,仅含有本体攻击框1种攻击框
4---闪避(包括移动闪避):起始和结束含有被投受伤框、本体受伤框、阻挡框、可以被普通攻击、特殊追击和投技攻击。中间过程只含有被投受伤框、只能被投技攻击。全程不含有攻击框
5---防御成功招式:含有本体受伤框、阻挡框、可以被普通攻击、特殊追击攻击,但不能被投技攻击,全程不含有攻击框
6---地面受伤招式(立和蹲):含有被投受伤框、本体受伤框、阻挡框、可以被普通攻击、特殊追击和投技攻击,不含有攻击框
7---空中攻击招式:含有本体受伤框、阻挡框、可以被普通攻击、特殊追击攻击,但不能被投技攻击,全程不含有攻击框,对空的投技都是用本体攻击框来攻击的,而不使用投技攻击框。空中攻击招式全使用本体攻击框来攻击
8---空中受伤招式:上升阶段可能含有本体受伤框(上升阶段禁止追击的没有这类受伤框),但一定含有阻挡框。下降阶段可能含有特殊受伤框(下降阶段禁止追击的没有这类受伤框)),但一定含有阻挡框。全程没有攻击框
9---普通投技:含有本体受伤框、阻挡框、可以被普通攻击、特殊追击攻击,但不能被投技攻击,含有投技攻击框
========特殊招式=======
10--扔飞镖招式(包括召唤援护):人物本体含有被投受伤框、本体受伤框、阻挡框、可以被普通攻击、特殊追击和投技攻击。飞镖含有飞镖攻击框与飞镖受伤框
11--当身(格挡反击)招式:含有当身攻击框,能被飞镖和投技攻击,但不会被其他攻击招式攻击,如果不是全身性的当身,例如只有上半身能当身,那么上半身就含有当身攻击框,下半身含有被投受伤框、本体受伤框、阻挡框、可以被普通攻击、特殊追击和投技攻击
12--指令攻击或指令投:全程含有阻挡框、攻击性存在时不含有被投受伤框、可能瞬间不含有本体受伤框(暂时无敌),其他时间都含有被投受伤框和本体受伤框。攻击招式可能含有本体攻击框和特殊追击框,指令投只含有投技攻击框
13--格挡型攻击招式:全程含有阻挡框、攻击性存在时局部不含有被投受伤框和本体受伤框、其他时间都含有
被投受伤框和本体受伤框、攻击时使用本体攻击框,不能追击特殊受伤框,但能够通过专用程序判断攻击相抵来挡掉敌人攻击
14--伪投:全程含有被投受伤框、本体受伤框、阻挡框、本体攻击框,攻击命中后强制控制敌人进入被控招式,使敌人没有时间自动转入受伤招式,看起来就像投技,但实际上能被防御(判定攻击被敌人防御时不控制敌人)
15--反射飞镖:与格挡型攻击招式类似,全程含有阻挡框、攻击性存在时局部不含有被投受伤框和本体受伤框、其他时间都含有被投受伤框和本体受伤框、攻击时使用飞镖攻击框,攻击命中敌人飞镖时跳转去隐藏的发射飞镖招式(平时无法使用的)来发射一个飞镖作为反射飞镖,反射飞镖可以使我方自己独有的飞镖,也可以是调用敌人的飞镖

人物的必备元素
1----招式系统:
最基本的是移动招式(站立、站立移动、蹲、跳等,有些游戏还有特殊移动招式,例如快进快退和闪避)
其次是受伤招式(包括防御成功的招式)和被控招式(分为静态受控和被扔出的动态受控招式两类)
以上招式属于每个人物都必须有的招式,而且所有人物的这些必备招式的种类和数量都相同
攻击招式通常分为普通攻击招式和特殊招式
绝大多数游戏中的普通攻击招式也都可以视为必备招式,但并不是每个人物的普通攻击招式数量和种类都一样多,比如说有些人物在距离敌人远和近的不同条件下,他的站立重踢姿势不同,效果也不一样,但有些人物的重踢在距离敌人任何距离下都是一样的
特殊招式不仅限于特殊攻击招式,特殊移动技能(其他人物没有的,例如K'的远距离闪避冲)或治疗技能(椎拳崇的吃包子超杀)也算此类
招式系统自然是格斗游戏人物的核心系统

2----受伤招式表:
格斗游戏的受伤类型,通常是在游戏系统中统一制定的,即:
有多少种受伤招式和被控招式,都是作为系统的通用规范使用的
每个人物的受伤招式表列出每一种受伤招式(包括被控招式)所对应的标识变量的数值以及与之对应的招式序号,当我方攻击招式打伤敌方时,系统将会检测我方攻击招式对敌人受伤的情况是如何指定的,即检查那个标识变量值,然后从敌人受伤反应表中去查找相同变量值对应的受伤招式的序号,然后使敌人转入那个受伤招式
通常来说,如果变量值1代表人物站立轻度后仰,那么所有人物的受伤招式列表中变量值1对应的招式都应该是站立轻度后仰的那个招式的序号(尽管不同人物的这个招式的序号可能不同)

3----指令表:
指令表记录人物所有的可以被指令激活的招式在被激活时需要玩家输入什么样的指令,它对格斗游戏程序来说,是按照指令复杂程度来索引的,复杂指令排在索引前列,会被优先检索,每一种指令设置都对应记录了它能激活的招式
游戏系统的指令响应系统每隔一段时间(1/60秒或1/30秒)记录一次玩家输入,并搜索一次这个玩家所控制的人物的指令表,来检查玩家的输入符合什么条件,来激活对应招式

4----AI系统:
AI系统用于电脑操控人物战斗时,检测战斗环境条件并检索策略库中的相关条件来找到对应策略
因此策略库是这个系统的核心,它也是一个表格,以战斗环境条件(敌我距离,敌我地空状态,敌我处于受伤还是攻击状态还是自由状态,双方血量能量,战斗剩余时间等)为索引信息寄存和搜索对应于该条件的策略,这些策略是由游戏设计者预先制定好的

5----资源库:
人物的图形素材和音效素材等
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 14:41:02 | 显示全部楼层
格斗游戏表现层和逻辑层是分开的,有太多美术很高但实际判定框很矮的角色,这一切都是设计师来调控的,你写的不是很到位啊,不能只看snk的东西,他家的做的不高明。
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 14:41:13 | 显示全部楼层
看你的文章有种用mugen编辑器看角色包的感觉。很认真,但是要明白一点,逻辑和表现分开,逻辑层执行相应的问题,表现层可以完全不同。比如c社的蹲重攻击往往伴随美术上的纵轴位移,但实际上判定框并没有变化……而被抓取/受击动作是前仰后仰转圈颤抖都可以,就是个表现的事儿。比如sf3的站立重攻击属性播放的受击动画就是旋转……而2 4 5都没用。抓取逻辑也很简单就是抓取框重合则抓取成功,kof里跳跃抓不到的原因是跳跃启动帧数比抓取帧数少………
回复

使用道具 举报

1

主题

3

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-9-21 14:42:02 | 显示全部楼层
看完本书你就会明白我书中也以街霸为例讲了很多东西并且论证了街霸在这些方面设计的优越性。
本文只是节选,电子书里面才有完整内容
回复

使用道具 举报

1

主题

4

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-9-21 14:42:37 | 显示全部楼层
有些投技是禁止抓空中的,就如有些投技禁止抓受伤状态的敌人(也就是这些投技禁止追击),而投技禁止抓防御敌人是绝大多数游戏的硬性设定。
投技可以抓什么状态是有一个列表的,不是靠帧数多少这种机械方式实现。
回复

使用道具 举报

1

主题

4

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2022-9-21 14:43:22 | 显示全部楼层
拳皇里面的投技类型就相当复杂(单从原理上区分就有好几种),可抓状态有很多特殊设定,此外还有好几种伪投。
回复

使用道具 举报

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-9-21 14:43:38 | 显示全部楼层
投技类型复杂么?就是多一个iu攻击属性是投技或者打击技而已。打击投就是第一下判定带投属性而已。就是第一下多画一个投技框而已。
回复

使用道具 举报

1

主题

3

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-9-21 14:44:08 | 显示全部楼层
举一下实际例子看看,没有向上的判定框就没有抓投。投技框画扁放在脚底。不能投受击敌人最笨的方法就是给状态,不让投上一个指令输入不允许投技指令排队就完了。用不着那么多状态…….
回复

使用道具 举报

1

主题

3

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2022-9-21 14:44:44 | 显示全部楼层
倒不如说抓空的是一个特殊的状态,就是投技框不在脚底………你还是好好看看hitbox吧。这东西能不能抓能抓哪儿就是判定框属性和判定框位置大小决定的。没有那么多特例。
回复

使用道具 举报

1

主题

3

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-9-21 14:45:39 | 显示全部楼层
我文章开头那部分就介绍了好几种投技,如果是你想的这么简单,我岂不是吃饱撑的写那些?
为什么以拳皇为例写这个电子书,因为拳皇的案例很复杂,至少比街霸2复杂多了。
同样是指令投,不同原理的两个指令投同时出招,有一方会被投,另一方安然无恙。哪是你想的那么简单?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|单击游戏交流网

Copyright © 2001-2013 Comsenz Inc.Template by Comsenz Inc.All Rights Reserved.

Powered by Discuz!X3.4

快速回复 返回顶部 返回列表