基于ACE设计一个c++网络游戏服务器框架引擎

本文介绍了作者开发的名为Gabriel的网络游戏服务器引擎,该引擎基于ACE库构建,旨在提供一个网络通信模型。文章详细阐述了服务器的结构,包括supercenter、center、login、record、game和gateway等服务器的功能划分,以及服务器之间的连接通道抽象为Connection类。 Gabiel引擎的核心设计是通过一个基类Server.hpp来减少代码重复,提供了连接管理和消息处理接口。作者鼓励有兴趣的开发者参与讨论和开发。
摘要由CSDN通过智能技术生成

          利用闲暇时间,我正在开发一个网络游戏服务器引擎,取名叫gabriel, 代表圣经里的一个天使,中文名叫加百列。加百列在圣经中是一个大天使长,他负责将上 帝的话语带到世间,并晓谕诸位先知,帮助世人明白上帝的旨意。之所以取这个名字,一方面是向大家推荐《圣经》这本宝书(也算是传福音吧),另一方面也希望这个框架引擎能够起到抛砖引玉的作用,引起同行或是打算从事游戏服务器端开发的朋友的共同探讨,以求共同进步。

        在c++网络库里面,ACE框架库算是历史悠久且知名度最高的了,ACE不单是提供网络功能,它实际上是一揽子解决方案,包括内存管理、定时器、并发机制、日志系统等。我也比较认同ACE的理念,将低级api函数用c++类来封装,隔离复杂且易出错的api调用链,并抽象出网络通信常见模型。虽然gabriel引擎还未完全实现,基本结构已初步确定下来了,代码寄放在github上,网址是 https://github.com/lichuan/gabriel

       说实话,我一直觉得makefile的语法太丑了,所以本项目未采用makefile的方式构建,而是用python写成的scons来构建。关于scons的使用说明请参阅官方网站,项目目录说明如下:

       doc目录存放的是文档(暂时只有一个我总结的c++编码规范),protocol目录存放的是通信协议,基于protobuf,引擎源码则存放于src目录。一个有6种服务器,分别是supercenter, center, login, record, game, gateway,各个服务器功能分配如下:

       supercenter服务器是超级中心服务器,管理每一个区的center服务器。

       center服务器是一个区的中心服务器,负责管理区内的其他服务器。

       login服务器是登陆服务器,用于玩家登陆验证等功能。

       record服务器是档案服务器,用于存储游戏中的数据以及玩家的信息。

       game服务器是游戏主逻辑服务器,负责实现游戏里的各种玩法,各种活动。

       gateway服务器是网关服务器,玩家直接连接到此服务器,相当于在游戏主逻辑服务器和玩家之间隔离出一道安全防护栏。

       “简洁就是美”,这是我非常赞同的一句话。如果我们编写的代码能让别人轻松愉悦的理解的话,那么这样的代码就是美的代码。让我们思考一下,以上列出的服务器类型一共有6种,如果每一个服务器都隔离单独编写的话,那势必造成代码的重复冗余,因此很有必要将它们的共性抽取出来,形成一个单独的基类,在src目录下有一个base目录,里面用server.hpp,这是所有服务器的基类,类定义如下:

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *      _____       ___   _____   _____    _   _____   _               *
 *     /  ___|     /   | |  _  \ |  _  \  | | | ____| | |              *
 *     | |        / /| | | |_| | | |_| |  | | | |__   | |              *
 *     | |  _    / / | | |  _  { |  _  /  | | |  __|  | |              *
 *     | |_| |  / /  | | | |_| | | | \ \  | | | |___  | |___           *
 *     \_____/ /_/   |_| |_____/ 
ACE网络框架-文档资料.rar】压缩包中含有如下内容: ================================================== 【ACE源码】目录: ACE+TAO+CIAO-6.0.0.tar.bz2 --------------------------------------------------------------------- 【ACE自适配通信环境中文技术文档】目录: ACE自适配通信环境(代序).pdf ACE自适配通信环境中文技术文档 [2002年12月版].chm 上篇:ACE技术论文集.pdf 中篇:ACE程序员教程.pdf 下篇:ACE应用实例.pdf --------------------------------------------------------------------- 【C++网络编程全集】目录: C++ Network Programming, Volume 1:Mastering Complexity with ACE and Patterns.chm C++ Network Programming, Volume 1:Mastering Complexity with ACE and Patterns.pdf C++ Network Programming, Volume 2:Systematic Reuse with ACE and Frameworks.chm C++NP_v1-P193.ppt C++NP_v2-P298.ppt C++NP_v2-P383.ppt C++网络编程 卷1:运用ACE和模式消除复杂性-P328.pdf C++网络编程 卷2:基于ACE框架的系统化复用-P374.pdf --------------------------------------------------------------------- 【其它资料】目录: ACE-tutorial [英文版]-P306.pdf ACE-类继承关系.pdf ACE详细介绍-译文.pdf C++网络编程学习笔记(ACE).docx --------------------------------------------------------------------- ACE技术内幕:深入解析ACE架构设计与实现原理 [机械工业.2012年出版.带书签]-P333.pdf --------------------------------------------------------------------- ACE程序员指南:网络与系统编程的实用设计模式 [中国电力.2005年出版.带书签]-P374.pdf ================================================= 附送视频学习资料:[看雪论坛独家免费共享]の轩辕IT培训 Linux C++ 远程全科班 Boost ACE[无KEY 完整版] 该视频是很好的网络框架学习资源,关于ACE框架的视频在Module6中,还有Boost相关的讲解。 下载地址:https://pan.baidu.com/s/1kTDYnjD 【注:可能会失效,赶紧存入网盘】
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值