找回密码
 立即注册
搜索
查看: 9653|回复: 51

vp中伪随机数预测与极限一击伤害

[复制链接]
发表于 2004-11-8 23:06 | 显示全部楼层 |阅读模式
修改:2005-01-27(为了某种意义上的公正,改为不用伪决打满hits)

――――――――――――――――――――――――――――

本文的主要研究目标是挑战极限一击伤害。为了提高vp(Valkyrie Profile)中人物升级时所增加的属性,分别对小数和大数应用了两种消耗法来预测。这种确定的预测法一方面减少了S/L的次数,另一方面也达到了靠运气所无法S/L出的数值。

一、游戏背景

人物的基础属性值分攻击类与防御类两种。由于vp数据设定一面倒的缘故(攻远大于防,命中远大于回避等),防御类属性在强大的防具面前可以忽略不计。有用的只有攻击类属性,就是战士的STR、魔法师的INT。因为VP没有伤害上限的限制,所以可以自由发挥挑战极限伤害数字。在选好敌人以及武器之后,为了提高伤害值除了固定的Skill、固定个数的提升人物能力的物品(44个金蛋和7个圣血.宝箱精灵之森*3+忘却洞窟*2+红莲迷宫*15。金鸡+b-ending可以生20个蛋,总共44个金蛋。圣杯+b-ending总共7个圣血),剩下的只是升级。

升级加的属性点数是随机的,在升级前反复S/L来可以得到理想的数值,这与常规的凹点法没有区别。极限一击最高伤害只能由フレイ打出。然而,フレイ在最后迷宫加入时固定lv30,实际上数据是第一次进入迷宫时初始化,从lv1自动升到lv30,这样导致了STR值有上下浮动。而升级后STR的增加范围有6-10点这5种情况,所以连升29级STR都加最高值的几率 = 5的29次方分之一 = 1/186264514923095703125

为了对让フレイ最大伤害值再次提高,能深入挖掘的要素目前只剩下升级,即:如何按游戏的规则,让连升29级所加的STR点数尽量高。

二、伪随机数

伪随机数发生器(PRNG),是指通过对一个种子数值(seed)进行迭代运算来产生数值序列的方法,叫“伪”随机数的原因是指产生的数字不是真正意义上的随机数。PRNG主要问题就是伪随机数种子。如果种子是固定的,那么计算输出的伪随机数序列也是固定的。另外因为序列固定,所以有“随机数消耗”这个概念。恰好console主机没有时钟等有随机性的硬件,所以种子在游戏中的实现多数是开机后用一个固定常数初始化,意味着同样的操作会产生同样的结果。为了掩饰这种必然性,可能采用插入自动消耗随机数的方法,就是利用人的输入操作时间不会比帧速快的特点,这样在某些场景中特别是战斗场景,每帧都自动消耗一些随机数,或者根据用户按键的间隔时间消耗随机数等类似方法。

vp中采用了由 Donald E. Knuth 提出的,又称为 GB_FLIP 的伪随机数发生器。不含运算代价高的乘除法,只需55个数值表来进行减法运算就能实现的快速算法。理论上产生的伪随机数序列的循环周期period在2^55-1以上,是有很多应用的优秀的算法。(666的《乱数教程》所提到的圣战系谱里用的实际上也是这种算法的变形)

vp用的初始化种子也是一个固定常数,在游戏reset时初始化,自动消耗只发生在战斗场景。这是普遍的情况,所以能容易进行序列预测。举个例子,开机后读取存档,然后在经验宝珠里面升一级,会发现加的能力点数是固定的,也是这个原因。另外,伪随机数预测法与修改是不同的,修改是打破了游戏的规则。而这个预测是在游戏的规则之下,只不过知道内部运行的机制而已。算是黑盒play与白盒play的区别吧。

三、伪随机数的消耗

