单一世界架构初探之角色视野

前端之家收集整理的这篇文章主要介绍了单一世界架构初探之角色视野前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

角色视野理论和世界粒度有密切的关系,主要为了解决客户端的计算量而单独提出来的。以前的例子曾经提到过国战的例子,都是从服务器角度来解析如何实现,却从来没有考虑客户端的情况,而角色视野就是从客户端角度来解决国战的例子。

我考察下,国战时,对客户端会有什么影响呢?首先,在角色视野将充斥大量的人和事物;其次,各种魔法和战斗将频繁发生;再次,和服务器的通讯量将激增;最后,本机计算量将飙升。很多质疑单一世界架构的可能性,就是认为,在现有架构下,无法解决这些问题。我们撇开不谈,先研究下,对于一个角色来说,参与国战的话,需要什么呢?

对于一个角色来说,他真正面对的,只是他视野内所有的东西,我举个荆棘谷的例子。我在荆棘谷的时候,曾经在部落营地发生过好几次战斗,在阿拉希高地也进攻过部落营地,幽暗城有一次,可惜刚入门口就死了,老是进不去,晕,没亡灵角色,不会走。格罗姆高营地的战斗有不少特点,首先,他的树多,视野不是很宽,还蛮多悬崖、废墟。但我们战斗的时候真正面向的只是眼前一个锥形视野,有时候,被部落从背后偷袭却没发现。当然,在你转身跳跃时,场景会急剧变化,成360度全景视野。

另外一个特点,我们真正看清楚的是周围大概30码球形范围内的东西,而超过30码外的,轮廓就很小了,可以看到他们正在和怪物战斗,但具体使用什么法术或者技能的细节却看不出来。比如术士使用死亡缠绕,怪物被恐惧到处跑,你可以看到怪跑动的过程,却看不到死亡缠绕发出的过程。而更远的山脉仅仅只能看到一个轮廓。这几个特点,和真实人类视野也是相似的。人真正看到的也是眼睛目力所及的一个锥形区域,越远的地方看到的也越小。

我们在世界粒度试图探讨,如何降低粒度来降低数据量,这个课题跟角色视野息息相关。假设有1千人在视野范围内进行战斗,你真正能够看到,看仔细的只会是很小距离内的一部分人,而其他人甚至头只要动下就能给你很好的视觉体验。

我们知道,角色视野是个球形区域,越远的视野将越小,粒度越粗。当粒度足够粗的时候,大可不必象细粒度那样计算。所以我在世界粒度篇曾经提过,如果降低粒度来换取计算量的减少。

还有另外方案,我们知道当视野超过一定距离时,粒度将相应降低,那么我们将角色限制在一个球形空间中,角色看到视野超过球形空间半径以外的东西,都是类似于视频那样的图象,而不是靠实时计算出来的。这种方案的基础是认为,网络传输给客户端的代价要远低于客户端的计算代价,这种方案有一定的理论基础。对视频来说,已经有足够的技术压缩一定范围内的视频图象,而角色看到的是粗粒度的图象实际上具有很大的压缩空间。对于近距离的角色变化,完成可以通过本地进行细粒度计算来完成。这样,可以降低了本地GPU的计算压力。

在国战模式下,在角色视野范围可能密布其他角色,由本地承担计算任务,以现在的GPU能力,控制在百人之内应该还是可以的。视野之外,由服务器计算完成,通过压缩到本地解开,合并成一个完整的角色视野。

原文链接:https://www.f2er.com/javaschema/287805.html

猜你在找的设计模式相关文章