从程序员角度看“上帝“玩游戏
Posted 高小小天
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从程序员角度看“上帝“玩游戏相关的知识,希望对你有一定的参考价值。
从程序员角度看"上帝"玩游戏
即使再小的帆也能远航~
杨振宁曾经说过,他不相信有"人形"的造物主,但他相信有造物主,因为整个世界的结构不是偶然的.这一切太妙了,妙到不可能自发形成
那么假设我们这个世界是被创造出来的,一个非常真实的虚拟游戏,所有有意识的生命体都是一个独立的玩家,每个玩家也都想过自己为什么会在这里,但都想不起来了.由于人类这个角色的创造力很强,所以我们经过发展,开始有能力制造虚拟游戏.当上造物主的角色,不过人类做的游戏,我们很容易就找到真理,就是这个游戏的底层逻辑,也就是各种各样的代码.
那么既然游戏有底层逻辑,我们这个世界是不是也可能有底层逻辑.想找到我们这个世界的底层逻辑并不容易,要么就让时间走的足够慢,要么就把微观世界放的足够大.这两个方式都不太容易,人类研究这些也就百来年的历史.依然没有摸到这个现实游戏的最小或最慢的单位.通过研究基本粒子,人类已经发现,经典力学和相对论都不是这个世界的终极答案.他们的理论都是基于确定论的,而微观尺度下的世界,完全就是一个概率性的游戏.难道我们现实世界的底层逻辑,和概率有关?
微观世界最让科学家头疼的,就是量子的不确定性,光的波粒二象性,说明它既是波又是粒子.现实世界很难想象,我们认知的事物百分百都是确定的.你不可能既是男人又是女人;在家,又不在家.但在游戏世界就再正常不过了.
但在游戏世界就再正常不过了.假如游戏地图上的某个地点,会有几率出现超级BOSS,那么你看到这个BOSS的出现概率就是50%.你进入游戏地图前,这个BOSS就是处于存在和不存在的叠加态.只有你进入地图之后,BOSS程序才会启动.BOSS才会从叠加态坍缩变成可确定的状态,它在或者不在.而这就是量子力学的核心:概率.
它不像我们生活中那样那么有确定性,现实中你花钱就可以买到一辆车,第二天就可以带着对象去郊游,但是量子世界,你除了花钱之外还需要一点运气.钱花了,可能会收到一辆车,也可能不会收到一辆车.这就是量子的不确定性.微观世界下的量子力学就是这么神奇.这个比较符合游戏现象的量子力学就是量子纠缠.一对同源粒子,观测其中一个是自旋向上,另外一个必然自选向下.按照现实世界的逻辑,在这两个粒子出发前,肯定是谁提前和它们说好的,到时候有人把你们分开,你就向上,它就向下.但通过实验发现,这不对.没有人跟他们提前说好,粒子其实并不存在什么分不分开的问题,他们一直都是一个整体.即使你用手段给他们分开了,他们依然是属于纠缠在一起的状态.怎么理解呢,就好像一个苹果,分开它之后,现实是他们只能分开两半,但是粒子在被分开之后,两个都是一整个苹果.他们各自都处于叠加态.就是我可以是左半边的苹果,也可以是右半边的苹果.如果一旦有人看了,那其中一个苹果就会变成可确定的状态.一个是左半边,一个是右半边.
现实世界中难以理解,但在游戏世界中很容易理解.游戏中经常有开宝箱活动.程序员可以设置宝箱能开出好东西的数量是固定的.加入这两个游戏有两个玩家,每个玩家只有一个宝箱,宝箱能开出的东西只有两个,一个是神器,一个是废铁.然后一个玩家打开了宝箱,发现里面是废铁,另外一个玩家打开肯定是神器.现实的逻辑是,两个宝箱在打开前,就分好东西了.但游戏世界不一样.宝箱是一个简单的代码而已.两个玩家拿到的宝箱也是一模一样的,因为他们都是同一个代码.其中一个玩家打开宝箱,脚本程序开始启动.这个脚本中包含两个代码. 一个是神器,一个是废铁.也就是说,玩家没打开之前,这个箱子里有两个东西,打开之后就变成了一个东西.因为道具的设定是有限的.所以一个玩家打开是神器,另一个玩家打开就是废铁.用量子力学的知识解释,就是这宝箱中的道具处于叠加态,打开宝箱,道具就从叠加态变成了可确定的状态.然后,另外一个宝箱中的道具也就能确定了.但和量子力学不同的是,我们编写的游戏世界,它符合局域性原理.就是一个箱子打开之后,电脑还需要通过运算和信息传输,才能让另外一个宝箱确定出现哪个道具.简单说,就是游戏中的这个现象存在延迟.
但量子力学不符合局域性原理.就是说他没有延迟.微观世界下的量子世界是违背因果律的.所以爱因斯坦直到去世,都觉得量子理论应该存在一些问题.信息的传播不可能违背局域性原理.也就是它不可能超过光速,但是一次次实验证明,量子世界就是存在超距作用.他确实违背了因果律.虽然目前人类的所有实验,都不是直接观测到的,因为我们也不可能直接观测到,但通过一些间接实验,确实是证明了量子超距作用的事实,他就是违背局域性原理.
现实中我们打篮球的正确顺序是:你先投篮,然后篮再进入篮筐.这是一个有因有果的过程.但是在量子世界不同,他信息的传播具有超距作用,也就是不受因果关系的影响.它可能是球先进框,再有你投篮的动作.整个过程和现实相反,也有可能是同时发生.
现实世界很难理解,但程序员早就看透了.玩游戏的时候,你操作人物释放技能,技能会有一个飞行弹道,最终会产生两个结果.命中目标或者未命中目标.一般来说,玩家会认为,技能动画播放之后,才会看到技能是否命中目标.但程序员嘿嘿一笑,其实这都是假象.在你按下鼠标那一瞬间.技能动画还未出现的时候,电脑就已经计算出了你是否可以命中目标.然后再开始播放技能飞行动画.如果电脑计算你会命中目标,那就播放技能命中的动画,如果电脑计算出你不会命中目标,那就播放技能未命中的动画.
现在电脑算力越来越高,游戏也要更复杂.技能的飞行弹道也会增加更多监测点.目的其实就一个:就是让虚拟的游戏世界可以越来越像现实世界一样,存在一定的合理性,也就是因果律.那游戏为什么要这样做呢,不能一开始把所有的东西都给生成好吗?然后就和现实世界一样.
理想很丰满,现实很残酷.其实不管是游戏世界,还是现实世界,都存在一个难以逾越的障碍:上限.人有人的上限,游戏有游戏的上限.而游戏的上限就是电脑的算力.以前的电脑算力低,游戏画面粗糙.现在的算力高,游戏世界也可以做的很逼真,甚至可以以假乱真.游戏虽然越来越逼真,不过电脑的算力还是有限的.屏幕越大,分辨率越高,对电脑算力的要求也越高.但是游戏要想获得更多的用户,对电脑算力要求一定不要太高.让普通玩家的普通电脑也可以流畅运行.那要想玩家玩家体验好,获得更好的画面.游戏流畅度还可以.只能牺牲掉电脑上不出现的场景或人物.只有玩家控制的人物到哪里哪里的场景才会出现.人物道具才会出现.至于出现哪些东西,这也不是决定的,因为你每天要经过这里,每天看到同一个人,时间久了肯定会腻.所以程序员开发的时候就想到了,一定要多搞几套脚本程序在这里.只要你一出现,就会按照设定的程序运行哪一套脚本.这样你每天经过这里,就会发现不管是人还是车还是一些道具都会有所改变.这样做的目的就是,为了避免楚门发现这个世界是假的.
假如我们每个人都是虚拟人物,甚至猫阿狗啊也都是虚拟的.那其实我们大脑里的意识才是真正的玩家.这就能解释很多东西.因为我们这个宇宙的算力系统,也存在算力上限.所以从宏观世界看,你身边的一切都是客观存在的,但是你的视力和很多感官系统其实是有限的,也就是有距离的.超过一定的距离.你就不能感受到那里的东西.所以我们周围的生活环境,和电脑屏幕一样.我们至多能感受到这个屏幕里的东西.如果你想要在这个游戏中,感受到更多的地方.那我们就要移动.这样不仅可以节省主服务器的算力,更能节省我们个体的算力.宇宙就像游戏公司的主服务器,那里有各种各样的编程天才,他们会设计各种各样的游戏规则.场景道具任务随机事件等等.然后每一个有意识的生物都是一个玩家,它们的电脑都连接到主服务器,每天通过大量的信息传输,下载,上传周围的一切信息.由于个体算力有限,也为了节省资源通常个体计算机都只能运算很少一部分的信息.所以一些不重要的信息或者一些比较久远的信息,都会被压缩或者清除.而主服务器的算力也很有限.所以我们这个游戏世界中还是有上限的,那个上限就是光速.视觉系统的运行是需要大量算力的.所以光速的限制实在是无奈之举.但玩家也很聪明(牛顿,爱因斯坦,薛定谔......),去窥探这个游戏世界的底层架构,然后发现了一些难以理解的事情,但话又说回来,底层架构可能才是人家那个世界的规律,而我们这个游戏世界的规律.只是通过编程给编好的,就好像我们人类制作的游戏一样,表面上看很合理,但其实画面和程序的逻辑往往是相反的.我经常想,同样是光,为什么人类只能看清自己身边的东西.我认为这个东西,更像是为了节省资源,节省人脑的算力.如果人眼能看清外星系上的所有东西,那人类就可以通过视觉系统看到太多东西,但这样,会影响整个主服务器,还有你个体服务器的负载尚若人人都能超频,那么这个主服务器早晚都会崩.
以上是关于从程序员角度看“上帝“玩游戏的主要内容,如果未能解决你的问题,请参考以下文章