- 30
- 0
- 约2.37万字
- 约 29页
- 2019-07-06 发布于湖北
- 举报
PAGE 28
MMORPG 游戏服务器开发之我见
wz 2/3/2014
过年在家无聊,写篇网游服务器开发相关的总结,打发下无聊时间吧,希望年后找一个游戏相关的开发职位,也算是提前准备一下吧。声明下:这里只谈MMORPG游戏的服务器开发技术,其他类型的游戏服务器开发未涉及。
游戏公司里的技术都是商业机密,网上相关的资料很少,所以本文大部分内容来自于猜想和脑补,肯定有很多不对或被人嗤之以鼻的地方,欢迎拍砖,拍转的时候请给个理由,这样我也可以自我提高一下O(∩_∩)O~。文中主要讲了如果以我现在的知识储备来开发一个MMORPG游戏,服务器架构应该是怎样为好,技术难点在哪里。当然架构无所谓好坏,更多的是适合与否,如果有更为实际的需求,会比空想更容易设计也更容易评估怎样做更好些。当然除了架构之外,剩下的就是如何去实现,将复杂逻辑翻译成代码,这些用到的都是一些通用的编程技术,所以在本文中就不多说了。
目录
TOC \o 1-3 \h \z \u 对游戏服务器开发的认识 2
MMORPG服务器架构 2
登陆服务器/Login server 4
排队系统/Queue Server 5
网关服务器/Gate Server 6
场景管理服务器/世界服务器/World server 8
逻辑/地图/场景/游戏服务器/Scene server 9
消息广播 10
AOI(Area Of Interest) 11
同步策略 13
自动寻路算法 16
NPC AI 17
数据库 18
网络框架 22
lua内嵌脚本 24
热更新 24
战斗系统和任务系统 25
性能优化 26
游戏测试 27
对游戏服务器开发的认识
网游服务器开发总体上来讲不过十几万到几十万行代码量,算不上是大工程,他跟其他C/S结构的软件工程也没有太大区别,解决问题的方式也是很相似的。虽然现在很多游戏号称同时在线几百万,但这几百万的在线人数是要被分配到几百个游戏服上,从单个服来讲也就几千或上万的并发用户数而已(EVE单服也不超过10万人同时在线),而且服与服之间是完全隔离的,所以算不上是大规模应用,跟淘宝、百度、QQ那样支持海量用户的应用没法比。
当然反过来说,像淘宝、百度那样的网站,用户之间是弱交互,有天然的伸缩性,容易做分布式部署,所以可以支持很高的并发,但网游的用户之间是强交互的,而且游戏内的场景也不是无限大,为了保证游戏较好的体验,同时在线人数不可能达到很高,想象下如果几万人聚集在一个场景里,也没有好玩可言吧。
总之,MMORPG服务器开发还是挺复杂的,起码逻辑还是挺复杂的,光从上百页的策划来看就说明了这一点,而且在这个外挂漫天飞的时代,服务器的地位越来越重要,很多逻辑操作或计算都放到服务器上来做,即便有些是要客户端来做的,服务器也要做double check。所以网游服务器开发应该还是很有技术挑战的。
MMORPG服务器架构
早期的网游服务器是架设到单机上的,现在为了提高服务器性能,支持更多在线人数、更流畅的用户体验和更炫酷的玩法,网游服务器根据场景或功能划分成多个服务器,采用合理的集群架构分布式部署。所以现在一个游戏服已经不再是一个物理服务器的概念,而是一组物理服务器的概念了。
现在我们就从大的方面谈谈MMORPG服务器应该怎样架构吧。架构的设计我们遵循KISS原则(Keep It Simple And Stupid),尽量做到简单高效。
当我们在面对复杂系统的设计时,总觉得脑子里一团浆糊,一会考虑考虑这一会考虑考虑那,总是理不清,原因是系统的复杂度超过了我们大脑的工作记忆容量,我们的大脑无法模拟和记忆每一个细节,所以我们需要:模块化+接口封装+逐步优化。将每个能够独立出来的功能模块化,然后定义模块的数据输入输出,封装成接口,将所有模块通过接口组装在一起便成了架构,最后再对每个模块的具体实现细节逐个优化。
引用下面的两段话,我觉得讲的很有道理,可以借鉴到软件系统设计开发上来:
在大刀阔斧进行创新实验的初期阶段,对每一步实验的设计当然要尽量仔细,但一旦按计划开始后对其中间步骤的实验结果不必追求完美,而是应该义无反顾地把实验一步步推到终点,看看可否得到大致与假设相符的总体结果。如果大体上相符,你才应该回过头去仔细地再改进每一步的实验设计。如果大体不符,而总体实
原创力文档

文档评论(0)