a. Mugen的Finite State Machines总览
b. States的导言
c. State的基本部分
d. StateDef的详细资料
e. State控制指令的详细资料
f. common1.cns
-------------------------------------------------
III.a. Mugen的Finite State Machines总览
-------------------------------------------------
本节介绍一种在Mugen中建立的人物创造工作(启发式的):finite state
machines。(方可的翻法是:有限量的状态集机体) 这并不是特别的技术,but
it is aimed at the analytically minded reader. 如果你已熟悉 finite
state machines 或对其细节不感兴趣,可以放松一点跳过去。
Finite state machine(以后简称FSM)是一个用有限量的子程序设定的“自动
机”。每一个子程序都执行一些功能函数且按一定准据跳到下一个子程序中去。
这些子程序被称为一个"state",而FSM存在于一个State里并按该State的指示
处理当前项。一个FSM在任何时候都只能存在于一个State里。
下面是FSM的一点简单的例子,伪代码如下:
State 0:
1. Read in a number.
2. If the number is 0, go to state 0. Else, go to state 1.
State 1:
1. Print "Woohoo!"
2. Go to state 3.
State 2:
1. Go to state 0.
State 3:
1. Quit
假设该FSM启动于state 0且得到一个值0。则会转回到state 0,去读另外一个
数。继续直到FSM读到非0值,照指向转到state 1。在state 1里,FSM打出
"Woohoo!"并转到state 3。State 3引起FSM退出。在本例中State 2未被执行。
这里可能是一个格斗游戏人物的FSM。
State 555:
1. 试图攻击别的家伙。
2. 如果成功,而玩家接着攻击,就到state 555(连续攻击)。
3. 如果成功而玩家没有接着攻击,播放回复动作。
4. 如果没有成功,播放打空动作。
5. 回复/打空动作完成后,转向state 0。(idle).
人物在MUGEN里就是一个FSM。人物的CNS定义了State号,每一个State包含了
一个或多个状态控制指令(state controllers)。State控制指令事实上赋予
了人物机能,类似于上面给出人物的FSM的指令。例如,控制指令—HitDef
使人物攻击对方,控制指令—ChangeState使人物转换State,而控制指令—
ChangeAnim是人物播放指定的动画(animation)。每个State控制指令由一些
测试条件发动,称为"triggers"或"condition-type triggers"。当满足条件
controller就被执行。
每个Mugen人物有三个特殊States,编号-1,-2,和-3。负号的State
是合法的只有这些。State -1一般包含由键盘输入(commands)决定State转换
的判断准则。State -2包含其他每一时刻都在判断执行的controllers。
State -3包含也是每一时刻都在判断执行的controllers,但除去人物暂时处
于对方State的情况(如,人物被投中)。
在游戏时间的每一个tick,MUGEN简单的从头到尾测试这些特殊states,以升
序处理(-3,-2,再-1)。遇到每个state controller,其中的triggers就判别是
否,如果满足,controller就执行。然后接着判别下一个。在这些特殊State
中的transition(ChangeState)会使人物转向指定State号,但是不会中止特殊
State的运行,这些特殊state里的所有state controller逐一检查完毕后,人
物的继续运行,再次从头到尾。一旦State转换在该State里发生,剩下的同样
的state controllers(如果有)就会被跳过,(这里方可有点疑问,这一句翻译
插进了自己的话,请各位研究一下原文)然后继续从新State的开头运行。当到
达当前State的结尾处而没有发生任何State转换,该tick的运行终止(halt)。
上述情形有一点例外。如果人物是个“援助”("helper")人物, 也就是说,是
由state controller—Helper产生的,这人物就不会有states -3和-2。援助
b. States的导言
c. State的基本部分
d. StateDef的详细资料
e. State控制指令的详细资料
f. common1.cns
-------------------------------------------------
III.a. Mugen的Finite State Machines总览
-------------------------------------------------
本节介绍一种在Mugen中建立的人物创造工作(启发式的):finite state
machines。(方可的翻法是:有限量的状态集机体) 这并不是特别的技术,but
it is aimed at the analytically minded reader. 如果你已熟悉 finite
state machines 或对其细节不感兴趣,可以放松一点跳过去。
Finite state machine(以后简称FSM)是一个用有限量的子程序设定的“自动
机”。每一个子程序都执行一些功能函数且按一定准据跳到下一个子程序中去。
这些子程序被称为一个"state",而FSM存在于一个State里并按该State的指示
处理当前项。一个FSM在任何时候都只能存在于一个State里。
下面是FSM的一点简单的例子,伪代码如下:
State 0:
1. Read in a number.
2. If the number is 0, go to state 0. Else, go to state 1.
State 1:
1. Print "Woohoo!"
2. Go to state 3.
State 2:
1. Go to state 0.
State 3:
1. Quit
假设该FSM启动于state 0且得到一个值0。则会转回到state 0,去读另外一个
数。继续直到FSM读到非0值,照指向转到state 1。在state 1里,FSM打出
"Woohoo!"并转到state 3。State 3引起FSM退出。在本例中State 2未被执行。
这里可能是一个格斗游戏人物的FSM。
State 555:
1. 试图攻击别的家伙。
2. 如果成功,而玩家接着攻击,就到state 555(连续攻击)。
3. 如果成功而玩家没有接着攻击,播放回复动作。
4. 如果没有成功,播放打空动作。
5. 回复/打空动作完成后,转向state 0。(idle).
人物在MUGEN里就是一个FSM。人物的CNS定义了State号,每一个State包含了
一个或多个状态控制指令(state controllers)。State控制指令事实上赋予
了人物机能,类似于上面给出人物的FSM的指令。例如,控制指令—HitDef
使人物攻击对方,控制指令—ChangeState使人物转换State,而控制指令—
ChangeAnim是人物播放指定的动画(animation)。每个State控制指令由一些
测试条件发动,称为"triggers"或"condition-type triggers"。当满足条件
controller就被执行。
每个Mugen人物有三个特殊States,编号-1,-2,和-3。负号的State
是合法的只有这些。State -1一般包含由键盘输入(commands)决定State转换
的判断准则。State -2包含其他每一时刻都在判断执行的controllers。
State -3包含也是每一时刻都在判断执行的controllers,但除去人物暂时处
于对方State的情况(如,人物被投中)。
在游戏时间的每一个tick,MUGEN简单的从头到尾测试这些特殊states,以升
序处理(-3,-2,再-1)。遇到每个state controller,其中的triggers就判别是
否,如果满足,controller就执行。然后接着判别下一个。在这些特殊State
中的transition(ChangeState)会使人物转向指定State号,但是不会中止特殊
State的运行,这些特殊state里的所有state controller逐一检查完毕后,人
物的继续运行,再次从头到尾。一旦State转换在该State里发生,剩下的同样
的state controllers(如果有)就会被跳过,(这里方可有点疑问,这一句翻译
插进了自己的话,请各位研究一下原文)然后继续从新State的开头运行。当到
达当前State的结尾处而没有发生任何State转换,该tick的运行终止(halt)。
上述情形有一点例外。如果人物是个“援助”("helper")人物, 也就是说,是
由state controller—Helper产生的,这人物就不会有states -3和-2。援助