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

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,后台管理工具(admintools)  所有服务器启停的控制,定时任务下发,服务器的代码版本更新,维护,定时维护,合服,渠道管理,平台管理,服务器的日志查看,精分数据曲线图表,发送全服邮件或者公告,活动的配置。等等

5,配置文件编辑工具  一个单独的配置文件生成和导出工具,用于接收策划配置的excel配置表,然后转换成内部格式 导出相关的c++、python、c#、lua版本的数据结构,和二进制的配置文件数据。

6,协议生成工具  用于将协议的源文件导出成程序可识别的数据结构支持c++、python、c#、lua (类似protobuf导出pb的功能)。

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

所有服务器之间,服务器和客户端之间,全部采用tcp长连接,自定义协议,协议用python描述

关于更多的协议编写规范请看

windows上的编译:

1,安装python3.7.0 64位版本

2,使用pip 安装pyqt5、rsa、psutil、requests、pymongo

3,从svn将代码下载代码(地址在上面)

4,修改 trunk\3rdparty\fastnet\builds\proj.win64\fastnet.props   中的  c:/python/python37/  将其中的c:/python/python37/换成你自己的安装路径

然后就可以通过vs2015打开solution.sln进行编译了。注意vs2015 需要安装 update2.

未完待续。。。

希望与广大网友互动??

点此进行留言吧!

python和cc++哪个适合做游戏_分享一个C++与Python开发的中小型通用游戏服务端框架(跨平台,开源,适合MMORPG游戏)...相关推荐

  1. php微信_分享一个完整的微信开发php代码

    这篇文章主要为大家分享一个完整的微信开发php代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了微信开发php代码,供大家参考,具体内容如下 //封装成一个微信接口类 cla ...

  2. python爬取公众号阅读量_分享一个牛逼的Python项目:公众号文章爬虫

    我订阅了近 100 个公众号,有时候想再找之前读过的文章,发现搜索起来特别困难,如果忘了收藏,估计得找半小时,更让人无语的是,文章已经发布者删除,或者文章因违规被删除.那么有没有这样的爬虫,可以将公众 ...

  3. 代写python期末作业价格_代做program留学生作业、代写Python语言作业、代做algorithm课程作业、代写Python程序设计作业...

    代做program留学生作业.代写Python语言作业.代做algorithm课程作业.代写Python程序设计作业 日期:2020-01-09 10:13 Coursework Brief: ASS ...

  4. Go游戏服务端框架从零搭建(一)— 架构设计

    本教程以Go语言分区游戏服务端框架搭建为例. Go语言是Google开发的一种静态强类型.编译型.并发型.具有垃圾回收功能的编程语言.语法上近似C语言,支持接口.可通过struct包含另一个struc ...

  5. 游戏服务端框架之本服实时排行榜

    目录 设计背景 知识储备 数据结构封装 排行榜设计 设计背景 在游戏服务端框架之使用Redis实现跨服排行榜这篇文章里,讲述了如何使用Redis设计一个全服排行榜工具. 本文主要介绍如何实现一个本服的 ...

  6. python游戏编程网课_Python 学习最佳方式_创建游戏_编程一个机器人

    Python 是世界上功能最多且最强大的编程语言之一.使用 Python,你可以编写自己的应用程序,创建游戏.设计算法.甚至编程一个机器人.学习 Python 还可以担任软件工程师.Web 开发人员. ...

  7. golang适合做什么_这年头中年女人适合做什么兼职

    这年头中年女人适合做什么兼职 m6ergd 这年头中年女人适合做什么兼职 大家都友非常多,已经好几亿了,玩需要别人点赞,把视频刷上去,这样才有更好的访问量,然后就催生了点赞这样的平台.众所周知,戒烟的 ...

  8. golang适合做什么_什么八字适合做销售 适合做销售的八字特征

    生辰八字算事业事业财富 怎样知道自己适不适合做销售?什么八字适合做销售?因为各式各样的寻求存在,所以世界上的岗位种类有很多工作性质类别不同,薪水待遇自然不同.在众多工作岗位中,销售算是一个容易高新的岗 ...

  9. python如何编游戏_手把手教你用python写游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,项目来自 ...

最新文章

  1. 使用文本挖掘实现站点个性化推荐
  2. 性能建议(这里只针对单机版redis持久化做性能建议)
  3. 《四世同堂》金句摘抄(十四)
  4. (王道408考研操作系统)第二章进程管理-第四节1:死锁相关概念
  5. 网络硬盘录像机和数字硬盘录像机区别(nvr dvr ipc区别)
  6. FF“流产”后 许家印开始了自己的造车之路
  7. 课时4:改进我们的小游戏
  8. java判断jd安装,java - 安装和使用 java 反编译应用: jd-compiler ,以及命令行的使用...
  9. ATX电源接口, 服务器插拔电源接口
  10. 电压转电流模块电路设计原理解析
  11. JQuery属性选择器
  12. ou邮箱用qq邮箱服务器地址,QQ邮箱怎么设置
  13. 08 获取器 withAttr、多连缀、whereRaw、事务、数据集《ThinkPHP6 入门到电商实战》
  14. 多线程—如何下载网图
  15. 智力题------小白鼠试毒问题
  16. Material Design icons图标的使用,npm下载及react+typescript引用方式import
  17. 【EMC】EMC整改方法
  18. 北斗时钟服务器(NTP服务器)让高考时间更加精准
  19. java 函数内定义函数_java可以在main中定义函数吗?
  20. 云计算?雾计算?雾里看花——IIoT

热门文章

  1. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(2)之创建项目
  2. JFreeChart在Struts2中实现3D柱状图统计
  3. 买手机i9020(nexus s)
  4. dfs算法详解(n皇问题实现)
  5. Oracle使用imp和impdp导入数据
  6. ACM-ICPC 2015 东亚洲大陆子赛区(Asia EastContinent Sub-region,包括中国大陆赛区)特别规则
  7. 【Web前端】HTMLCSS一文详解
  8. 无线调试服务器,从无线局域网控制器(WLC)的收集的调试
  9. html 右上角图标r,html Rmarkdown中上图的标题
  10. java 吃鸡辅助,给你的Java程序拍个片子吧:jstack下令剖析_彩虹六号辅助,pubg辅助...