下面是一些消耗确定个数的伪随机数的方法:
A、读取迷宫存档 = 当前4人队伍中战士的数目(1-4),魔法师不算,以后分别用A1,A2,A3,A4表示
B、读取天上存档 = 48,也许是对每个地点初始化。
C、在天上开菜单,再关菜单同样 = 48,同上。
D、出剑 = 1。实际上是决定人物的语音。
E、新开始SG = 435 + 队伍战士数(435=29*5*3,是SG的3个隐藏角色升29级而来)
F、击打Lizard塔的镜子 = 25
G、金蛋圣血+4(因为是4项能力)
H、升级+5(因为是5项能力)
等。在迷宫队伍编成也会消耗(天上不会)。

关于读取存档类的额外说明:
?读取存档后不会立即消耗,要等一瞬间,大约跳一下就可以了。
?此场景不能有敌人,如果有敌人需要先解决掉。敌人走动会耗掉随机数。
?不能有中毒等人物状态。
?不能有场景特效,如下雨,下雪,掉火焰等天气效果。
?不能有香味(植物实验场)、某些
?法老王迷宫第一个save、精灵之森、第八章的数字迷宫。

耗掉不固定个数比如有:战斗会随时间自动消耗、敌人走动、天气特效、发射水晶与滑铲等。其中,发射水晶因为是一个粒子系统,因为粒子的数目是随机的,所以决定粒子随机运动所消耗的随机数也不确定。因为消耗的随机数非常多,以后有重要用途。

四、常规的预测法(上)

方法:固定的初始种子必然产生固定的伪随机数序列。为了让两次随机事件的结果相同,只要让随机数消耗个数一样就行了。需要先通过程序作模拟计算(数字小的手工计算也可以),得出需要消耗的伪随机数的个数。

举例:经验宝珠升级时人物四项属性增加值最大。经过程序计算,消耗的随机数最小为 151。
   数字分解 151 = B + 2*C + A4 + D*3
分解后的通俗解释就是(在地下迷宫的情况):
首先当然有这个迷宫的存档,队伍设为A4(4个战士),然后有个天上的存档。开始预测:
?Reset PS/Emu (让伪随机数种子重新初始化)
?读取天上的存档,开关菜单2次
?再开菜单读取地下A4存档,然后出3剑
?开菜单lv up,就是基础属性全加MAX
如果是在天上,或者队伍有变化也同理,用A~F的消耗法自行组合,凑够 151 个伪随机数就行了。

下面的一些消耗个数表,除了挑战极限伤害以外也会用得上。
忘却洞窟2全物品:49 = A1 + B
忘却洞窟3全物品:50 = A2 + B
忘却洞库4全物品:288= B + C*5  (有金蛋。忘却洞窟的研究请参见北欧专题站)
经验宝珠升级四项属性+MAX,DME+99:25241
经验宝珠连升级5级 STR+MAX:179 = B + C*2 + A3 + G*7 + A3 + D
神界报告生蛋4个:96 = B + C,但某章神界报告随机得到道具还要+1等,不行就用普通方法S/L吧。

五、常规的预测法(下)

下面开始正题,如何让フレイ在SG加入后STR尽量高。下表是用程序计算出的有代表性的数据:

――――――――――――――――――――――――
STR 随机数消耗
431 0
441 4
449 288
463 20330
465 412662
468 2067930
471 159711379
476 763225203
...
490 ?????
――――――――――――――――――――――――
从表中可以看出,
?开机之后如果直接新开始SG游戏,则フレイ初始STR固定431
?490是理想最高值 = 初始值200 + 最高10点*29级
?471需要最小的消耗数已经上亿了,意味着第一次达到这么高至少要消耗上亿的随机数,之前不可能出现。不是运气几率的问题。

STR=441时,消耗数分解 4 = A4
STR=449时,消耗数分解 288 = B + C*5
STR=463时,消耗数分解 20330 = B + C*423 + A3

考虑时间问题。消耗确定随机数的方法最快的是F:击打镜子。大概每秒2次=50个/秒,而消耗7亿的随机数要用 7亿/50 = 1400万秒 = 162天。就算有位神人可以日夜不停、不出错地S/L,但是PS能否开机162天还是个问题。所以对于大消耗数的情况,此路不通。

