离开盛大游戏已经有几个月了,毕业后这10年,一直奋斗在网络游戏的一线开发,负责过的几个产品成绩好坏参半,有的被腾讯代理的,也有打包出售的,也有的走一些小渠道赚了一笔快钱。这些年,我一直从事的游戏服务器开发,不管是底层的网络库编写,还是顶层的业务逻辑,都参与过,略有一些心得。打算花一些时间来整理下,就当是对自己的游戏生涯做个总结吧。
本来是打算一篇小结,但想着想着,感觉内容越来越多,我又很冲动的想它写成一个系列,希望不要太监掉。
开篇第一章节,如何选择适合自己的服务器架构。首先明确自己做的是什么规模的游戏,比如按照运行的终端,我们可以分为端游,页游,手游,当然也有多端互通的,这里如果是同一家公司运营的同一款游戏,我们通常认为复杂度的关系是: 端游>页游>手游。比如梦幻西游的端游框架,通常会比手游更复杂,因为它的模块会更多更全,手游上会做适当的裁剪与阉割。从另一个维度来划分,也就是游戏的类型是什么,是MMORPG,还是ARPG,还是MOBA等,这里可能最复杂的就是MMORPG了,因为它包含的模块非常多,而且他还会有大地图,对服务器的性能考验会更加严格。由于本人涉及到的主要是MMORPG和ARPG,以及房间对战类,我会针对这两几类型的游戏做重点的讲解。
首先来看一下这些类型游戏之间的差别和侧重点。
- MMORPG:多人同时在线,有能承载多人的大地图,C/S状态同步,服务器计算要求高,客户端能接受一定程度的延迟。
- ARPG:主要玩法是游戏的打击感和节奏,伤害计算由客户端完成,无需状态同步,但需要随机的防作弊校验。
- 房间对战类:低频互动,可以C/S状态同步,如卡牌类;高频互动,可以UDP的帧同步,如MOBA类,FPS类游戏。
以上从轮廓上描述了这几种类型的游戏,由于业务场景的不同会导致整体的游戏的架构略有不同,但是他们之间还是有很多的共同点的。相信做过游戏的朋友经常听说这样的几个名词,比如:网关服务器,游戏服务器,地图服务器,中心服务器,帐号服务器等等,这样类似的名词。是的,几乎所有的游戏服务器框架都或多或少出现这几个通用的模块,具体每个模块承载着什么样的功能,以及该如何设计,在接下来的几个章节,我会一一陈述。
这里我用processon画一下大家最熟悉的登录和游戏流程部分,当然内部的细节远不止这些:
最后想说下,我现在已经离开游戏这个行业了,当初做这个决定的时候也是挣扎了很久,人生就要不断的试错,不是吗?离开不代表分别,故有了做这个知识梳理的冲动,由于本人水平有限,难免有错误或是不严谨的地方,还请大家多多指教,另,如果有侵权的地方,请及时通知。下个小节见!