分享一个C++与Python开发的中小型通用游戏服务端框架(跨平台,开源,适合MMORPG游戏)

Posted winter-yu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享一个C++与Python开发的中小型通用游戏服务端框架(跨平台,开源,适合MMORPG游戏)相关的知识,希望对你有一定的参考价值。

在开发一款游戏项目时,在立项时我们往往会考虑或者纠结很多,比如:

  1,对于开发来说:服务端和客户端应该选择什么语言?用什么协议通信才更效率?协议后期如何维护?Socket是用长连接还是短连接?TCP还是UDP?客户端资源、配置表、代码如何进行热更新?等等。

  2,对于策划来说:配置表使用什么比较方便?使用excel?又或者自行开发工具进行导出配置供程序使用?

  3,对于运维来说:服务端如何高度自动化将人力成本节省到最小?如何自动维护?自动合服?能不能做到维护完全不需要人工参与?在几十台?几百台服务器的前提下如何对服务器进行批量更新?能不能定时操作?服务器的日志查看麻烦吗?能不能通过后台工具直接查看?如果线上服务器代码出现问题,有没有手段可以直接hotpatch?

  4,对于运营来说:服务端活动能不能直接在后台工具里配?后台能不能查看一系列的精分数据?能不能直接查看服务器相关数据?能不能发邮件,发公告?对玩家封号禁言等等。

 

所以我今天开源的框架就是为了解决上面的所有问题,为了大家在开发一个项目时能够少走弯路,将精力全部放在开发游戏业务上面,而不用在上面这些事情耗费太多精力,提升项目的开发效率。

源代码SVN地址:  svn://47.107.60.212:18081

QQ交流群:162424313

这是我本人通过多年的工作经验积累下来的一个框架,目前只在一个线上项目运行过,可能会存在一些隐藏的bug,所以还希望大家多多包涵,有什么问题可以及时进群与我沟通,或者在下面留言。

由于没有太多时间写文档,我在下面对框架做一个简单的介绍,写的比较粗旷,有更多的疑问欢迎进群讨论。

 

框架涉及的语言以及依赖

  服务端

    1,C++11  核心的底层

    2,Python 3.6  跟C++高度集成,大部分的一些框架逻辑在Python层完成

  客户端(Unity)

    1,C#  网络通信及协议使用的C#(C#的协议不支持热更新)

    2,Lua(XLua)    协议部分除了支持C#之外也支持lua,使用的是腾讯开源项目XLua(XLua协议和代码支持热更新)

  引用的开源项目

    1,boost_1_65_1      C++库所依赖

    2,poco-1.7.9-all      C++库所依赖

    3,openssl-1.0.2o      SSL加密通信时所依赖

    2,mongo-cxx-driver-r3.2.0  mongodb C++版接口

    3,mongo-c-driver-1.9.5    mongodb C版接口

  

  Windows下编译需要使用VS2015 Update2

    

 

下面是精简版的架构图

技术分享图片

  

 

上图中除了管理服务器外所有服务器都支持水平扩展。

 

框架所包含的角色:

1,网关服务器(GateServer)  实现了一个类似Redis服务器中的订阅与发布功能,所有其他服务器都会与之连接

2,守护进程(Daemon)    每一个物理机器上面都会部署一个守护进程,然后由这个守护进程来管理所有其他业务逻辑的生命周期。

  举个例子,比如说现在在腾讯云买了100台物理服务器,你只需要做的就是在每一台服务器上面部署一个守护进程,然后把每个守护进程的端口和IP都记录下来,全部都录入到后台工具里面,

  从此以后你比如要在这100台物理服务器中运行更多的业务逻辑服务器时(跑一个进程就是一个区,一般好一点的机器一台可以跑10个以上的进程),比如我一台跑10个区,100台就是1000个区,这1000个区的维护全部可以通过后台管理工具进行批量化操作。

3,管理服务器(AdminServer)  一个集群里面唯一的单点服务器,负责接受后台工具的指令 以及相关运营 运维功能全部在这里。该服务器实际上不会接受用户的连接,只会接受内部管理工具的连接,所以实际上是没有任何压力的。

4,登录服务器(LoginServer)、逻辑服务器(LogicServer)、战斗服务器(FightServer)、聊天服务器(ChatServer)  所有的业务服务器由Daemon守护进程控制启停,以及所有的维护更新合服等等全部由Daemon自动操作完成,它们的部署不需要人工手动参与。

 

 

未完待续。。。

 

以上是关于分享一个C++与Python开发的中小型通用游戏服务端框架(跨平台,开源,适合MMORPG游戏)的主要内容,如果未能解决你的问题,请参考以下文章

复杂 | 生命游戏模型的Python和C++实现

游戏开发经验谈:对战类全球服游戏的设计与实现

原创使用JS封装的一个小型游戏引擎及源码分享

老九AI前奏C++数据结构与算法与游戏开发教程2018高清完整资源

使用 Python 和 Kivy 的小型纸牌游戏

C++调用Python浅析