单一世界架构初探(20)终端分布
在单一世界中,分布了众多的终端,如果没有利用终端计算能力,实在是浪费巨大的资源。有些人在探讨P2P模式,但我认为P2P仍然不是最好的利用方式。我们在前面曾经探讨过,在单一世界中,网络延时以及玩家众多是很致命的影响因素,如果P2P的话,是很难保证客户端之间的传输速度的,那么在高实时的游戏中,玩家体验就比较差了。
一般说来,C和S之间的传输数据是不对等的,C传输的数据量要远少于S,不过S的计算能力要大于C。我们在保证C向S发出的紧急数据情况下,完全可以压榨C的计算能力,让他完成更多的计算的。
我们在可预测性、计算迁移两篇文章,以及网络延时的综合考虑,我认为,可以将预测性的计算迁移到客户端,然后将结果传输回服务端,这有什么好处呢?首先,如果一个预测性的计算是在1秒之后发生,那么这个计算结果将被1秒之后用到,将这个计算结果发回服务端,算上网络延时和计算时间,完全是可以的。
一般来说,客户端都是击键动作,数据量很少,而实时性很高。我们将C到S的数据进行分类,那么利用计算迁移得到的结果完全可以将优先级别调低。我们在上一篇讨论了可预测性,除了解决网络延时的问题,还为终端分布的探讨埋下伏笔。
网络上有些人探讨P2P在网游中的应用,我感觉有个致命的弱点无法解决,就是大量客户端在同一区域中的网游,网络延时和大量客户端需要多播数据是P2P无法胜任的。而将大量客户端关联到中央集群却不是这样,他的网络延时可以控制在很低范围内,而且中央集群的强大计算力,能够完整将所有的客户端整合在一起。终端主要负责哪些对网络延时不是那么敏感的计算任务。
在计算迁移中,论证了那些计算与计算环境无关,那么就可以将这些计算分布到各个终端。由于每个终端分到的计算任务是无法被预测,因此安全性要求就要低得多。客户端即使要修改数据,也是不可预测的。
P2P之间的网络流量可以利用的,不过我们知道每个终端之间的带宽是有限,建立连接连接需要花费一定的时间,而且网络延时是不可预测的,管理难度也不小。因此,我认为与其将这些带宽浪费在不稳定的事情上,还不如全力利用这些带宽和服务器打交道。