MoleServer游戏服务器框架使用教程(二)

MoleServer游戏服务器框架使用教程(二)

 

在这篇文章中我们简单来聊一聊MoleServer游戏服务器框架的架构,我们一开始就将MoleServer定位于一个开发小型h5游戏的游戏框架,我们希望框架能使我们在开发这类游戏时能够更快,更好,更稳定的完成工作。

因此,基于这种理念,我们系统这种框架能够开发简单,部署简单,当然结构也功能简单。MoleServer一个功能可以分为5个部分:

 

1.molenet网络库

这是一个动态库,主要在epoll基础之上封装了websocket协议,另外,我们在这里也处理了比如线程池,数据库连接池,消息队列等等基础的东西。我们后面整个框架都是基于这套网络库基础之上构建而成。

 

2.account_server 账号服务器

账号服务器,顾名思义,主要作用就是验证玩家登录信息,修改玩家信息等等与玩家个人账号信息有关的东西。功能方面比较简单.

 

3.game_server 游戏服务器

游戏服务器就是我们整个框架最重要的部分,用于支撑玩家在线游戏。

 

4.CMS 网站后台管理系统

整个系统基于thinkphp5构建而成,是整个框架的中心,一般情况下,我们需要一台中心服务器来管理所有的其它服务器。但基于简单方便使用的原则,我们将整个系统管理和监控的功能全部集中于网站后台管理系统来处理,这也是websocket的方便之处。在后台你就可以直连服务器进行服务器的监控和管理。

 

5. game_logic 游戏逻辑部分

一个游戏一个动态连接库,游戏逻辑部分实现了我们游戏时需要的相关接口,例如如下接口:

/// 用于处理用户开始游戏开始消息

virtual void OnProcessPlayerGameStartMes();

/// 用于处理用户进入游戏房间后的消息

virtual void OnProcessPlayerRoomMes(int playerId,Json::Value &mes);

/// 处理用户进入房间消息

virtual void OnProcessEnterRoomMsg(int playerId);

/// 处理用户离开房间消息

virtual void OnProcessLeaveRoomMsg(int playerId);

/// 处理用户断线重连消息

virtual void OnProcessReEnterRoomMes(int playerId);

/// 处理用户断线消息

virtual void OnProcessOfflineRoomMes(int playerId);

/// 处理用户定时器消息

virtual void OnProcessTimerMsg(int timerId,int curTimer);

 

这里处理了一个游戏各种情况下的接口,你只需要在相应的情况下处理相应的游戏逻辑就可以了。

我们接下来演示一下添加一个游戏的整个流程是怎么样的,这里我们将拿我们框架提供的例子作为演示。

首先,我们进入moleserver/games/example目录下,这里有下面一些文件:

 

cserverlogicframe.h - 处理框架的一些接口

crobotlogicframe.h - 处理机器人的一些接口

cdefines.h - 游戏中消息的定义

GameLogic.h – 游戏的逻辑处理

 

我们这里都写好,只需要执行一下make,就会在bin/games/目录下生成一个libgame_ddz.so动态库。

然后我们打开网站后台,选择游戏选项,添加一个游戏,结果如下:

MoleServer游戏服务器框架使用教程(二)

 

接下来,我们点击“游戏服务器”-》“账号服务器管理”-》“服务器列表”,添加一个账号服务器,这里可以添加多个账号服务器,账号服务器的启动方式为: ./account_server 1,后面就是跟你添加的账号服务器的ID号。添加多少个就可以启动多少个。

MoleServer游戏服务器框架使用教程(二)

 

最好,我们就是添加游戏服务器了,点击“游戏服务器”-》“游戏服务器管理”-》“服务器列表”,添加一个游戏服务器,当然这里也可以添加多台游戏服务器,游戏服务器的启动方式:./game_server 1,后面就是跟你添加的游戏服务器的ID。

 

按照第一篇教程讲的启动顺序,先启动账号服务器,再启动游戏服务器。

把这些服务器服务器启动之后,用游戏客户端连接任一一台账号服务器进行账号验证,如果账号验证通过,就获取到所有在线的游戏服务器信息,将这些游戏服务器显示在游戏界面中,玩家再点击相应的游戏服务器进入相应的游戏就可以进行游戏了。

 

 

从以上的叙述中可以看出,我们的框架结构非常的简单,但扩展性很好,只是这里可能当人数比较多的时候,对数据库的压力比较大。

这时你可以使用redis,memcashed等缓存来解决数据库的压力。

 

到这里,我们整个框架的结构基本上就介绍完了,我们整个框架的结构非常简单,安装也很简单,当然使用也很简单,但功能缺不是那么简单,需要你慢慢自己去发现。

 

在下一篇文章中,我们将详细讲讲游戏的开发。

 

 

欢迎加入QQ群交流:131296225

email:[email protected]