首 页最新软件下载排行文章资讯投稿发布下载专题
维维下载站
您的位置:首页游戏攻略 → 饥荒海难火山时间错乱怎么解决 时间错乱问题解决方法

饥荒海难火山时间错乱怎么解决 时间错乱问题解决方法

来源:维维整理 发布时间:2016-7-29 17:33:44 人气:

饥荒海难火山时间错乱怎么解决 时间错乱问题解决方法

闲话:饥荒作者在日期设计上有一此奇怪,他不是采用统一的时间,而是每个世界(包括洞穴,火山)都有一个独立的时间,只有当前世界的表会走。这样跳世界时时间会不一致。

按理说用跳之前世界的时间盖掉新世界的时间不就简单了吗,不过作者想允许不同世界的时间不一样,因此用player_age(即玩家年龄)来同步两个世界(ROG与SW跳除外)。

接着呢,当检测到用户是从一个世界跳到另一个世界时,它就触发这一个同步的代码。跳世界(travel)的方式总共有:"ascend""descend"(上下洞穴)"shipwrecked"(跳ROG和SW)"ascend_volcano""descend_volcano"(进出火山)这几种。

当上下洞穴和进出火山时都需要同步时间(跳ROG和SW不需要),因此要在加载世界时需要检测下是不是要同步:

if travel_direction == "ascend" or travel_direction == "descend" then

print ("Catching up world", catch_up, "(", player_age,"/",world_age,")" )

因此现在你能够看出问题来了吗,作者在这里漏掉了"volcano_ascend"和"travel_direction"这两条。只要你在火山里呆的时间超过一天,这个时间就应该要同步,不过因为作者的大意,这个同步永远不会发生了。

而接下来问题得以扩散,整个世界都会乱掉。当然,这个同步错误只会在游戏中跳世界时发生,要是你发现时间不对,退了再读次档也会没有问题,但是我不确定会不会一直没有问题。

全新档使用GetClock():OnUpdate()模拟时间增长的方法下进出火山多次,测试通过。

补充更正

进一步看了一下代码,之前有的地方说得不大对,更正如下:

饥荒累积时间单位是秒,因此在火山里面即使是不够一天,出来的时间也会错开。

这个bug的触发条件十分的苛刻,由于实际上要是你连着玩,catch_up这个值在GetClock()中就会获取到,前面那个大分支都不会进而直接LongUpdate更新时间,这时BUG是不会触发的。不过要是前面发生特殊情况(例如进出火山时崩溃了,就会导致catch_up为nil从而进入那个有问题的分支。

上一页  第1页  第2页  

相关下载
栏目导航
本类热门阅览