MOTFSM文件编辑教学及示例

前言:

FSM文件控制派生、判定等和动作相关的内容。和前作MHW不同,有修改MHW经验的朋友可能知道,MHW的FSM只管理持刀状态下的招式派生,但re引擎下的FSM文件几乎可以控制对应武器的所有动作相关的东西,如果能学会它,你几乎能做出你想要的任何东西,包括:修改翻滚无敌时间、修改GP技能判定时长、修改特效调用、翔虫冷却...

本文的某些内容属于推测,并未实证,如有问题请私信反馈我!

你所需要的工具:

010editor:自行百度

RSZ模板:https://github.com/alphazolam/RE_RSZ

RSZ模板的储存路径不能含有汉字,否则会读取出错

RSZ模板的第一行要修改为如图所示的样子

正文:

FSM文件的储存目录一般在解包后的natives/stm/player/Fsm/武器名/*

封包时也要按照这个规则封包,以下以太刀为例


使用010editor打开,运行RSZ模板,将会得到以下内容

我们一项一项来看

header,文件头,一般包含了文件版本、各区块大小等信息,应当还包含一些指针,因此不要轻易去修改它。

bhv tree:动作树,其实就是最后一项node的简单版,但是有一个node writer的功能,可以新建并命名自己的node,用法是双击 值 这一项,然后输入名字,回车就可以新建node。

但是这个功能会更改文件长度,也许会导致一些指针错误,因此不建议用

Actions、Conditions、TransitionEvents:这个放到后面和node一起讲

selectors:未知

static XXX这三个:未知

nodes:这是FSM文件的核心,node翻译为节点,每个节点互相之间有包含、派生的关系,串联起来就能控制人物的行动

展开nodes,并收起第一项root node:

每个node后面括号的含义:A=action 代表这个节点进行了一些判定或者播放动画

G = tags&bools 暂时不知道有什么用

C = child 这个节点含有一些子项,并不重要

T = transition 这个节点会强制连接到另一些节点

S = state 这个节点会有条件的连接到另一些节点

因此在分析节点时看重A S T这三者即可。

其中含有动画的节点必然包含A,因为播放动画是一个action(playmotion)

node1到7都是一些基础动作,站立不动、拔出武器、收起武器等,我们展开一个拔出武器的节点,分析它的action:

可以看到有playmotion这个action,表示它播放了拔出武器的动画。它的state连接到了atk,说明拔出武器可以派生几乎一切攻击。

可以看到从node8开始的命名都很宽泛,它们是一些父集,包含在这个状态下的所有内容,比如第八项item,就包含吃种子、喝药水、撒粉尘等。

往下看:

到17为止,往后就是精细的一个个节点了,8到17是各个父集。其中还有一些废弃的,比如guard,在太刀里就是无效的。

想要什么动作,就从对应的父集去找,比较容易。

演示如何修改见切的判定时间:

我们从攻击入手,我们展开atk节点,再展开他的子项,这里包含了所有的攻击节点,太刀的攻击节点命名是ATK_数字,数字是动作编号,因此我们可以通过CE查看内存的方式来将节点和动作一一对应,其它武器则要麻烦一些,需要展开playmotion,在里面会有播放的动作编号。


见切是147号动作,往下翻找到它

它带有A T两个比较重要的属性,我们先看a

可以看到,有一个是NameUI,也就是招式名称的UI,另一个是continue combo,不知道有什么用。这里面没有playmotion的动画,也没有找到类似判定的东西,因此我们还得看它的T transition,看它连接到什么地方。

transition连接了两个,第一个的条件是command,代表有一些按键及其他条件,我们展开condition再展开它的详细信息

这里为什么派生开始结束帧数都是0呢,因为它其实不是一个按键派生,其实这里的条件只有一个,就是需要1点气刃值,按键和特殊条件都是0,也就是无条件。

相对的,我再展开108(气刃斩3)派生109(气刃大回旋)的条件给大家看一下,大家就明白这些的意思了

按键type和特殊条件表如下

其中xyab的排布是Switch布局,也就是x攻击a特殊攻击

特殊条件表如下

回到刚刚的地方,见切transition到两个地方,一个是需要1气刃值,另一个是-1也就是无条件,因此我们可以知道需要一点气刃值的那个 node3501就是有气见切,我们找到它

它A S T 都有,我们先分析action

首先它有playmotion,也就是它播放了见切的动画;然后还有一个hitaction

我们展开它,发现它是disabled的,说明它是未生效的

我们后面再解释为什么见切的攻击判定没生效

接着往后看,这些action的的命名就是提示

显然seethrough就是看破的判定,这里再给出一个结论,seethrough本身就带有无敌。展开它:

只有简单的两项,开始帧和结束帧。0帧开始,40帧结束,说明见切的判定时长是40帧。可能有人觉得修改这里就可以延长判定了,但问题没那么简单。你只会发现无敌帧延长了,但判定并没有延长。为什么呢?等分析state的时候就会解答。

接着看后面的action,muteki timer

和看破一样,没什么说的。再看subgauge:

减少100点气,也就是清空气刃槽。看特效:

150 300都是编号,frame是特效出现的时间,这个是见切一开始身上发蓝光的特效。teamatk就不看了,没用。

前面说到两个问题:1,见切没有攻击判定;2,延长seethrough只延长了无敌时间,没有延长判定。我们看State,这些问题都会得到解答。

我们发现这里的派生和见切并不相符,因为见切的派生我们都很熟,切到了可以大回旋,没切到就罚站嘛,这里却没有。我们看到这里能派生出去的招,水月居合登龙,都是见切后撤阶段能派生的,因此其实这个3501节点是见切的判定阶段,这也就解释了为什么延长seethrough不能延长判定。很容易理解嘛,判定阶段就这么长,你延长无敌时间,判定阶段也不会变长啊。

所以我们展开第一项。condition无法分析,我没分析出来,我们就看之前没看过的transition,连接类型。

其它东西我也不知道有什么用,有兴趣的朋友可以去测一下。重点在这个exit frame,退出帧。它的值是48,说明见切的判定阶段从48帧就退出了,那么之前的问题得到了解答:1,48帧之前见切不存在攻击,是回砍的时候才有攻击,因此判定阶段不需要攻击判定;2,48帧的时候见切就退出判定阶段了,因此无敌帧就算再长,判定仍然锁定在48帧之前。

因此我们要做的是:延后这个判定的退出时间,并增加无敌时间。注意,判定阶段是没有攻击判定的,如果你延的太长,覆盖了判定结束的回砍阶段,就会让见切的回砍也没伤害,就得不偿失了。

by 云雾敛 更新于 2022-07-26
打赏后可直接下载附件 赠人玫瑰 手留余香
默认
最新
1