kotenka_ 发表于 2004-5-30 04:10

[原创]格斗游戏编程(选手编辑篇)by阿付

<P>大家想让自己的龙珠格斗游戏更个性化吗?如果想的话就请你们试着打开自己格斗游戏所在的目录,惊喜就在你们眼前。。。</P>
<P>我是在02年底拿到一个mugen引擎的龙珠格斗游戏,当初游戏太多BUG,人物的能力也跟故事差好多(电脑控制博罗连4和饺子对战,结果是饺子轻松取胜)。正是出于这些原因,我想到能不能有一个属于自己的游戏呢?
正是抱着这种想法,我打开了游戏目录,发现惊喜就在眼前。。。</P>
<P>在大家修改编辑游戏以前,希望大家对游戏修改原则加以重视:你是在制做一个属于自己的个性化游戏,而不是在发泄!
我们修改人物在尊重故事的原则下,也要考虑可游戏性,不能把自己喜欢的人物改成超强。比方说,一般的选手都是1000的血,可你改出一个一千万血的人,那还打什么?只要没时间限制,放在那一天都不会被打死。可能刚开始乱来的时候很有快感,但这种游戏你有兴趣一直玩下去??</P>
<P>由于本人是100%对着程序自学,所以水平不是很高。如果用初级、中级、高级来评的话只能算中级,所以希望哪一个高手看了这个主题后,能和我合作,而不是给我鸡蛋哟!!</P>
<P>最后提醒一下,一定要在做修改前先备份。因为改到后面被你改的地方越来越多,出问题是难免的!</P>
<P>好了,说了那么多“废话”,该转入正题了。
*****************************************************************************
一:认识MUGEN的格斗游戏
也许大家会问,什么是MUGEN?什么是可编程的格斗游戏?
MUGEN的格斗游戏在WIN9X系统中相当常见,判断一个格斗游戏是不是MUGEN的方法也很简单:打开游戏所在目录,有chars,data,sound,stages......目录的就是!
哪我们要对什么编程呢?
你用记事本或写字板试着打开每一个文件,是文本格式(就是指没乱码)的就能编程!</P>
<P>现在先让我们来认识一下那些子目录。
chars:这里放着所有选手资料,是这个主题的主攻目标。
data:这里放着系统环境参数。
font:好像是字体,我没去改过。以后大家水平到一定阶段的话,可以去试试。
graphics:好像是系统中的用图,我没去改过。
sound:这里放着系统和战斗时用到的背景音乐(不是音效哟),我的好多龙珠音乐就是从这里挖出来的 ^_^
stages:这里放着格斗时的场景图片,其中“.sff”文件是图,“.def”文件是各种状态条。
docs:如果你的游戏中有这个目录且你的E文好,那恭喜你,你可以自学成材了。这个目录放的是游戏开发者做的文档,对系统的各种文件都说明(可能不同游戏中这个目录放的东西不同,这主要看开发者愿意给你看多少东西 ^_^)。可惜本人E文太差,只能自己摸石头过河。。。(难过)
**************************************************************************
二:认识chars目录(上)
就如上面提到的,chars里放着所有选手资料,是这个主题的主攻目标。
打开CHARS目录,大家可以看见好多人名目录,每个目录就是一个选手的所有资料。
目录里有许多大家没见过的格式的文件,大家刚开始只要把目标盯着.def.cmd.cns三种文件。</P>
<P>.def后缀的文件是用来设定选手的最基本数据以及指定选手的各种数据文件名。一个目录一般只有一个,如果有两个以上初学者只要认准和目录名相近的那个(准确的分辩方法以后我会在“系统设置篇”中教大家)。用记事本或写字板打开它,你会发现它是一个系统配置文件(就是.ini文件)格式的文件。这种格式的文件主要是由“节”、“键”、“注解”三部分主成,“节”就是指在中括号和它里面的内容,例如:“”“”。“键”是指在包含在“节”内的部分,例如:
name    = "gokudbgt"
displayname = "Son Goku SSj GT"
versiondate = 12,08,2000
mugenversion = 06,27,2000
author = "Goku jr"   
pal.defaults = 1
左边就是键名,右边就是键值。</P>
<P>“注解”是指“;”号和它右边的所有内容,这部分内容在程序中是不执行的,只是起一个说明作用,例如:“name =fupeng;傅鹏是个大坏蛋”。
好了我们回过头来说说.def格式的文件,请看下面这段:

