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


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


《无人深空》是怎样生成一个宇宙的呢?下面带来“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以及运算这样一个复杂的函数的能力表示质疑,一是怀疑内存不够,二是担心计算能力不足 。

推荐阅读