快速方法的消耗数都是不确定的,比如下雪=100/s,下雨=600/s,3个结晶散发冷气=600/s,单独发一个水晶约消耗500,对空发不停水晶=3400/s,靠墙边不停发水晶产生冰雾=6000/s。而如果有办法知道当前的消耗数,这些就可以利用了。

六、大数的预测法

方法:序列固定,Knuth的算法序列重复周期也足够长(至少2^55-1),所以只要有足够的采样值,根据重复概率就能准确计算出当前的消耗数。实现起来,通俗的说法就是:用掉2个圣血,记下四项能力的总共8次增加值。因为圣血随机4项能力+1~20点,所以用了2个圣血后,加能力点数的序列的重复概率是 = 20的8次方分之一 = 256亿方分之一,大于要预测的消耗数值,所以2个圣血就能够判定当前消耗了多少随机数。本文写了一个程序来计算判定。

目前最快消耗法是在下雨+在山坡连发水晶造冰雾约7100/s (每秒60帧的情况下)。如图:


实际上,这种大数预测法本身是可以准确预测到更高的数值。可惜目前没有发现更快速的消耗法。即使秒消耗10万个随机数,PS的CPU也可以负荷得起(主要是这个伪随机数算法的时间cost非常少)。所以如果有更快得消耗法,成绩还能提高。

七、成绩

先估算一下大概的完工时间,后期必须多测量。接近要达到的数字之后,改用数字分解固定消耗法。
本文最后采用的数值是:
    STR476    消耗数763225203(7亿多),大约消耗29小时。
最重要的是:可以挂机。用连发手柄+压住按钮来挂机,基本不用人工控制。

lv30 STR 476 +技能256  +升级690 +蛋440 +血140 = 最终STR 2002!
人物ATK=(2002+7800)*1.3 = 12742


基础伤害 = 人物ATK*支援效果1.5倍*Trust修正 - 敌RDM*削弱抗力
实际伤害 = 基础伤害*招式修正*决技顺序修正*(1+hits数/100)*魔法元素相克修正

