网络游戏服务器开发框架浅谈

在游戏开发中一般不会将所有的服务放到一个服务器上,都会采取针对项目的各个部分分布在各自独立的服务器中。

例如手游服务框架:

image
image.gif

以上其实表达的是很是简陋的,所以最近看了一份比较详细的服务器架构文章,分享一下希望对大家有些用处。

总共将分为10个模块:

  • LoginGate服务器
  • LoginServer服务器
  • GameGate服务器
  • GameServer服务器
  • IMServer服务器
  • AIServer服务器
  • CenterServer服务器
  • BillingServer服务器
  • WebServices服务器
  • DBServer服务器
  • GMServer服务器

LoginGate:登陆网关服务器,将所有的LoginServer服务器地址暴露给最终用户,每个LoginGate服务可以挂接n个LoginServer,将最终用户的所有请求转发给目标LoginServer。当最终用户通过此服务完成登陆后,会与该服务断开连接,断开连接前,服务器会将数据上报给GameGate服务。

LoginServer:登陆服务器,仅作于内部服务与LoginGate进行连接,所有的最终用户请求由LoginGate过滤后,转发过来进行处理。与LoginGate的所有通信都是明文,即未加密数据。

GameGate:游戏网关服务器,与LoginGate协作完成最终用户的登陆过程,每一个服务会连接到唯一一个LoginGate服务上进行注册,LoginGate会将以完成验证登陆的用户信息同步到所有已注册成功的GameGate上,根据注册不同的GameGate类型信息,LoginGate会发生不同的通过认证的最终用户信息。GameGate挂接n个GameServer服务到自身,此服务将所有注册到自身的GameServer信息发送给最终用户,提供用户选择具体的区或线路进行游戏(区和线路在不同的游戏设定中有不同的定义),在这里区的定义对应的是GameGate,每一个GameGate可以表示物理或逻辑上的多个游戏分区,每个分区由至少一个GameServer组成;线路定义为GameServer,每一个GameServer代表一条线路,线路之间互相不可见,但是可以通过IMServer进行一些扩展通信,例如公会、好友、聊天等服务可以设置透明通信或隐藏通信。透明通信由IMServer向目标GameServer转发请求,并进行处理;隐藏通信仅在当前GameServer进行处理,不会做跨越性操作。

GameServer:游戏服务器,作为内部服务与GameGate协作处理最终用户的请求,这个服务主要处理游戏逻辑,例如战斗。此服务启动后,会根据配置文件的配置信息进行相应的服务注册,该服务启动成功后,会注册注册到GameGate和IMServer、AIServer服务器,它们分别提供最终用户游戏、交友、公会、聊天和智能体的移动、创建、销毁等服务。作为整个游戏的核心处理服务器,会处理掉大部分的用户交互服务请求,只有在不能处理的情况下,才会请求其它服务协同处理。

IMServer:IM通信服务器,全称InstantMessaging(译为即时通讯),ICQ、MSN、QQ等聊天工具都属于此范畴。此服务的作用是提供物理或逻辑不同位置的GameServer上的最终用户通讯的一个媒介,用户成功登陆GameServer时,会将自己的好友、公会信息注册到此服务上,当需要跨GameServer服务时,共IMServer使用。此服务主要提供聊天、交友、交易、公会等社交类行为服务,该服务可以直接或间接的与最终用户进行通信,但最终用户无法直接与该服务进行通信,比如请求操作,所有的用户操作都由GameServer转发,IMServer可以选择性的直接反馈最终用户或通过GameServer反馈。

AIServer:人工智能服务器,全称Artificial Intelligence(译为人工智能),例如现代服务性机器人(自动吸尘器、智能探测仪、智能防爆装置等)都属于人工智能范畴。这里的人工智能主要体现在游戏中的NPC、MONSTER等有行为表现物体。GameServer启动后会连接到此服务进行注册,并获取所需智能体的信息,以反馈给最终用户,并最终显示在用户应用程序中。该服务主要控制智能体的移动、攻击、创建、销毁等行为,另外包括在战斗中或非战斗状态下的行为,比如游走在街道上的商品小贩;在搜索到攻击目标时,主动或召集附近的战斗单位一起攻击用户,都属于该服务的工作内容。

CenterServer:中心服务器,用于监控、更新已注册到此服务的状态,比如电信1区(傲视天地)服务器的运行状态等。此服务主要是管理除自身以外的所有服务程序的运行状态,以及时反馈给技术活运维人员。

BillingServer:计费服务器,用于计算用户在游戏中的消耗、增值;比如XX在游戏中购买了一个双倍经验卡,消耗10金币,或者用户通过网站形式进行充值,都会通过该服务反馈给用户最终结果。

WebServices:网站服务,主要用于网站与游戏之间的交互。比如XX用户通过网站进行充值服务,充值成功后,通知计费服务以响应用户操作;或通过网站进行游戏激活、礼品领取等,都需要此服务与游戏应用程序进行交互,以体现实时的变化。

DBServer:用于全局数据维护,例如更新、查询、插入、删除操作;这些数据包含用户账号、充值、代金卷、点卡、月卡以及游戏中需要用到的角色数据。

  • GMServer服务器:用于用户管理,GM拥有踢人、禁言、封闭账号、解除封闭账号、查询和修改账号注册资料等权限

一般地,会把游戏服务器的架构划分如下三层:网络接入层、游戏逻辑层、数据存储层,这样划分的主要目的是:

将底层通信与业务逻辑处理解耦合;
将业务逻辑处理与数据存储解耦合;
有利于运营部署与扩展;
游戏服务器开发框架整体视图,如下所示:

image
image.gif

个人学习博客谢谢关注

你可能感兴趣的:(网络游戏服务器开发框架浅谈)