Mugen添加原创人物详细步骤

发布时间:2025/03/26

Mugen添加原创人物详细步骤

Mugen是一款经典的2D格斗游戏引擎,允许玩家自定义角色、场景和游戏规则。如果你想让你的Mugen游戏更加独特,那么添加原创人物无疑是一个很好的选择。本篇将详细介绍如何一步步地将原创人物添加到Mugen中,包括人物素材的准备、人物定义文件的编写和人物动作的制作等方面。

一、准备工作:素材收集与规划

在开始制作人物之前,首先要准备好必要的素材,并进行合理的规划。这包括:

  • 角色图像素材(.PCX或.PNG): 这是人物最核心的组成部分。你需要绘制或找到角色每一帧动作的图像,例如站立、行走、攻击、防御、特殊技等等。图像的清晰度和像素风格将直接影响人物的最终效果。
  • 声音文件(.WAV): 用于人物的语音、攻击音效、受击音效等。 建议使用清晰度较高的WAV格式,以提升游戏体验。
  • 人物动作规划: 提前规划好人物的动作种类和逻辑。设计哪些必杀技?普通攻击有哪些?人物的移动速度和攻击范围是多少? 这些都需要在使用角色之前进行细致的考虑。

素材准备的建议:

  • 统一风格: 确保所有素材的风格一致,例如像素大小、颜色深度等,以免出现人物动作不协调的情况。
  • 命名规范: 使用清晰、易于理解的命名规则来命名图像和声音文件,方便后续编辑。 例如,stand_1.pcx, walk_forward_1.pcx, attack_punch_1.wav 等。
  • 文件夹结构: 创建一个专门存放素材的文件夹,例如chars/mycharacter/,并将图像、声音等文件分类存放。

二、制作人物定义文件(.def)

人物定义文件(.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)存储了人物的所有图像数据。 你需要使用SFF编辑器 (Fighter Factory Ultimate或者Mugen SFF Editor) 将准备好的.PCX.PNG图像文件导入并保存为.sff格式。

步骤:

  1. 打开SFF编辑器。
  2. 新建一个SFF文件。
  3. 导入图像: 将之前准备好的所有.PCX.PNG图像文件逐一导入到SFF文件中。 导入时,需要为每个图像分配一个GroupID和ImageNo,这两个值共同标识一个图像。 建议按照动作顺序 (例如站立、行走、攻击) 依次导入,并根据动作的连续帧进行编号。
  4. 保存SFF文件: 将文件保存为mycharacter.sff (与.def文件中的sprite字段对应)。

GroupID和ImageNo的设置建议:

  • 分组: 可以将同一动作的图像放在同一个GroupID下,例如站立动作的GroupID为0,行走动作的GroupID为1等。
  • 编号: GroupID相同的图像,ImageNo从0开始递增。
  • 连续性: 对于连续动作,例如行走或攻击,确保ImageNo的顺序与动作的帧顺序一致。

四、编写人物动作文件 (.air)

人物动作文件(.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

各部分的解释:

  • 动作编号: 每个动作都需要一个唯一的整数编号。从0开始,递增赋值即可。
  • 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文件的建议:

  • 从简单动作开始: 先制作站立、行走等基本动作,再制作攻击、防御等复杂动作。
  • 调整偏移量: 仔细调整图像的X和Y偏移量,确保人物动作看起来自然流畅。
  • 测试: 制作完成后,一定要在Mugen中进行测试,观察动作是否符合预期。

五、编写人物控制与AI文件 (.cns)

人物控制与AI文件(.cns)是Mugen的核心部分,它定义了人物的各种状态转换、招式、碰撞箱、AI逻辑等等。 你需要创建一个名为mycharacter.cns的文件,并用文本编辑器打开进行编辑。

.cns文件非常复杂,需要一定的编程基础才能掌握。它使用一种基于状态机的编程模型,通过状态之间的切换来控制人物的行为。

.cns文件的主要组成部分:

  • 状态(States): 人物在特定时刻所处的状态。例如站立、行走、攻击、防御等。每个状态都有一个唯一的编号。
  • 触发器(Triggers): 用于判断状态是否应该切换的条件。 例如按下某个按键、受到攻击、生命值低于某个值等等。
  • 控制器(Controllers): 在特定状态下执行的动作。 例如改变人物的位置、播放动画、发出声音、造成伤害等等。

.cns文件中常用的控制器:

  • Anim 播放指定的动画。
  • ChangeState 切换到指定的另一个状态。
  • VelSet 设置人物的速度。
  • PosAdd 改变人物的位置。
  • HitDef 定义攻击的碰撞箱和伤害。
  • PlaySound 播放声音。

.cns文件的编写流程示例(以一个简单的拳击动作为例):

  1. 定义站立状态 (State 0):

    [StateDef 0]
    type = S
    physics = S
    anim = 0  ; 播放站立动画
    
    [State 0, 按下攻击键]
    type = ChangeState
    trigger1 = command = "attack"  ; 当按下攻击键时
    value = 100  ; 切换到攻击状态 (State 100)
    
  2. 定义攻击状态 (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文件的建议:

  • 学习Mugen的编程语言: 理解状态机、触发器和控制器的概念,掌握Mugen的编程语法。
  • 参考其他人物的.cns文件: 学习其他人物的.cns文件,了解各种动作的实现方式。
  • 逐步调试: 编写完成后,一定要在Mugen中进行测试,逐步调试,修复错误。

六、为人物添加声音 (.snd)

声音文件(.snd)用于存储人物的语音、攻击音效、受击音效等。通常使用Fighter Factory Ultimate等工具创建和编辑。

步骤:

  1. 打开Fighter Factory Ultimate。
  2. 打开.snd 文件: 若你的.def指定了已存在的.snd文件,就可以直接打开,否则创建一个新的.snd 文件。
  3. 导入声音: 导入准备好的.WAV格式的声音文件。 每个声音文件需要分配一个GroupID和SoundNo,类似于图像文件。
  4. 保存.snd文件: 将文件保存为mycharacter.snd (与.def文件中的sound字段对应)。

.cns文件中使用声音:

使用PlaySound控制器可以在特定状态下播放声音。

[State 100, 播放攻击声音]
type = PlaySound
trigger1 = time = 2  ; 在攻击动画某一帧时触发
value = GroupID, SoundNo  ; 播放GroupID和SoundNo对应的声音

七、添加到Select.def

最后一步是将你的原创人物添加到Mugen的选人列表中。 编辑data/select.def文件,在[Characters]部分添加一行:

mycharacter/mycharacter.def

保存select.def文件,然后启动Mugen,你就可以在选人界面看到你的原创人物了!

八、总结

添加原创人物到Mugen是一个复杂而有趣的过程。 需要耐心、细致和一定的编程基础。 希望这篇详细的步骤指南能够帮助你成功创建自己的Mugen角色!