如果光速没有上限,世界会怎么样?

查看全文
理就重现出了玩家的变态成绩。 办公室里一阵寂静,你和研发经理两人面面相觑。 研发经理毕竟是 211 毕业的高材生,他想了一会就恍然大悟道:「原来是这样,我实在没有想到会出现这种情况,这其实是赛道旁边的崖壁太薄了造成的。」 「崖壁太薄为什么造成这个 BUG?」你一脸的疑惑。 「是这样的」,研发经理已经完全理解了问题所在:「我们游戏里面的碰撞检测是有时间间隔的,程序会每隔一会检测赛车模型的中心和各种阻挡物之间的距离关系,一旦距离小于某个值就会视作发生碰撞,将车弹回去。但是这个崖壁阻挡太薄了,玩家的车速高到某个程度的时候,撞进来又正好在两次检测的空隙之间的时候,车的中心就穿过了这个崖壁才被检测到碰撞,但是因为模型已经越过了崖壁,于是碰撞程序就把车移到了另一边,所以赛车就穿墙而过了。这个移动是碰撞算法造成的,和正常的移动不一样,所以没有受最小移动距离的限制,所以就超过了游戏的最高车速。」 「碰撞算法有这么高的能力,能帮助赛车超过游戏的最高运动速度?」 「是的,游戏设置最高运动速度的底层原因是因为物体不能在空间中超过最小单位作跳跃,否则就会出现瞬移,如果有瞬移现象,那么就可能出现两个物体同时瞬移到同一个位置的可能。所以要求物体连续运动的本质上也是避免不同物体会同时出现在同一个最小空间单位里。但是,碰撞算法的底层原因也是为了避免不同的物体同时出现在同一个空间里,所以,游戏存在最高速度其实并不是原因或者目的,而是只是现象,更本质底层机制的其实避免不同物体的空间重叠,所以一旦出现这种空间重叠,这时候弹出物体几乎是不需要所谓速度的,系统会以最快的节奏把模型瞬移出去。当然,也不是完全无时间消耗的瞬移,重新绘制物体还是要花费一点时间的,但这也远超最高速度了。 「哦」,你和运营经理总算弄明白了这个 BUG 的底层原因,于是你又问道:「那我们要怎样避免玩家再利用这个 BUG 呢?」 研发经理想了一下说:「很简单,把墙加厚点就行了。」 运营经理有点质疑:「这好像没有从本质上解决问题吧?」 研发经理耸耸肩:「这就是最省事的办法了,如果你觉得要从底层来彻底解决这个问题的话,首先我觉得没必要,因为减小检测间隔会极大的增加系统的负担,需要买更强大更贵的服务器,而且绝大多数情况下对玩家体验也不带来什么明显改善。其次,修改底层算法风险很大,搞不好会把整个游戏搞宕机,老板你看呢?」 「去让关卡策划和美术把崖壁改厚点,顺便检查下还有没有其他赛道需要修改。」你感觉作为老板,决策起来一点难度都没有。 在结束会议之前,你有点不放心,又问了下研发经理