比如,你是某个网络赛车游戏公司的老板,今天你很生气,因为游戏里某条赛道的最新成绩被刷新到了一个恐怖的令人惊奇的地步,有玩家只用了几秒钟就完成了比赛,很显然这是游戏出现 BUG 被人利用了,于是你叫来了游戏的运营经理和研发经理开会。「你们谁来跟我解释一下,这个变态的成绩玩家是怎样做到的?」你作为老板有权要求下属们给你一个合理的解释。运营经理连忙回答:「我了解过了,这是玩家利用 BUG 实现的。」研发经理感觉很奇怪,说到:「应该不可能啊,这种 BUG 理论上是不可能出现的。」于是你问道:「为什么不可能出现呢?」研发经理说:「因为我们游戏里的赛车其实是有速度上限的,无论玩家怎样改装赛车,都不可能超过这个速度上限。」「为什么不可能超过上限呢?难道玩家没有某种手段绕过这个限制吗?」「不可能绕过的,因为这个速度上限并不是我们为了防止玩家刷 BUG 设置的,而是我们游戏的底层机制决定的。因为赛车在我们游戏里运动需要不断地改变位置,而我们游戏里面物体改变位置的最小单位和最小时间单位都是确定的,所以从理论上就会有一个最大速度,玩家无论用什么办法都不可能让赛车超过这个速度。因为这个速度就是我们游戏能保证赛车连续运动的极限,再快,赛车在玩家眼里就会出现瞬移了,这种现象从我们的底层算法上就是无法出现的,我们的赛车在程序空间中,只能一格一格的移动,不能跳格!」你听完,觉得研发经理说得很有道理,于是就非常疑惑地问运营经理:「那么我们的玩家是怎么做到的呢?」运营经理说:「我也不太懂这个原理,但是我能把玩家的操作重现给你们看。」于是运营经理进入游戏,选择赛道开始比赛。只见运营经理在赛道上找到一个合适的位置,飞快地把车撞进了路边的一个崖壁,经理试了几次后成功了。某一次几乎是一瞬间,车没有被崖壁正常地弹回去,而是从另外一边的崖壁被飞快地弹了出来,这个穿越过程似乎没有花费任何时间,于是经理就重现出了玩家的变态成绩。办公室里一阵寂静,你和研发经理两人面面相觑。研发经理毕竟是 211 毕业的高材生,他想了一会就恍然大悟道:「原来是这样,我实在没有想到会出现这种情况,这其实是赛道旁边的崖壁太薄了造成的。」「崖壁太薄为什么造成这个 BUG?」你一脸的疑惑。「是这样的」,研发经理已经完全理解了问题所在:「我们游戏里面的碰撞检测是有时间间隔的,程序会每隔一会检测赛车模型的中心和各种阻挡物之间的距离关系,一旦距离小于某个值就会视作发生碰撞,将车弹回去。但是这个崖壁阻挡太薄了,玩家的车速高到某个程度的时候,撞进来又正好在两次检测的空隙之间的时候,车的中心就穿过了这个崖壁才被检测到碰撞,但是因为模型已经越过了崖壁,于是碰撞程序就把车移到了另一边,所以赛车就穿墙而过了。这个移动是碰撞算法造成的,和正常的移动不一样,所以没有受最小移动距离的限制,所以就超过了游戏的最高车速。」「碰撞算法有这么高的能力,能帮助赛车超过游戏的最高运动速度?」「是的,游戏设置最高运动速度的底层原因是因为物体不能在空间中超过最小单位作跳跃,否则就会出现瞬移,如果有瞬移现象,那么就可能出现两个物体同时瞬移到同一个位置的可能。所以要求物体连续运动的本质上也是避免不同物体会同时出现在同一个最小空间单位里。但是,碰撞算法的底层原因也是为了避免不同的物体同时出现在同一个空间里,所以,游戏存在最高速度其实并不是原因或者目的,而是只是现象,更本质底层机制的其实避免不同物体的空间重叠,所以一旦出现这种空间重叠,这时候弹出物体几乎是不需要所谓速度的,系统会以最快的节奏把模型瞬移出去。当然,也不是完全无时间消耗的瞬移,重新绘制物体还是要花费一点时间的,但这也远超最高速度了。「哦」,你和运营经理总算弄明白了这个 BUG 的底层原因,于是你又问道:「那我们要怎样避免玩家再利用这个 BUG 呢?」研发经理想了一下说:「很简单,把墙加厚点就行了。」运营经理有点质疑:「这好像没有从本质上解决问题吧?」研发经理耸耸肩:「这就是最省事的办法了,如果你觉得要从底层来彻底解决这个问题的话,首先我觉得没必要,因为减小检测间隔会极大的增加系统的负担,需要买更强大更贵的服务器,而且绝大多数情况下对玩家体验也不带来什么明显改善。其次,修改底层算法风险很大,搞不好会把整个游戏搞宕机,老板你看呢?」「去让关卡策划和美术把崖壁改厚点,顺便检查下还有没有其他赛道需要修改。」你感觉作为老板,决策起来一点难度都没有。在结束会议之前,你有点不放心,又问了下研发经理:「你确定崖壁改厚了,就不会再出现这个 BUG 了吧。」研发经理一看就是一个很严谨的人,他斟酌了一会说:「理论上,还是有穿过的几率,因为我们的检测时间也有随机性,只要玩家尝试的次数足够多,再厚的阻挡也有穿过的概率,只是这个概率极小极小。」「好吧,那就这样吧」,你作为老板深刻地理解不要为极小概率的事情去发愁的简单道理,这种问题,留给知友们去操心就好了。
人肉发电只是一个比喻,而是以后越来越多的人的“工作”会是接入matrix和AI互动,给AI提供训练数据,成为大AI系统的一部分。 wdong 发表于 2023-02-14 16:24
为什么我们的世界存在速度限制(真空光速)
一个对世界万分好奇的做科普的游戏人 关注
9,251 人赞同了该回答
为了能回答清楚这个问题,我们先来开一个脑洞: 我们这个世界是某种计算主机虚拟出来的,类似黑客帝国一样; 这种计算主机有类似我们现实世界计算机的浮点运算的计算特性。 如果从这个角度来考虑,对于这个问题我可以提供一个有趣的思路。 既然已经提到了现实世界的数值精度问题,那么我们身处在这个黑客帝国世界里,怎样才能感知到世界底层正在进行的数值计算过程,从而还进一步能了解到其浮点运算的特性呢? 其实,我们可以从我们自己构建过的虚拟世界的创造者的角度来同理思考这个问题。 人类构建的最多的虚拟世界是什么呢? 答案是 3D 游戏,尤其是 3D 的 MMORPG(网络多人角色扮演)类别的游戏。 虽然人类现在创造的 3D MMO 游戏还很简陋,离真正的「黑客帝国」还差很远,但是某些特性还是有可类比性的。 假如我们在一个 3D 游戏中,要如何了解这个游戏浮点方面的特性? 虽然身为玩家,我们没办法了解游戏底层的计算过程,但是我们可以观察到与浮点计算有关的一些画面表现,比如说游戏引擎在处理模型细节方面的表现来分析运算精度方面是否有问题。 在 3D 游戏中,所有的画面渲染和三维计算都是用浮点方式进行计算的,这种计算非常消耗系统的资源,所以硬件厂商为这种计算,专门设计了具有强大浮点计算能力的 GPU 芯片的显卡来专司这方面的计算需求,但是好的程序员还是会非常谨慎地优化算法,力求节省计算资源,以免造成系统的卡顿。 在 3D 游戏中,有一个很重要的优化算法的地方就是游戏的空间碰撞问题。 说白了就是 3D 物体的碰撞检测,简单来说,就是判断游戏里两个物体有没有碰撞,举个简单例子:
本篇作者:阿布大树 备案号:YXA1wzrJEgaSJEBXLzSLE5k 来自「盐知识」专栏《听赛先生的话:漫游数理世界》
但是也需要大量的内容做饲料吧,否则标注啥
打个岔,人机结合最感人的片段应该是新版的 Robot Cop 里 Fly me to the moon 那段 当时看的时候觉得好惋惜啊
系统提示:若遇到视频无法播放请点击下方链接
https://www.youtube.com/embed/tHQFDTi_0DE?showinfo=0