除去极少数从零开写代码的人,大部分人都会选择从一个模板开始更改,然后创造出自己的场景。所以,我们也要跟随大流。那么,我们就选刚下好Winmugen就自带的训练场景(Stage0)作为模板。场景十分简单且自带对各种参数的说明。这儿有个链接给那些丢失该场景或懒得下载Winmugen的同学:network.mugenguild.com/cybaster/stage_tutorial/stage0.rar
我还有一个“干净版”的该场景,里面的说明全被我移除了,因为我讨厌自己的代码被一堆介绍场景制作的注释弄乱,当然,只是我讨厌而已。
我们从分析Def文件中的各项参数开始,并顺带解释其中比较重要的部分参数。场景图片存于Sff内,而代码则在Def里,你可以用Notepad(记事本)打开Def文件。在这一章,我会有很多关于如何制作好场景的建议以及对一些不应该犯的错误的提醒。其中的一些建议并不存在于模板解释中,你可以自己添加。
代码:
[Info]
name = "Training Room"
author = "Elecbyte"
- 场景名和作者是仅有的两个应该被写明的[Info]参数,需用引号""标出
-其它参数如“Pal.Defaults(默认色表)”或“VersionDate(版本日期)”的出现只能证明场景作者对自己要做的事一无所知,只是复制了一份人物的Def文档过来。
- 如果你想添加其它如版权一类的信息,我建议你把它写在[Info]之前,每行开头用“;”来使它成为一段说明。
代码:
[Camera]
startx = 0
starty = 0
boundleft = -95
boundright = 95
boundhigh = -25
boundlow = 0
verticalfollow = .2
floortension = 0
tension = 50
此处包含大量信息。请仔细阅读所有解释和建议:
- startx 和 starty 是 镜头 在回合之初的定位参数。数值尽量保持为0,使之后的场景对称工作更容易完成
- boundleft 和 boundright 分别为场景的左右边界参数。一般情况下,你应该让这两个数值的绝对值相等,也就是,你要让boundright = - boundleft。 如果不这么做,你的场景便不是对称的,这意味着某一方的人物会在一开始便获得位置优势,而另一方则会被轻易逼入墙角。不过,如果场景够大,不对称也不是问题,但理论上来说,为了整齐的代码和清晰的思路考虑,场景还是对称比较好。
- boundhigh 是高度边界参数。这个参数定义了镜头所能到的最高处。要写这个参数,你必须到MUGEN里去检测场景的高度。我之后会解释如何写出合适的数值。
- boundlow 数值应当留为0。
- verticalfollow 是一个在0到1之间的参数。这个参数定义了镜头在玩家跳跃时的跟踪程度。这个数值由你对场景的风格设想决定。如果你想要个MVC风格的场景,能快速跟随人物跳跃运动的话,可以将数值定在0.8左右,如果你不想镜头过度跟随某个人物,你可以设定为0.3。
- floortension 定义了当人物跳跃到多少高度时,镜头开始跟随。个人来说,很讨厌镜头动不动就跟着跳跃的人物移动,所以我会把值设定得很高,差不多90的样子。如果你很享受镜头位移的感觉,可以设为20。
- tension 放着50别动。这是决定镜头是否水平移动的距离,数值意义是水平方向上人物离镜头边缘的距离。
代码:
[PlayerInfo]
;--- Player 1 ---
p1startx = -70
p1starty = 0
p1startz = 0
p1facing = 1
;--- Player 2 ---
p2startx = 70
p2starty = 0
p2startz = 0
p2facing = -1
;--- Common ---
leftbound = -1000
rightbound = 1000
topbound = 0
botbound = 0
以上的值在大部分的场景中是一样的.
- leftbound 和 rightbound 的值不能比这再小了。如果你想制作一个很长很长很长很长的场景,你需要增加这两个值,不然人物活动便会出现问题(飞行道具卡在墙角啦,永久搬运啦之类的)
- 一些作者会对p1startx和p2startx进行调整,以便于对战之初站位更好看。别这么做!一些人物之间的特殊出场效果取决于他们之间的距离,如果你改了这两项,就很可能会乱。
代码:
[Scaling]
topz = 0
botz = 50
topscale = 1
botscale = 1.2
苍天啊,大地啊,或者随便啦,反正别改这几项!!!修改了这几项,你等于修改了场景内人物的大小比例,可能初看上去会很协调,但实际上火花和一些效果并没有同比例更改,所以会导致一些难看画面或更糟的东西出现。
代码:
[Bound]
screenleft = 15
screenright = 15
这是定义人物到底能位移到镜头边缘多少距离处的数值,数值意义为从左/右边缘开始计算的像素量。数值一般为15,但常见的一些游戏通常设置为24左右。如果你不想让人物过分靠近镜头边缘,可以设置成一个高一些的数值。千万别用[PlayerInfo]里的leftbound 和 rightbound 数值来 达到这个效果。
代码:
[StageInfo]
zoffset = 190
autoturn = 1
resetBG = 1
Hires = 0
- zoffset 定义了地面的水平高度,即人物所站的高度位置。通常,数值在220左右。你需要经过测试,然后找到一个合适的数值来安放人物。不要设得过低,否则人物会被屏幕底部的能量条或者状态栏给挡住。但如果又设得过高,人物起跳时你就看不见了……
- 别动autoturn,这是让人物能自动面向对方的数值。
- resetBG 如果你想让场景的动画在每回合之初重置的话,把这块值留为1。不过,如果你想让故事继续下去,而且已经设定好动画了,那就把值改为0。
- Hires 是Winmugen Plus新添加的选项,使区分低分高分场景成为可能。场景为高分则设定为1,低分则可忽视此项。
代码:
[Shadow]
intensity = 96
color = 0,0,0
yscale = .3
fade.range = 0,0
- intensity 是影子的暗化强度参数。数值范围从不可见的0到漆黑色的256。确保影子的明暗程度和场景周围的元素统一。
- color 是给影子使用的红绿蓝颜色通道。每个数值在0到256之间。比如: 如果你想要个红色的影子,你可以这么设定为256, 0, 0。
- yscale 定义了影子的长度。数值越大,影子越长。相对的,假如你想让影子朝内伸长,你可以赋予这个参数一个负数值。
- fade.range 定义了某个高度内影子的可见状态,数值意义为人物的高度位置。如果,一个人物跳得很高且持续时间很长,而你却仍然可以在空中看见他的影子,这样未免也太荒谬了点。关于这个参数如何定义影子消褪的详情,请阅读Stage0.def。
详情:这个参数是能让你设定影子可见状态的范围数值,第一个值为高水平,第二个为中水平,两者都表示为人物的Y坐标值。当人物超过高水平数值时,影子为不可见状态,低于中水平数值时,则为完全可见状态。在两个水平之间时,影子会开始消褪。这个效果为人物离地面越远,则影子越淡。假如选择忽视(未写入),默认为没有消褪效果(影子永久可见)。
我建议你去试试这些参数,看看他们在场景中的效果,因为在要做的Mario场景中,我们不会用到这些参数(抱歉— —!)。
- 第一张图为自带的影子参数数值
- 第二张图的暗化强度为200,长度为0.5
- 第三张图的暗化强度为50,使影子看上去显得更亮,长度则设置为了-0.2,使影子变短且向内伸长,由于没有设置淡化范围,所以纵使人物跳得再高,影子仍在。
代码:
[Reflection]
intensity = 0
- 假如没有反光地面,那就留为0。
- 反射参数只能在那些能够反射出人物且符合逻辑要求的场景中使用:洁净的大理石、水面、反光玻璃等等。别仅仅为了让场景炫起来而使用,那会很荒谬
- 别在场景中同时使用影子参数和反射参数,否则看起来即不自然也不美观。如果地板能够反射出人物,那就不该有什么影子。实际上,Elecbyte的KFM场景就是个很好的例子。
- 简而言之,假如反射的强度值不为0,那么影子的强度参数就应该为0,反之亦然。
代码:
[Music]
bgmusic =
bgvolume = 0
- bgmusic 定义了背景音乐的路径。不要只写一个“sound/”,这么做MUGEN会报错。要么写个详细正确的音乐位置,要么就留空。
特殊说明:写法必须为sound/XXX.XXX,必须带上文件的后缀名。
- bgvolume 是背景音乐的音量参数。数值最高为255,没必要放45678之类的,虽然我见过很多次……
代码:
[BGdef]
spr = stage0.sff
debugbg = 0
- spr 定义了素材(Sff文档)路径的参数。通常来说,Def文件和Sff文件应该放在一起,这样的话,可以直接写“XXX.sff”。假如不在同一文件夹内,那么就必须写明为“stages/XXX/XXX.sff”。
- debugbg 该参数可以使你找出场景中的错误和贴图故障,场景中一些缺失素材的地方会用洋红色标出。在制作场景时,把这个值设为1,完成后,调回为0。
场景的基本参数分析已经结束,下一章会对剩下的分散在定义图片、角度、动画等等里的代码进行分析。