最近一直再找关于UE5 DS服务器架构方面的文章,找来找去发现真没有!!如果,按官方文章那点案例来做,那真是不知道有多少坑要踩。
首先, DS服务器,是一个损耗很大的服务器。里面各种内存上的消耗,CPU占用,都是一个很大的问题。按官方文档来说,只有个开头案例,就说了怎么用,编译一下,却没告诉你怎么优化,文章也是少的可怜。不过,有源码,有能力的可以去看看。里面实现了各种各样的细节,你甚至可以用ta做任何事情。 但是,损耗的事,就看你自己了。是否能财大气粗的承受住这么大的损耗。
正是因为ta里面实现了各种各样的细节,才造成如此大的内存占用。怎样的取舍,那就是看你的事情了。当然, 市场上,也有很多使用UE的, 但,大多数都是客户端,毕竟UE也发展了这么年,在各个领域里有了一定的立足之地,取得不小的成就。 所以,能正儿八经的挑战DS服务器的,在国内目前还真没几个。单纯的一步编译,就足以耗掉你百分之99的内存。配置稍微弱一点,一天就过去了。
所以,我为什么要选择DS服务器?这就比较久了,在吃鸡这款游戏刚火之时,DS服务器就占到了足够大的优势。当然,那个时候,还啥都不知道,只觉神奇,这么大的地图设计,这么多人的玩法。一张无缝的拼合地图,+100人的玩法。在大地图上追杀逃跑。里面涉及了各种进程之间的相互跨越,网络带宽,玩家预测,等等一系列的问题,都需要解决,在这里都被人家处理好了。与传统的服务器相比,那是根本就没办法实现的。而且,就目前国内的技术含量,没能拿出一款,称得上可以和吃鸡这类游戏类比的游戏。这是毋庸置疑的。这也算是国内环境恶劣的原因之一。都在想着怎么氪金648了。技术?技术那是外人考虑的事情。而游戏公司,要考虑的是怎么把你兜里的钱,骗到我兜里。等技术成熟了,我再直接迭代一下就行了。就目前的发表的文章来说,也确实如此。从来都是什么,我什么引擎用的真6,快捷键怎么设置,什么什么框架用的真熟,代码都能倒背如流。什么接口一看便知。上了什么插件真好使!!从没想过自己在做什么,做这些东西的目的是什么,都忙着跟x讯这样的老大哥学怎么敛钱去了。
闲扯的话,有点多了。 赶紧进入正式文章吧!以上内容可以直接跳过。
在我愁思苦想,翻遍各种文章之迹,打开了UE的官方,再看UE5Lumen的官方教程的时候,无意中看到了这篇文章。于是,点了进去。
文章叫做:
在UE的官方讲座里,B站就有,想学的可以看看。开篇讲到了他们为什么选择了虚幻,文章发表于22年,那个时候还是UE4,他们就选了使用DS服务器。这个给客户端带来了极大的利好性,强大编辑功能与渲染性能,是毋庸置疑的。这也是他们选择UE原因之一。
好的,继续往下看,全程大概50多分钟有点长,每一点都讲到了从开发到上线所遇到的种种问题,至关重要。这也是人家的宝贵经验。
这里提到了,他们从开发到上线维护遇到的各种技术挑战。展开之后又是,各种各样的问题需要解决。很少有这么具体的能把这一整套框架中所遇到的问题都讲出来的。下面开始一个个拆解吧!仔细听人家怎么解决这些问题。
首先,定位就是MMOARPG(大型多人在线动作角色扮演游戏),这个定性就确定了不是一款简单的mmo类型游戏。多了一个A,表示了人物会有复杂的动作技能需要处理。MMO与ARPG可以分解解读,MMO就表示会有各种繁杂的业务功能需要实现,如下图。这算是一套非常传统的老一套MMORPG(大型多人在线角色扮演游戏)类型框架应该有的功能。既然,都老一套了,我们完全可以捡现成的。难度不会很大。难度在于我们应该如何使用DS服务器与这些功能相互契合住。
所以,这里人家给出的建议是,他们把场景与战斗单独拎出来,用DS服务器实现,剩下的还是按传统方式来实现,搞一个全局服与Logic服,把上图中左下的这些功能来实现,然后,他们之间再实现互联,相互沟通。并不是DS不能做这些事情,是有点不符合,你可以用ta做你服务器的任何业务逻辑,只要你能担得起这个损耗就行。所以,他们最后的结构图就变成下面这样的一个结构。
他们之间都是长连接的。这就是《晶核》确定的最后架构了。思路是这样,场景服只负责战斗,移动,放技能这些,一但,获取到了某件装备或穿上了某件装备,就会通知Logic服处理后面的逻辑。这样就把这些业务实现了剥离分开出来,DS专门用来做战斗这样的事情。所以 这就是解决处理这些业务逻辑,提出的解决方案。
继续拆解下面的ARPG,算是重中之重了。做出来能否符合期望,直接影响到了这款游戏是否能长远走下去。在我看来是这样的,从他们单独拿场景服出来用DS实现,我想这里的想法大致是一样的, 做出来是否能保证流畅,打斗的质感等等,都是需要考虑的问题。当然,这也不是一个人就干的事情的。需要团队的综合考量,毕竟是字节旗下的公司,所以,不缺财力与物力,人才事儿,自然是有钱就有。
这里我们看到他们游戏拆分了八个职业,每个职业有二十多个技能。二十多个技能大概是带一定的等级系统,升够一定的等级,解锁对应的技能,大概如此。每个角色的技能都带位移,跳动这些动作。说实话, 这游戏我没玩。不过他们在下面放了一段打斗的视频。这动画,说实话,玩过的一眼就看出了抄自了哪里。不过这并不怪技术,技术只是负责了实现。实现的需求,从来都是策划提出来的。策划准备抄那个,技术就实现那个。国内游戏大致就是如此。
不过,他们竟然公然放出了抄的那款游戏,现在还在UE的专栏放着。窝糙! 公然裸奔! 没想到《晶核》是如此的坦荡。 我想说, 这策划你是玩了几代《鬼泣》了,竟然,公开的抄人家。版权费是否付一下。
《鬼泣》这款游戏,有操作,有难度,需要打连招,有大场景破坏。前前后后出了三四代。来自小鬼子的公司。不过ta是款单机,可以保存游戏通过副本。到了,国内这里,变成了一帮二刺螈!拿着刀枪武器,在里面霍霍挥砍!!属实TND 航空母舰变成了小帆船。差点把劳资笑死。 八成是一帮肥宅搞得。
言归正传,他们要实现联网的ARPG,这么一套复杂的动作系统要放在服务器实现。这里遇到的第一个问题,就是预测的问题,DS服务器不错是帮你解决了帧同步。但,ta的预测结果并不是你想要的。他们的第一个方案,最初改,改完之后发现还是不行,最后只能重构了移动模块。才保证技能的流程性,UE是开源的所以,你可以干这个事儿。只要你有能力!这个模块也不是什么神迹,早就有的东西。
讲到这里 业务实现方面的主要问题就解决完了。
下面就是,他们主要讲的系统承载的问题了。这个问题,做为服务器都要考虑的事情。每款网游上线之前都要进行不断的压测,测试服务器带宽能力,玩家承载数量,内存不足等问题。当然,还可以及时的找出各种内存溢出的BUG。继续看他们怎么解决吧!
这里,他们第一个的首要问题,就是资源耗费太大,一个进程就只能放一张地图,其实是一张吗?并不是,如果开启了无缝,那里面还有一张过度地图。过渡地图不会太大,但,必须要有。因为要无缝,所以必须要有。有人想知道无缝的具体的细节 的可以看看ta 的具体文档。
资源开销大的意思是,不管从内存啊,cpu占用上,网络带宽上,占用都非常大。只要人一多就直接卡爆。你可以在一个场景里塞一万人,但, 这是不现实的。你的网络消息就是10000x10000特别是你的游戏是网游3D模型这类,干脆就啥也别干了。所以就急需一定的策略来解决这些事情。
进程数量多的意思是什么?这里他们上了他们经典的财大气粗解决战略。这一线就是一个进程,一个进程就是只放100人。为了玩家的流畅感,真是太好了!!八九十可能就拥挤了,100就爆满了不让进了。
有点多了 写不完了。。。先发吧!