FFTA行动顺序研究

2004-02-14 18:26 | 小映儿

Final Fantasy Tactics Advance is copyright 2003 SQUARE ENIX CO., LTD.
Final Fantasy Tactics is a registered trademark of SQUARE ENIX CO., LTD.

关于原文:http://db.gamefaqs.com/portable/gbadvance/file/final_fantasy_tactics_advance_mech.txt

“This document is entirely my work, and was written and is owned by me, Terence Fergusson. All copyrights and trademarks are acknowledged where not specifically mentioned. If you wish to reproduce this document AS IS, you may do so without having to ask my permission, providing that the entire document including this copyright notice is left intact, and preferably in ASCII text format.”

                               ---------BY Terence Fergusson

关于行动顺序

行动顺序是由角色的一个基本参数--速度--和两个变量:行动值(CNT)、剩余值(RES)共同决定的。

速度值对角色行动顺序的影响很好理解:一个角色的速度值越大,那么这个角色就可以越快行动。例如,如果你的速度是288而另一个角色的速度是144,那么你将比他快一倍行动。但是,在行动值与剩余值相互作用造成的影响之下,你的行动次数不一定会比他多一倍。下面将会说明“快一倍行动”与“行动次数多一倍”的区别。

在每场战斗开始的时候,所有角色的行动值与剩余值都会归零。之后,游戏会按照“时间轴系统(clocktick system)”进行:在每个时间轴上,角色的行动值将会按照他的速度值增加。当某个角色的行动值在某个时间轴中到达1000之后,你就可以在该时间轴上行动了。然而,当角色的行动值超过1000时,新的变量---剩余值将会被引入到游戏中。

首先,当前时间轴的剩余值(我们称之为基础剩余值)是由当前时间轴中的最高行动值减去1000得到的。需要注意的是,剩余值的最大值是500,即使最高行动值超过了1500,剩余值也不会再增加了,剩余值的最小值是0。PS:事实上,在没有角色可以行动的时间轴上剩余值就是0。

然后,对于在战场上的所有角色,我们将从他们的行动值中减去基础剩余值。如果某角色的行动值小于基础行动值,则我们将他的行动值归零并令他的剩余值等于他的行动值;否则,令该角色的剩余值等于基础剩余值。

举个例子:假设我们让马修マ-シュ(速度151)与一只拉米亚ラミア(速度148)单独战斗,那么他们的行动值与剩余值在每个时间轴上的值如下:
         马修     拉米亚
时间轴 行动值 剩余值 行动值 剩余值
   0    0    0    0    0
   1   151    0   148    0
   2   302    0   296    0
   3   453    0   444    0
   4   604    0   592    0
   5   755    0   740    0
   6   906    0   888    0
   7  1000   57   979   57

上面这个表告诉了我们行动值与剩余值以一种很奇妙的方式减慢了角色的行动:无论在哪个时间轴上,可以行动的只有那些行动值在1000以上的角色,在时间轴7上,拉米亚的行动值本来是1036,但由马修剩余值决定的基础剩余值使她的行动值降到了979,因此,拉米亚的行动被拖延到了下一回合。

在极个别的情况下,会有复数个角色在同一时间轴内的行动值同时达到最高,这意味着他们的行动值都会是1000。这时他(她)们将在同一时间轴上各行动一次。而行动的先后顺序是由各个角色的“初始位置(starting position)”决定的。

关于初始位置:

如果将地图由北向南分成X列,由西向东分为Y行......= =b,就是说以地图最左上角为坐标(1,1),最右下角为坐标(X,Y)建立一个平面坐标系(-_-b)。这样一来每个角色所站的位置都可以用一个坐标来表示了,比如(13,12)。之后,电脑会按照坐标点(1,1)→(1,Y)→(2,1)→(2,Y)→(3,1)→(3,Y)......→(X,1)→(X,Y)的顺序逐个扫描(-_-b),完成之后就可以得到该次战斗中所有角色的一个顺序列表。

换句话说,你的初始位置越靠北(横坐标越小),你在角色序列里就越靠前,而当两个角色处于同一纵列时(横坐标一样时),越靠近北方(纵坐标越小),你在角色序列里就越靠前。按照该序列给每个角色依次编号为1至最多13(我方六个,敌方六个,裁判大人一个)。这个编号即为各角色的初始位置ID了。当前面的问题发生时,ID小的角色通常优先行动。

这里涉及到异常状态中的“即时行动(クイック)”,处于这个状态中的角色会马上行动。而如果有两个以上的角色在同一时间轴上同时处于即时行动状态下,那么ID最大的优先行动。另外请注意:即时行动状态优先于任何其他情况。

我们在上面说过在每个时间轴上角色的行动值将会按照他的速度值增加。事实上,未行动过的角色的剩余值也是会加到角色的行动值里的。仍然使用上面的例子,假设马修在时间轴7上的行动选择原地待机:

         马修     拉米亚
时间轴 行动值 剩余值 行动值 剩余值
   6   906    0   888    0
   7  1000   57   979   57
   8   467   184  1000   184

