首页 攻略 单机攻略 查看内容

《无人深空》宇宙产生论述科普 是怎样生成一个宇宙的

  《无人深空》是怎样生成一个宇宙的呢?下面带来“Attack.On.Pika”分享的《无人深空》宇宙产生论述科普,一起来看吧。

 

  为了解释这个问题,我将用比较通俗的方法来为大家讲述“过程算法”。不一定是非常严谨的科学语言,但作为科普文,我希望能让更多的人看懂。因此专业人士请手下留情。

  现在,请先让我们回忆起那个神秘的无理数——π:3.141592654....

  我们把这个数字按位/格子写在一条很长很长的纸带上。

  为了便于理解,请先想象/认为宇宙是"一维"的,各个星球是排列在一条线上的。数学知识告诉我们这个无理数是无穷的,如果我们为这个数字加上几条规则:

  1.遇到1时,代表这是个恒星。

  2.遇到2时,代表这是个行星。

  3...............以此类推

  那么此时,我就产生了一个“一维”的宇宙。而且由于π的各个位的数字并不是按规律排列的,因此你会感觉这个"宇宙"似乎是随机的。

  但我们都知道π是个定值,也就是说此时生成的这个宇宙并不是完全随机的。它就在那里,并不会因为你每次开启游戏都要实时模拟出一个真的宇宙。

  现实中,宇宙是个多维的。因此,我们现在可以为这条"纸带"多拉出几个方向(上下左右前后任意组合),并进行任意数字有规律叠加。同时也为它制定一系列复杂得多的规则,于是一个完全有几条"纸带"构成的看似随机的宇宙诞生了。而你的电脑里却不过是记录了一些简单的数据。

  专业点来说,开发者们通过一些复杂的"函数"创建了这个多维的数组("纸带集合")。这就是这个游戏宇宙的生产办法。(要知道计算机求π的计算式子是π=16arctg1/5-4arctg1/239 ,也是一个函数)

  总结一句:18,446,744,073,709,551,616个星球看似很多,但并不占什么数据量,只不过是一些可由计算获得的数据,通过一系列形成规则,构成了这个看似无限的游戏宇宙。正如你不需要完全记忆π一样,这么多星球的数据也并不要完全存在硬盘里,你只需要知道怎么计算它,并在需要的时候算出来就行。至于怎么算...往下看:

  ----------------

  或许你可能仍有疑问。但是别怕,请接着往下看。

  我看到有人质疑,我的硬盘放得下这么大的宇宙么?

  我要告诉你,可以的。实际上你的电脑里只存放了一个类似 Ta=a(1-sinθ)和x2+y2-a×x=a×sqrt(x2+y2)这样的式子(实际上会更复杂),你每次遇到的星球,不过是CPU为这个式子带入一个值,计算后获得的相关数据。比如0x135486754(代表了这是个靠近恒星的沙漠星球以及有小型植物等等等)。

  又有人会发问,我的CPU来得及计算这么大的数据么?

  我要告诉你可以的。具体的过程简单一两句话说不清,但是要知道,官方给出的最低配置是i3。

  还有人问,这么多的星球,怎么确保它会和其他的星球不一样,生物长相怎么模拟?

  同样的道理,开发者既然有办法写一个函数就一定有另外一个方法写另外一个函数。

  开发者预置了不少的贴图,并如上赋予了不少的规则。如

  1.遇到1代表这个生物高2m

  2.遇到2代表这个生物的嘴型是数据库里编号为0x75的那张贴图

  3..............

  实际方法会很复杂,但是实现原理大致如上。

  再一点,学过计算机的都会对计算机得到18,446,744,073,709,551,616以及运算这样一个复杂的函数的能力表示质疑,一是怀疑内存不够,二是担心计算能力不足。

  关于第一个问题:

  同样再次假设宇宙是一条"纸带",星球依次排列。假如在你的视野内,你可以看到5m长的纸带,那么你的内存也只需要保存着5m长的纸带,5m之外的纸带虽然依旧存在,但你并不需要记忆它们,因此实际上你并不需要记录那么多的星球。当你的飞船移动,你就把纸带移动,你可以看到后面的一部分纸带而把你身后那些已经看不见的纸带"遗忘"。

  这就是"过程生成".

  关于第二个问题:

  我们再举个例子,当你查英语字典的时候,如果你要查bull这个单词,你会先去查目录,然后从B开头的单词查起,而不会从A开头的单词查起。A/B之分实际上就是一种标签(tags)。

  同样的道理,每次你模拟这个宇宙,你并不需要从3.14159开始往下运算,只需要查明你当前的位置,通过预定在函数中的标签,只计算5m长的纸带就好了。因此看起来运算量很大,实际上并不复杂。这也就是为什么游戏敢于给出i3最低配置的原因

  ps:这部分暂时就这些,有什么没懂得或者想问的留言吧。

  刚刚有人问了,这样随机组合,到时候会不会重复度很大?

  我个人看的内部视频感觉其实还好,因为贴图是矢量图,且背后有一定量的复杂设定(变形、上色、纹理等等)作为依靠,实际演示的时候制作人告诉我刚刚那只恐龙和那条鱼用了一样的身体,我是完全没看出来的==。《孢子》游戏里也并不是有着无穷的生物组件,但通过相互间的组合创造,也弄出了数不清的奇特生物。所以我们有理由相信这个游戏里的生物的相似度也并不会太高。

  但你非要模拟出180000亿个完全不同的星球换我我都不信。毕竟158块,158块买个真实宇宙这种事...再等几百年看看吧.....

  对了小声说一句:说到实际效果,我感觉非常不错。对喜欢这个配色的玩家来说简直一颗赛艇。从出宇宙到入星球,每到一个地方都有一种期待感。——个人观点,选择性忽略.