关于公式说明:
?支援。就是指加攻击力的魔法、或者力量药,只有一个有效。
?Trust。游戏显示的Trust是一个评估值,不参与实际计算。实际有一个隐藏Trust因子,就是完全伤害率。比如フレイ的最终武器显示Trust只有3,但是完全伤害率有30%。打出完全伤害的可能性非常高了。如果武器只有常规意义上的Trust因子,那斩神剑等肯定用起来非常郁闷,但实际上因为有完全伤害率存在,所以还很不错。
?消弱抗力,是敌人对Reduce Guard的抗力。抵抗力值是敌人的固有属性,与我方的魔力无关。
?魔法元素相克修正。フレイ的决定技エ`テルストライク算毒魔法。这个经过分析过游戏的数据而验证。至于这么设定的原因不清楚。总之魔法对于有对应弱点的敌人伤害加倍。这是之所以フレイ能能打出这样大伤害数字的原因。其他人的决定技就没有这种特性。
(至于武器与敌人的隐藏属性数据是从游戏中分析出的,以后这些资料会一并整理在北欧专题站上面)

敌人选用位于SG第三区有毒弱点、且RDM最低的Wise Sorcerer,RDM30, 消弱抗力68.25%
基础伤害 = 12742*1.5*1 - 30*0.6825 = 19093
对于有毒弱点的敌人伤害公式 = 基础伤害 * 20 * 1 * 1.99 * 2 = 基础伤害*79.6 = 19093 * 79.6 = 1519802.8

实际打出的成绩也是 1519802。这个数字是确定的,没有随机成分。


(2005-01-27日修改) 以前写极限一击伤害文用了伪决,主要考虑提高hits方便,未做深入研究。也许有人对伪决有抵触,所以为了某种意义上的公正,这里还是有必要补充一下不用伪决打满hits的方法。根据伤害公式,フレイ最后一击之前的hits就要到99,即要求总hits>=100,SG第三区的3敌人组合中存在Wise Sorcerer,4敌人组合中没有。先把所有人的常规hits数相加:フレイ(16)+不死王(30)+Valkyrie(23)+魔法师(25)=94,以上两战士的throw都按1计算。就算运气好都发出2个魔法刃才96hits,可见打到100不能全用常规打法。

再提高hits的主要方法:
* 石化。不死王决技对Wise Sorcerer这种体重的只有17,而石化后可达21。
* 用False Arrow(3hits)替换掉Valkyrie那招2hits射箭,更有射程远的好处。
* フレイ的6hits那招打出15hits的方法,这是笔者打法的要点。先借助石化把敌人尽量往后打一段距离,准备好以后开始连击。フレイ发动Dark到敌人背后出5hits的那招,之后其余角色把敌人打向フレイ,然后フレイ出6hits的那招,会看到紧挨敌人出招可以打出15hits!为什么要屏幕边呢?因为不在屏幕边フレイ出6hits那招不会紧挨着敌人发动,会保持一定距离,而在屏幕边上恰好无法后退。注:hits与Reverie技能无关。

以上方法总计+14。笔者没有再深入发掘其他途径,所以理论值至少110hits。除去throw靠运气的2hits外,只要没有操作失误可打到108,附录像供参考:
http://www.enixfans.com/html/vp/research/frey_max/1519802.rar
如果对hits感兴趣,可以到本站论坛的精华区参照笔者的hits研究全文:
http://www.enixfans.com/html/vp/research/hits_agemo.htm


其他人的成绩:
“RPG史上最高一击”录像作者code1484,他的成绩是:(2002年)
最终STR1964 伤害 1493269
http://www10.plala.or.jp/code1484/game/vp.htm

よっつんヘイム的成绩是:(2004年)
最终STR1989 伤害 1517732
http://www.geocities.jp/yosimake2000/yottunheimu.html
他们都是打了几百遍SG才得到这样的数据,这种耐心不佩服不行。

本文虽然成绩只比日站的提高了2000余点,但伤害最大值这个数字是确定的,取决于人物的STR。这就是目前为止的最高一击伤害。

[ 本帖最后由 Agemo 于 2006-9-19 23:37 编辑 ]
回复

使用道具 举报

头像被屏蔽
发表于 2004-11-8 23:09 | 显示全部楼层

游戏是这么研究地

[m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-8 23:12 | 显示全部楼层

大神

[m]253[/m]
回复

使用道具 举报

发表于 2004-11-8 23:31 | 显示全部楼层
[m]253[/m]
回复

使用道具 举报

发表于 2004-11-8 23:45 | 显示全部楼层
[m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-8 23:47 | 显示全部楼层
[m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-9 00:09 | 显示全部楼层

回复: 大神

本文最后采用的数值是:
    STR476    消耗数763225203(7亿多),大约消耗29小时。
最重要的是:可以挂机。用连发手柄+压住按钮来挂机,基本不用人工控制。

最初由 Meltina 发表
[B][m]253[/m] [/B]
回复

使用道具 举报

发表于 2004-11-9 00:36 | 显示全部楼层
[m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-9 09:13 | 显示全部楼层
[m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-9 09:22 | 显示全部楼层
[m]253[/m][m]253[/m][m]253[/m]
[m]253[/m][m]253[/m][m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-9 09:33 | 显示全部楼层
[m]253[/m]
回复

使用道具 举报

发表于 2004-11-9 09:43 | 显示全部楼层
报告大神 最近又买了本vp设定集
以前那本居然不知道放到哪里找不到了>_<
等cn版出来看着书好好玩下[m]098[/m]
回复

使用道具 举报

     
发表于 2004-11-9 13:46 | 显示全部楼层
[m]253[/m][m]253[/m][m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-9 14:12 | 显示全部楼层
游戏发烧友!
[m]253[/m]
回复

使用道具 举报

发表于 2004-11-9 18:32 | 显示全部楼层
[m]253[/m]

这才是VPfans!
回复

使用道具 举报

     
发表于 2004-11-9 18:35 | 显示全部楼层
[m]253[/m] MAX
回复

使用道具 举报

     
发表于 2004-11-9 18:44 | 显示全部楼层
最初由 mの草原 发表
[B][m]253[/m]

这才是VPfans! [/B]
回复

使用道具 举报

     
发表于 2004-11-9 19:19 | 显示全部楼层
Agemo大哥可以花这么多时间做深入研究,想必VP中文版可以在寒假中正式发布吧。
回复

使用道具 举报

发表于 2004-11-9 19:25 | 显示全部楼层
最初由 Falcomfans 发表
[B]Agemo大哥可以花这么多时间做深入研究,想必VP中文版可以在寒假中正式发布吧。 [/B]
请叫他爱阁摸
回复

使用道具 举报

     
发表于 2004-11-9 19:30 | 显示全部楼层
不知道啊,以前在QQ和世界树都这么叫惯了,不知楼上的那三字有何来历传统。
回复

使用道具 举报

     
发表于 2004-11-9 19:31 | 显示全部楼层
[m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-9 19:38 | 显示全部楼层
回复

使用道具 举报

     
发表于 2004-11-9 19:40 | 显示全部楼层

已经高深到让人理解不能的地步了

[m]253[/m][m]253[/m][m]253[/m][m]253[/m]
回复

使用道具 举报

发表于 2004-11-9 20:30 | 显示全部楼层
天哪。。恐怖。。
[m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-9 20:39 | 显示全部楼层
排队……
[m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-9 20:51 | 显示全部楼层
太恐怖了,超越了我的想像`
回复

