Mugen是一款经典的2D格斗游戏引擎,允许玩家自定义角色、场景和游戏规则。如果你想让你的Mugen游戏更加独特,那么添加原创人物无疑是一个很好的选择。本篇将详细介绍如何一步步地将原创人物添加到Mugen中,包括人物素材的准备、人物定义文件的编写和人物动作的制作等方面。
在开始制作人物之前,首先要准备好必要的素材,并进行合理的规划。这包括:
素材准备的建议:
stand_1.pcx
, walk_forward_1.pcx
, attack_punch_1.wav
等。chars/mycharacter/
,并将图像、声音等文件分类存放。人物定义文件(.def)是Mugen引擎识别人物的关键。它包含了人物的基本信息、文件路径、属性、招式列表等。 你需要在chars/mycharacter/
文件夹下创建一个名为mycharacter.def
的文件(人物名字替换为你的角色名称)。
一个典型的.def
文件包含以下几个部分:
[Info]
name = MyCharacter ; 人物名称,在选人界面显示
displayname = My Awesome Character ; 较长的名称
versiondate = 12,25,2023 ; 版本日期
mugenversion = 1.1 ; Mugen版本,根据引擎填写
author = Your Name ; 你的名字
pal.defaults = 1,2,3,4,5,6,7,8,9,10,11,12 ; 默认调色板
[Files]
sprite = mycharacter.sff ; 人物图像文件
anim = mycharacter.air ; 人物动作文件
sound = mycharacter.snd ; 人物声音文件
cns = mycharacter.cns ; 人物AI和状态文件
stcommon = common1.cns ; 公共状态文件
st = states/MyCharacter.st ; 自定义状态文件 (可选)
[Arcade]
intro.storyboard =
ending.storyboard =
[Options]
keyctrl = 1 ; 是否允许玩家控制,0为不允许,1为允许
AIKeys = ; AI 按键设置
各部分的解释:
[Info]
: 包含人物的基本信息,如名称、版本、作者等。[Files]
: 指定人物所需要的各种文件路径。sprite
:图像文件,通常为.sff
格式。anim
:动作文件,通常为.air
格式。sound
:声音文件,存储在.snd
文件中。cns
:控制和状态文件,定义人物的AI和各种状态。stcommon
: 公共状态文件,包含了所有人物通用的状态定义。st
: 自定义状态文件,用于定义人物个性化的状态和招式。[Arcade]
: 用于定义街机模式下的剧情画面(可选)。[Options]
: 定义一些人物选项。keyctrl
:非常重要,决定人物是否可以被玩家操控。AIKeys
:可以设置AI控制时使用的按键。角色图像文件(.sff
)存储了人物的所有图像数据。 你需要使用SFF编辑器 (Fighter Factory Ultimate或者Mugen SFF Editor) 将准备好的.PCX
或.PNG
图像文件导入并保存为.sff
格式。
步骤:
.PCX
或.PNG
图像文件逐一导入到SFF文件中。 导入时,需要为每个图像分配一个GroupID和ImageNo,这两个值共同标识一个图像。 建议按照动作顺序 (例如站立、行走、攻击) 依次导入,并根据动作的连续帧进行编号。mycharacter.sff
(与.def
文件中的sprite
字段对应)。GroupID和ImageNo的设置建议:
人物动作文件(.air
)定义了人物的各种动作,包括每一帧使用的图像、持续时间、Hitbox等信息。 你需要创建一个名为mycharacter.air
的文件,并用文本编辑器打开进行编辑。
.air
文件的基本结构如下:
[动作编号] ; 动作的唯一标识符,必须是整数
anim = 动作的名称 ; 动作的名称(可选)
loopstart = 0 ; 循环开始的帧数(可选,用于循环动作)
frametime = 持续时间 ; 每一帧的持续时间,以游戏帧为单位
framegroup = GroupID, ImageNo, X偏移, Y偏移, [属性] ; 图像信息和属性
[StateDef 0] ; 站立动作的状态
type = S
physics = S
anim = 0 ; 对应动作编号0
[State 12] ; 行走动作的状态
type = A
physics = A
anim = 12 ; 对应动作编号12
各部分的解释:
anim
: 动作的名称,方便阅读和理解,对游戏引擎没有实际影响。loopstart
: 如果动作需要循环播放,例如Idle状态,可以使用loopstart
指定循环开始的帧数。frametime
: 指定每一帧图像的显示时间,以游戏帧为单位。 Mugen默认的帧率为30帧/秒。framegroup
: 关键部分,定义了每一帧显示的图像信息。GroupID
:图像在SFF文件中的GroupID。ImageNo
: 图像在SFF文件中的ImageNo。X偏移
: 图像相对于人物中心点的X轴偏移量。Y偏移
: 图像相对于人物中心点的Y轴偏移量。[属性]
: 可选属性,例如F
(水平翻转)、V
(垂直翻转)、A
(透明度设置)等。[StateDef]
: 定义状态,与动作编号对应。type
:状态类型:S(站立), C(蹲伏), A(空中)。physics
:物理类型:S(站立), C(蹲伏), A(空中)。anim
:动作编号:对应相应的动作。制作.air
文件的建议:
人物控制与AI文件(.cns
)是Mugen的核心部分,它定义了人物的各种状态转换、招式、碰撞箱、AI逻辑等等。 你需要创建一个名为mycharacter.cns
的文件,并用文本编辑器打开进行编辑。
.cns
文件非常复杂,需要一定的编程基础才能掌握。它使用一种基于状态机的编程模型,通过状态之间的切换来控制人物的行为。
.cns
文件的主要组成部分:
.cns
文件中常用的控制器:
Anim
: 播放指定的动画。ChangeState
: 切换到指定的另一个状态。VelSet
: 设置人物的速度。PosAdd
: 改变人物的位置。HitDef
: 定义攻击的碰撞箱和伤害。PlaySound
: 播放声音。.cns
文件的编写流程示例(以一个简单的拳击动作为例):
定义站立状态 (State 0):
[StateDef 0]
type = S
physics = S
anim = 0 ; 播放站立动画
[State 0, 按下攻击键]
type = ChangeState
trigger1 = command = "attack" ; 当按下攻击键时
value = 100 ; 切换到攻击状态 (State 100)
定义攻击状态 (State 100):
[StateDef 100]
type = A
physics = A
anim = 1 ; 播放攻击动画
ctrl = 0 ; 禁止玩家控制
[State 100, 攻击碰撞箱]
type = HitDef
trigger1 = time = 2 ; 在攻击动画某一帧时触发
attr = S, PA ; 攻击属性
animtype = Light ; 轻攻击
damage = 10 ; 伤害值
pauseTime = 10 ; 暂停的时间
guardflag = MA
priority= 5,HIT
sparkno = 200
sparkxy = -10,0
hitflag=M1
[State 100, 动画结束]
type = ChangeState
trigger1 = AnimTime = 0 ; 当攻击动画播放完毕时
value = 0 ; 切换回站立状态 (State 0)
ctrl = 1 ; 允许玩家控制
编写.cns
文件的建议:
.cns
文件: 学习其他人物的.cns
文件,了解各种动作的实现方式。声音文件(.snd
)用于存储人物的语音、攻击音效、受击音效等。通常使用Fighter Factory Ultimate等工具创建和编辑。
步骤:
.snd
文件: 若你的.def
指定了已存在的.snd
文件,就可以直接打开,否则创建一个新的.snd
文件。.WAV
格式的声音文件。 每个声音文件需要分配一个GroupID和SoundNo,类似于图像文件。.snd
文件: 将文件保存为mycharacter.snd
(与.def
文件中的sound
字段对应)。在.cns
文件中使用声音:
使用PlaySound
控制器可以在特定状态下播放声音。
[State 100, 播放攻击声音]
type = PlaySound
trigger1 = time = 2 ; 在攻击动画某一帧时触发
value = GroupID, SoundNo ; 播放GroupID和SoundNo对应的声音
最后一步是将你的原创人物添加到Mugen的选人列表中。 编辑data/select.def
文件,在[Characters]
部分添加一行:
mycharacter/mycharacter.def
保存select.def
文件,然后启动Mugen,你就可以在选人界面看到你的原创人物了!
添加原创人物到Mugen是一个复杂而有趣的过程。 需要耐心、细致和一定的编程基础。 希望这篇详细的步骤指南能够帮助你成功创建自己的Mugen角色!