一般来说,现在网络游戏的服务器设计大致分为以下三大类:
1:单服务器结构
2:多服务器结构. (根据服务器负责功能不同,有按地图范围进行划分的服务器设计,有按功能划分的服务器设计)
3:分布式服务器结构.
一:单服务器结构
在比较起先的MMORPG游戏中,大部分使用的是单服务器结构,一台服务器容纳人数大约为1500-2000人左右,根据硬件不同和游戏需要涉及的AI,逻辑等复杂度不同会有少许出入.
但是这种方式慢慢被淘汰了,因为网络游戏用户对游戏的品质要求越来越高,用户群也越来越大,开发者们不得不牺牲这种开发效率快,逻辑简单,但容载量小的单服务器结构.
二:多服务器结构
为了提高同服在线人数,多服务器结构慢慢流行起来,现在大部分游戏服务器结构也是基于该类结构设计的.
根据策划需求不同,多服务器结构可以设计为多种,一般来说,比较主流的功能分布方式有以下两中: 按地图划分服务器,按功能划分服务器.
按地图划分服务器,结构清晰,实现难度小,效率也相对比较高.但是会有部分资源的浪费(因为玩家不可能平均分布在每个地图上),另外一旦总控服务器(负责地图服务器间的分配管理的服务器)挂掉的话,会导致所有的地图服务器无法正常工作,而且由于每个地图保存一份数据,数据保存方面是相对独立的,所以数据安全性无法保障,一旦某地图服务器挂掉,则很大可能会遗失数据.
按地图划分服务器的话,一般服务器是分为以下三部分,世界服务器,地图服务器,网关服务器.
世界服务器负责世界地图的管理,它一般负责管理地图服务器的工作分配,数据转移通知功能,一些全局性的功能它也负责,包括读取发布网络游戏配置信息,全地图聊天公告的发布等.
地图服务器各自间是完全独立的,各自负责该地图区域内的一切功能,包括怪物AI,该地图的NPC,怪物,玩家,物品等所有信息,而且各自拥有独立的数据库进行记录.当一个玩家从一个地图切换到另一个地图时,地图数据库将通知世界数据库,世界数据库再通知另一个地图服务器,进行这俩地图服务器之间的用户数据传输.
网关数据库通常是负责玩家登陆的功能,同时也兼责一些世界服务器的调配功能.
//-----------------------------------------
按功能划分服务器的话,则是一种面象服务的设计思想,将游戏逻辑中某些常用密集型的功能分离开来,单独做为一个服务器进行控制操作,例如,怪物AI单独由一个服务器负责,物品管理单独由一个服务器负责等等,按照逻辑职能进行服务器分割.
这样做的好处是,当一个服务器出现问题的时候,是不会影响其他模块的运行,而且扩充性相对比较优秀简便.
但是一旦重要的服务器挂掉,如物品服务器挂掉,依旧是一个很灾难性的结果.不过,由于划分出了单独的服务器,保证了数据的分布式存放,比起场景划分服务器来说,多少还是安全了许多.另外,功能划分服务器还有一个比较大的问题就是,由于各模块之间有直接或间接联系,在服务器进行调试的时候难度会比较大.
三:分布式结构.
无特殊研究,待补充.仅知道支持远程对象调用,动态分布节点吞吐数据确保了服务器受压平衡,能够支持关键数据的多节点冗余确保了数据安全性.
服务器的设计考虑应从几个方面进行:
1:各服务器的吞吐数据平衡性
2:C-S-C的消息响应时间
3:数据的安全可靠性
4:开发测试效率,维护效率