游戏地图全部放在服务器端里,并允许随时调取这么大的地图数据提供给玩家,也不现实,数据传输速率没那么大,如果提前放进服务器内存,内存也不可能有那么大。
所以这方面采用的是沸腾互联、华为、华国电信、中科院计算机所、央行联合开发的一整套服务器区块链技术,如分布式数据存储、点对点传输、共识机制、加密算法等等。
不要以为数字货币、区块链技术是很多年以后才搞出来的,其实早就有了,最早应用于银行系统,只是叫法不同而已。
当然,这方面的技术,今世由于方杰乱入,沸腾互联参与其中,肯定比同期更加成熟先进。
另外在游戏地图数据调取的算法方面,还采用了「伪随机函数」和「函数扰动」相结合的技术。
要知道计算机进行的是确定性运算,不存在真正的随机性,这意味着想要求计算机「独立」生成真正的随机数,在理论上不可能。
许多编程应用中想要随机效果,使用的都是「伪随机函数」,就是用某种非常复杂的算法,来生成一系列看似毫无关联却又均匀分布的数字。
比如方舟世界里每一块1平方公里的地图,都对应着这么一个随机数,当玩家进入方舟世界选择出生地的时候,如果选择随机,调取的就是这个地图随机数,会随机出生在原始地球上的某块地图上。
但方舟世界里的生态环境是在不断变迁的,比如植物生长、人为造成的破坏,都将会对这个世界带来变化,而且这个变化还是不断继承下去的,如果让服务器把上亿块地图挨个计算演化,那数据量肯定很大,速度肯定非常缓慢,不可能瞬时完成。
所以在「伪随机函数」中又加入了「函数扰动」,其中能产生影响的最大的两个函数变量,就是自然时间流逝和人类活动,当玩家们进入某块地图时,系统就会调取这两项主要函数,计算这块地图在变量发生后的随机变化。
这么说可能有些不好理解。
简单点说,其实可以把每块地图看作是一个个独立的副本,这些副本原本不会产生数据,但玩家一旦进入这个副本,系统就会在副本里根据「函数扰动」随机生成相应的物种、资源等生态,而无数个这样的副本就组成了相对不变的世界地图。
这样一来,整个世界地图总体是没有变化的,服务器不需要进行大量的数据计算,即便玩家进入了某一个副本,那也只是那个副本发生了变化,服务器只需要单独计算那个副本的数据就行。
这样服务器压力就大大减轻了,哪怕进来几百万玩家,服务器也只是计算那几百万个独立的副本,甚至只用计算几十万个副本地图,因为很多玩家会扎堆生活在一张地图里。
而且这种计算,一次可以用好
请收藏:https://m.dp90.cc
(温馨提示:请关闭畅读或阅读模式,否则内容无法正常显示)