Copyright © 2011-2013 Avril. All Rights Reserved
Best View in Google Chrome
Photobucket

Saturday 23 February 2013

Temple Run 的终点(转发)



--------------------------------------------
转发 自 Miracle's Blog
--------------------------------------------
好久不更新了,一是懒,二是忙。国庆八天不做作业的后果就是这一周狂补作业。于是即使到现在我的作业都还没有补完,先不管了,来更新一篇吧。
忙里偷闲,这几天一直在玩Temple Run,有空就刷上几局。正巧的是,最近关于Temple Run有无终点的讨论又热烈起来了。有人说跑到5亿分就能看到终点,原状态是这样的:“最后主人公逃出森林,重返繁华大都市。终点需要跑到5亿分,而5亿分需要不死且狂吃金币不间断跑48小时以上。。。。高潮是,全球已经有上百人跑到了终点……这尼玛算是一种修行么……”还有理有据的发了张所谓的终点图。如下:
这都跑到上海来了,明显不科学,虽然这图看上去毫无PS痕迹。
这尼玛我一开始还傻乎乎的信了,后来越觉得不对劲,这怎么可能有终点,怎么可能有终点,怎么可能有终点呢??
伴随着我的质疑,又看到了一篇文章,文章作者通过Android程序调试的方式修改了Temple Run的计数器,直接将分数改到了5亿,但是奇迹并没有发生,主人公还在跑。这尼玛是开玩笑么?终点呢?
我们来摘录几段原文(原文地址):
先来看看Temple Run的得分规则:
Temple Run 的得分由以下两个部分组成:
基本得分、倍数
最终我们看到的得分实际上是基本得分乘以倍数得到的。
基本得分又由以下几个部分组成:
距离得分、金币得分、奖励得分
距离得分=你跑的距离(单位:m)
金币得分=你所得到的金币数*5(注意红色金币算2个,蓝色金币算3个,不过游戏已经帮我们计算好了)
奖励得分:主要来自游戏右边的金币条,每次充满可以奖励一定分数,具体得分规则未知,大概每够100金币次在600-1000左右
经过测试,正常情况下,每秒可以跑约15米,平均1000米金币数量大概在200-250个(个数,而不是金币换算后的总额)
现在计算一下500,000,000分数需要多长时间:
假设玩家全程所有金币全部吃掉,从来没有掉下去,倍数为52x(我的是1.8版本,正常的52x)
那么用总分除以倍数可得所需的基本得分:500,000,000/52=9,615,385
每1000米250个金币,每4000米就是1000个金币,共有10次奖励得分,可得这4000迷的分数为:
1000*5+4000+10*1000=19,000
所需时间为:4000/15=267 s
平均每秒得分:19,000/267=71.16
那么所需时间为:135,123s 即37.53小时。所以达到这个分数最短只要38个小时。(我去,这也很坑啊!)
虽然游戏可以暂停,但是这样一个休闲游戏,即使抛开难度不谈,跑这么长时间才有从逻辑上不合理。
当然,为了科学,我们假设这样奇葩的设计是可以被接受的,那么就需要实际验证究竟5亿究竟能不能到达都市。
那么,要达到5亿这个分数,我们肯定不会疯狂的晚上37.53个小时以上。其实,通过Android程序调试的方法,很容易可以操纵游戏中的数据,比如,我们可以将游戏倍数调成10,000,把一个金币的基本得分调成10,000。。。不过这些来的都不是很快,笔者这里将游戏的初试分数设定在9亿多~考虑到以上提出的分数组成,必须要分数符合游戏本身的评分规则才可以。笔者游戏的倍数目前是52,于是将游戏距离初始值设置为2,678,923,将金币的初始值设置为:2,680,000 ,基本分设置为:18,752,461 那么基本分的组成为2,678,923+2,680,000*5+其他各类加分,不存在金币数*5超过基本分或金币严重不足的情况。我们看一看结果怎么样。
我们的角色依旧跑啊跑……尼玛这是坑爹呢,哪有什么大都市!
不过为了科学,我们假设传闻的5亿分数是不准确的,实际的重点存在于分数比5亿更高的地方。那么现在需要考虑的问题就是这个游戏最高可以达到多少分。
首先明确该游戏需要的是玩家的手眼协调及手眼反应能力。那么,手眼协调方面,我们假设玩家喝了1000瓶红牛……每次都完美无错,那么就只剩反应速度了。目前已知最快的手眼反应速度是0.2s即200ms。游戏的迷宫是根据几种基本结构随机组合而成的。在多次试验中,发现可能存在长度恰好等于一般角色跳跃范围的沟壑,不过出现的概率较低,平均每10,000m出现一个。一个急转紧接着一个沟壑的组合出现概率后期平均约为3,000m一个,由此可推算出二者组合出现的频率为每30,000,000m一个(其实实际上的频率要比这个高得多),当出现如下组合的时候,所需反应时间实际上小于0.2秒(转过去后马上就要跳,两个动作间隔若超过100ms即有坠落危险。)那么这种情况下基本上不可能避免坠落。不过我们还有翅膀,可以让我们的角色复生。好吧,假设我们的翅膀是无限的,它仍然有60s的冷却时间,那么我们60s内遇到两次这样组合的概率是多少呢?
首先要计算遇到一次这样的组合大概所需时间30,000,000/15=2,000,000s 也就是说,在任何一秒内我们遇到一次这样组合的概率为0.0000005,那么60s内有2s或2s以上遇到这种组合的概率为1-0.0000005*0.9999995-0.9999995=0.00000000000025 也就是说,我们平均跑4,000,000,000,000s的时候就可以遇到这样的一个组合。。。所对应分数为284,640,000,000,000。为了达到这个分数我们需要跑126,839.16793505834601725012683917年。。。当然其实这个数字可能更大,因为这种情况发生的时候可能远大于这个游戏时间……(时间不是问题,我们可以秉承愚公移山的精神,子子孙孙无穷尽矣~~~)
当然,其实上面有关手眼协调与反应的分析只不过是提供一下这个游戏终结情况的庞大可能性之一,科学性不高,仅供娱乐~
下面,让笔者带你进入本游戏最坑爹的部分!
既然获得284,640,000,000,000这种算法不是很靠谱的,我们就需要从游戏本身下手。
笔者用的是android平台测试游戏,故利用该游戏的Java代码来作分析。
成功提取代码后,笔者发现该游戏分数这个变量为int类型,Java中的int类型长度为4字节。这就意味着,分数这个变量的取值范围是-2147483647~2147483647,也就是说该游戏可能达到的最高分数实际上就是2147483674(坑爹呢不是……别急,还有更坑的!)那么是不是达到了这个分数我们角色就会到达大都市了吗?我们再次利用程序调试的方式将初始分数调成2147483647,然后一跑……
尼玛,分数变成负的了有木有!!!
实际上就是4字节的int变量不够用了,由于int类型变量是有符号的,2147483647的二进制代码是
0111 1111 1111 1111 1111 1111 1111 1111 再加一就变成了1000 0000 0000 0000 0000 0000 0000 0000
第一位是符号位有木有,变成1就代表负数了有木有!!!!
于是,这个游戏不仅仅没有大都市,而且当玩家愤然跑到最高分的瞬间会变成负分啊有木有!!!!
摘录结束,继续我们的讨论。其实我们完全可以问,既然作者可以通过调试直接改分数,那为何不能直接看看Temple Run的代码里有没有关于终点的代码呢?
好吧,我们先回归一下文章最初那张图片,刚开始我们说,这图看上去毫无PS痕迹,但其实,稍微仔细一看,就会发现满满的都是PS痕迹。以不很专业的3D动画基础判断,这幅图是利用Maya或者3D等软件独立渲染出来的学员作品。之所以说是学员作品,是因为这幅图的水面效果做的很一般,水的材质有问题,只有反射效果没有折射效果,并且没有加入物理学特效,一点水波纹都没有。那么首先来说否定了神庙逃亡的终点是图中这个德行,也就是说这张图纯属意淫之作。
再次,首次进入游戏时,每奔跑1米便获得10分,而随着游戏内获得金币数量的增加,这一比例会加大。这就意味着,随着游戏时间的增加,这一比例能够越变越大,也就是说每次的分数都应该是成递增形式增长的,那么相同时间内获得的分数是有差异的,所以48小时内获得的分数有可能24小时就可以完成。那么文章开头那条状态显然是假的。
Temple Run的“终点”
其实在神庙逃亡刚刚上市时,就有玩家在询问这款游戏是否有终点了,只能说游戏内那个逃离神庙的道路是没有终点的,但是游戏本身是有终点的。
看App Store 里面游戏的简介就知道这是没有尽头的了。
很多人说这个终点是游戏的彩蛋,但其实游戏真正的彩蛋是在开启教学模式后,游戏的第一个右转弯时连续向右快速滑动三下,这时玩家会进入一条没有尽头也没有金币的长廊,这时除非你想死,否则将会一路安全的跑下去。不过这个彩蛋只限于iOS版的神庙逃亡。
游戏真正的终点
作为一款游戏而言,神庙逃亡的终点就是当玩家完成了所有的成就,以及用自己赚到的金币购买了全部的人物形象和增值壁纸之后,就到达了这款游戏的“终点”,当然不要用修改器速成,这样会大大丢失游戏本身的乐趣,虽然收集其这些道具可能真的要有5亿分的累计分数,但是却远没有传说中那样遥不可及。
Ps。游戏内成就系统的最高米数成就、最高分数成就都只有1千万,这也就再次证明了5亿分的传说只是浮云。
--------------------------------------------
转发 自 Miracle's Blog
--------------------------------------------

Photobucket
大家帮帮忙,
按进去这广告吧!
你不会吃亏的!=D
Nuffnang Ads

0 颗星星说♥:

Post a Comment

用了请留言,谢谢!=)
如果您看到任何错误请留言在此。
Please leave your comment after using these ideas!=)
Please inform me here when you have seen any mistake.