使用道具 举报

发表于 2004-11-9 21:47 | 显示全部楼层
虽然完全看不懂在说什么
但是现在像楼主这样研究游戏的人实在太少了
[M]253[/M]
回复

使用道具 举报

     
发表于 2004-11-10 12:35 | 显示全部楼层
保存了慢慢看
[m]253[/m]
回复

使用道具 举报

发表于 2004-11-10 20:28 | 显示全部楼层
最初由 S1ER众 发表
[B][m]253[/m] [/B]



[m]253[/m]   [m]253[/m]   [m]253[/m]
回复

使用道具 举报

发表于 2004-11-10 22:04 | 显示全部楼层
我华丽的晕了。。。。。。。。
回复

使用道具 举报

发表于 2004-11-11 13:49 | 显示全部楼层
[m]253[/m]
回复

使用道具 举报

     
发表于 2004-11-11 14:04 | 显示全部楼层
我哭了
回复

使用道具 举报

     
发表于 2004-11-12 15:12 | 显示全部楼层
[m]253[/m]     不队列不厚道了@@  

那些随机数数值是汉化时研究的么??
回复

使用道具 举报

发表于 2004-11-12 17:59 | 显示全部楼层
BT 就是这样炼成的

队形保持
[m]253[/m]
回复

使用道具 举报

发表于 2004-11-12 22:29 | 显示全部楼层
[m]253[/m]
实在是太强了,不愧是汉化队伍的主力……

EDIT:丢人了……把253顺手按成233了……实在抱歉……马上改过来!
回复

使用道具 举报

发表于 2004-11-13 10:29 | 显示全部楼层

不拜不行,原理虽然简单,但能研究到这地步……非一个强字可以形容,至少应该是“强*10^10”
回复

使用道具 举报

     
发表于 2004-11-13 16:05 | 显示全部楼层
[m]253[/m]
这便是神...
回复

使用道具 举报

发表于 2004-11-13 23:31 | 显示全部楼层
楼主厉害,佩服佩服。
回复

使用道具 举报

发表于 2004-11-14 21:51 | 显示全部楼层
先表示佩服~
但是有两点不是太明白.
一是最佳随机数的密度,这29次升级所要求的随机数分布是均匀的么?
为了确定随机数已经接近指定值,需要不停的使用圣血s/l来测算,如果分布不是严格均匀的,
该怎么决定测试采样的频率?
二是按楼主的算法,应该可以达到理论最高值490啊?为什么最后差了一些?
回复

使用道具 举报

头像被屏蔽
发表于 2004-11-14 22:00 | 显示全部楼层
1,最佳随机数的位置是固定的,SL只是为了看当前离最佳随机数还有多远
2,490要消耗几亿亿亿亿亿个随机数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-9-26 14:17 , Processed in 0.330310 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表