name    = "gokudbgt"
;name这个键是用来指定本选手的程序内部名
displayname = "Son Goku SSj GT"
;这个键是指定本选手显示在格斗场上的名字,比如你可以改成"I`m FuPeng",请记住除注解外的地方都不能用中文哟!
versiondate = 12,08,2000                   ;这是版本日期
mugenversion = 06,27,2000                ;这是版本号
author = "Goku jr"                           ;这是作者名,上面三个可有可无
pal.defaults = 1                                  ;这个忘了,我回去再看一下 ^_^</P>
<P>
cmd   = gokudbgt.cmd
;这里指定的.cmd 文件是用来设置发招的按键(估计大家这后面的听不懂,没关系我后面还会再解释)
cns   = gokudbgt.cns
;这里是指定第一个.cns文件,很是很重要的部分,以后我会说明
st      = gokudbgt.cns
;这也指定第一个.cns文件,如果还有第二第三个.cns文件的话可以这样写:“st2 = second.cns”“st3 = third.cns”
stcommon = common1.cns
;这是指定通用命令文件,初学者不用考虑它。(其实我也不太懂 ^_^)
sprite= gokudbgt.sff                        ;初学者不用考虑   
anim    = gokudbgt.air                         ;初学者不用考虑
sound   = gokudbgt.snd                      ;本选手的格斗声效文件,好像不能用其它播放软件播放
pal1    = gokudbgt.act                        ;初学者不用考虑</P>
<P>下面我要向大家介绍.cmd文件,.cmd文件是设定发招的键盘按键和发招的条件,也是我们最常改的东西。
在介绍之前大家先了解键盘按键对应的英文字母:
U、D、F、B:分别表示方向键的上下前后(有大小写之分,下同)
a b c x y z:分别表示格斗游戏中的6个按键,不是键盘上的a b c x y z哟!
s:表示键盘上的那个挑拨键(不好意思,不知那个键叫什么名字,就随便起了个名字)</P>
<P>.cmd文件分成两部分,第一部分是发招按键,如下:
;-| Super Motions |;这个注解内的都是超级招数,这是一种习惯写法
;每个command“节”表示一下招数
name = "kamehameha";这是指定招数的内部名称
command = ~D, DF, F, a
;这是指定发这招要按哪些键,这里的意思是按 下、前a这样就可以发出这招了!(这里的DF是起连接作用,与其类似的还有DB,不过你不加也没什么关系,例如那段可以改成“command = ~D,F,a”)
time = 35;这是要在多久内按出这招,没写的话好像默认是30,即0.3秒</P>
<P>
name = "kamehameha_2"
command = ~D, DB, B, a+b;这里的加号表示按完 下、后 以后再同时按a和b键
time = 35</P>
<P>
name = "jink_dami"
command = /F, a;这里的“/”表示按住方向键前不放手,再按a键
time = 35</P>
<P>………………
…………
;-| Special Motions |------;这个注解内的都是一般招数,这也是一种习惯写法

name = "I_move"
command = b+c
time = 1</P>
<P>………………
…………
在这先给大家泼冷水,在看完上面那些之后大家还不具备真正改招的水平。因为你们常常会让发招按键发生冲突,导致招发不出来。当然有DIY的探索精神也是好的,但你们试着改之前一定要记的先备份,要不改坏了还要重装。
这之后的程序代码有很多是系统固定的内容不能改,是什么内容我会在后面做专门介绍。
………………
…………</P>
<P>在所有的发招按键定义之后就是发出这些招的条件,也就是.cmd文件的第二部分内容。
请看下面这段:
; Energy Shower;这是每招的注解说明
;这个“节”即下面的内容就是发招的条件
type = ChangeState;我也不太懂,先不管
value = 83250;这是这招具体内容的入口地址,那些招术的内容都在.cns文件中,这部分内容我会在将来给大家做介绍
triggerall = command = "e_shower";大家还记得刚才定义发招时有个内部招术名吗?程序就是用这个来将“发招按键”和“发招条件”对应的。
triggerall = power &gt;= 1000;triggerall是定义发招的总条件,换句话说就是没达到这个条件这招就是发不出来。这句的意思是“如果能量大于1000才能发出这招”。大家是不是有点明白了,我们打格斗游戏时有个能量槽对不对。。。。。。能量槽总能量是3000哟!!
trigger1 = statetype != A;下面是达到上句的条件后才能触发的分条件,这句意思是“本选手不在空中”。另外和“A”对的还有两个,“S”表示站立,另一个自己试,不过可以透露另一个字母表示下蹲
trigger1 = ctrl = 1;本人不太懂,谁会的话要教我哟
trigger1 = statetype = S;大家发现没,两句的键名都是trigger1,这表示两句中的条件要同时具体才行
trigger2 = stateno = 1500;记不清了,好像是在选手要在这个地址的才行。(大家八成听不懂,我也不是很明白)
trigger3 = stateno = 430
trigger3 = MoveContact = 1;不懂
trigger3 = Time &gt;= 10
trigger4 = stateno = 220
trigger4 = MoveContact = 1
trigger5 = stateno = 1050
trigger5 = time &gt;= 4</P>
<P>; Giga Shoulder ( ou counter )

type = ChangeState
value = 980
triggerall = command = "fwd_yb"
trigger1 = statetype = S
trigger1 = ctrl = 1</P>
<P>***************************************************************************
(要下机了,下周再说)
下一讲:认实chars目录(中)</P>

kotenka_ 发表于 2004-5-30 04:11

<P>原文由 <B>wdgvm</B> 发表:
不太懂,你把你的游戏可以放这让我下载个吗
</P><P>这是MUGEN格斗游戏教程,
只要你手头上有这种类型的格斗游戏都能用上面这个方法编辑。
(什么是MUGEN格斗游戏上面有说) </P>

阿付 发表于 2004-5-31 14:12

[原创]格斗游戏编程(选手编辑篇)by阿付

<B>以下是引用<I>孙悟空</I>在2004-5-30 20:34:15的发言:</B>

<P>这个引擎过时拉~</P>
<P>我喜欢BBN的引擎 作出来的好看~ 虽然感觉没KOF好</P>

KOF以前也是用这个引擎,不过最新版本是用哪种引擎就不知道了。

孙悟空 发表于 2004-5-30 20:34

<P>这个引擎过时拉~</P><P>我喜欢BBN的引擎 作出来的好看~ 虽然感觉没KOF好</P>

anthony5000 发表于 2006-8-16 10:18

谢谢楼主了

jin67251528 发表于 2008-12-10 17:55

这么好的贴怎么不加精ne?

jin67251528 发表于 2008-12-10 19:32

你什么时候再发啊?
页: [1]
查看完整版本: [原创]格斗游戏编程(选手编辑篇)by阿付