由于拉米亚在时间轴7上无法行动,因此在时间轴8上她的行动值首先增加了增加148,这是她的速度值,同时,剩余值里的57也加到了行动值里。因此,在时间轴8上拉米亚的行动值是979+148+57=1184,由于她的行动值最高且大于1000,时间轴8上的基础剩余值变为了184。因此我们将所有角色(事实上只有马修)的行动值减去184并将它加到马修的剩余值里。

马修的行动值为什么会是467呢?这是因为待机命令使他的行动值减少了500,同时又将他的剩余值归零。超过1000的那些行动值就这样浪费掉了,只是用来减缓了其他的角色的行动。因此,在时间轴8上他的行动值由500开始计起,并且增加了151---他的速度值,但是我们从他的行动值里又减去了184的基础剩余值,因此马修在时间轴8上的行动值就是500+151-184=467,剩余值是184。

我们再举一个例子来说明该系统是怎样在游戏里运行的:马修(速度150)与...雷德那レドナ(速度145)的战斗,在他们的每次行动里,我们都选择让他们移动并攻击,则他们的行动值变化如下。

         马修     雷德那
时间轴 行动值 剩余值 行动值 剩余值
   0    0    0    0    0
   1   150    0   145    0
   2   300    0   290    0
   3   450    0   435    0
   4   600    0   580    0
   5   750    0   725    0
   6   900    0   870    0
   7  1000   50   965   50
   8    0   150  1000   160
   9   300    0   145    0
  10   450    0   290    0
  11   600    0   435    0
  12   750    0   580    0
  13   900    0   725    0
  14  1000   50   820   50
  15   135   15  1000   15
  16   300    0   145    0

到此为止,我们可以看到:时间轴16上两个角色的行动值与时间轴9完全一样,这意味着照现在这样下去,尽管马修比雷德那要快,但是永远也不可能出现马修行动两次,雷德那才行动一次的情况。

剩余值的减缓作用在这里已经发生了作用。而当战场上的角色增多时,这种减缓作用将会更加明显:速度相差微小的角色们会造成巨大的剩余值,有时角色不得不把行动值积攒到1500才能行动---因为剩余值最大不超过500。

好。这样就已经差不多了,接下来要说明不同的行动对行动值造成的影响。

行动               消费的行动值
==============================================
待机(たいき)               500
移动(いどう)               300
攻击性行为(アクション)          200

所以,每次行动时必定会减少500的行动值(除非你不用待机的......- -b),如果你移动了,就减去200(所以移动多少格都是一样的啦`-`);攻击了,就再减300;移动+攻击的话,1000的行动值就这样用掉`-`

加速术(ヘイスト)使你的速度加倍,而减速术(スロウ)会使你的速度减半。比如,速度是125,那么加速时每个时间轴行动值会增加250,减速时只会增加62。

停止术(ストップ),这个异常状态对行动值不会有影响-.-

关于上面说过的即时行动(クイック),系统会强制性的使处于即时行动状态下的角色在该时间轴上行动,无论他的行动值是多少。同时,系统会强制性的将该角色的剩余值变为4096(没错,原文就是这么写的...4096...- -b),但这并没有什么用,一旦行动结束该角色的剩余值仍然会归零。另外,由于该角色的行动值并没有增加,但是仍然会依据你的行动而减少,所以如果你直接待机可能会使这个角色的下一次行动时间向后移动。

最后,总结一下,战斗中行动顺序的决定过程:

首先,要选角色出战,决定站位......

排位之后:
以地图最左上角为坐标(1,1),最右下角为坐标(X,Y)建立一个平面坐标系。每个角色所站的位置都用一个坐标表示。之后,按照坐标点(1,1)→(1,Y)→(2,1)→(2,Y)→(3,1)→(3,Y)......→(X,1)→(X,Y)的
顺序逐个扫描,得到一个角色的序列,将之编号得到每个角色的ID。

战斗开始,在每个时间轴上,系统会按照以下方法决定行动顺序:

步骤一、首先检查是否有角色处于即时行动状态,如果有,则从处于该状态的角色中选择ID最高者开始行动,行动结束后即时行动状态解除,并重复步骤一。

步骤二、如果有角色的行动值等于1000时,从上述角色中选择ID最小者开始行动。该角色行动结束后,重复步骤一。反之,进行步骤三。

步骤三、将时间轴加1。此时,各角色的行动值按照本身的速度增加。如果该角色处于加速状态,行动值增加额为速度×2,处于减速状态,行动值增加额为速度/2。完成后进行步骤四。

步骤四、如果没有角色的行动值大于或等于1000,重复步骤一(也可能只重复步骤三)。反之,进行步骤五。

步骤五、使用该时间轴上的最高行动值计算基础剩余值。基础剩余值将等于最高行动值-1000或500。所有角色从各自的行动值中减去基础剩余值,并加到剩余值中。行动值不能小于0,如果某角色的行动值小于基础剩余值,那么只将他的行动值加到剩余值中然后归零。完成之后,重复步骤一。

角色行动完成后:
角色行动完成后,他们的剩余值将归零,行动值则依据其所做的活动而减少:待机减少500行动值,攻击性行为减少200,移动减少300。行动值不能小于0。

行动顺序的解说到次为止`-`










-