游戏服务器学习笔记 3———— firefly 的代码结构,逻辑

注:以下所有代码都是拿暗黑来举例,由于本人能力有限很多地方还没有看透彻,所以建议大家只是参考。有不对的地方非常欢迎指正。

一、结构    

系统启动命令是,python statmaster.py,启动以后可以通过ps看到系统启动了以下几个进程:

1、master:管理模块,通过subprocess.Popen()来启动其它模块,该模块启动一个webserver,简单的通过监听本机9998端口,用get方法来获取用户管理命令,目前默认的是2条命令,stop和reload,负责其它模块的stop,reload功能。

只要在本机浏览器输入:http://localhost:9998/stop 或者http://localhost:9998/reload即可。

2、dbfront:数据库前端模块,负责管理DB和Memcache。比如load用户信息到memcache中,定期(系统写死了1800秒)刷新并同步memcache.

3、gate:这个其实是真正的center,其它模块(除了dbfront)都会和这个模块挂接(通过twisted.pb  后面会抽空详细说明)。

4、net:网络模块,负责监听客户端tcp/ip连接,转发相应的命令数据包给gate。

5、game1:暗黑世界的游戏模块,这个模块里面会处理几乎所有的游戏逻辑,存储所有的游戏数据:比如角色升级的经验等级,各种npc信息,各种掉落信息,各种战斗阵型。这些数据在系统启动前都是保存在mysql里面,game1模块负责load到自己的内存里面(注意,不是memcache里面,而是直接内存)

6、admin:系统管理员模块,其实这个模块对于游戏本身来说,可有可无,主要作用就是导出游戏统计数据,比如在线人数,每天充值数量等等。。。。无非就是简单的load数据库内容在简单做些计算而已,我们不做重点。

二、逻辑    

系统启动的过程是:(只看firefly,不管memcache,mysql等)

$ python startmaster.py

startmaster.py 这个python脚本会实例化class master;

按照顺序启动

一个pb.root

一个webserver

然后是subprocess.Popen(cmd) 来启动其它子模块。

cmd命令打印出来为:

python appmain.py dbfront config.json

python appmain.py gate config.json

python appmain.py net config.json

python appmain.py game1 config.json

python appmain.py admin config.json

全部启动起来以后,逻辑关系如下:

 

master虽然通过红线连接每个模块,但是实际上的工作只是启动和管理,并没有很大的数据交互。

Admin模块虽然挂在这里,但是其基本上只负责统计和“管理员”功能。

大的数据交流,网络服务,游戏逻辑等工作只发生在gate,net,game1 这几个节点。并且根据游戏内容不一样,完全可以进行扩展。(由于俺没有研究过,先不在这里讨论)。

OK,架构简介到这里,后面我们每个模块分开详细介绍。

原文地址:https://www.cnblogs.com/fuhaots2009/p/3508884.html