12 Star 21 Fork 13

zapline / ZeusMud

Create your Gitee Account
Explore and code with more than 8 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

酷到没朋友的 ZeusMud
休闲在线游戏,混合多种游戏模式,如养成,战网,卡牌/竞技,社区。该游戏会合理利用你的碎片时间带给你最大的愉悦和享受。

开发者QQ群:37723482

ZeusMud开发指南

概述


前段时间我们开了一个叫做Zeus的项目,伴随着美工猝死的节奏导致项目不得不终止。鉴于对原创游戏的执着和狂热,想出了ZeusMud这种利用GUI作为游戏客户端的形式,完美解决了没有美术的问题,上手难度相当低。服务端采用C++编写并可在Windows/Linux平台下运行,客户端使用了C#.NET/WPF混合Winform的方式编写,纯Windows UI.

目前服务端和客户端采用的开发工具均为Visual Studio 2012.由于时间关系,Linux的编译脚本尚未整理完成,因此先用VS2012进行编译,服务端可稳定在Windows平台下运行。

服务端开发说明


服务端框架

服务端网络通信框架目前已完成(截止当前版本时间)。通信底层使用了Boost.ASIO,保证了底层通信的稳定。尚未进行性能测试,框架仍在不断完善。经过了第二次封装的网络框架叫做venus_net,包括:

  • TCP通信
  • 日志(基于POCO)
  • 数据库(SQLITE)
  • 对象池
  • 字节数据处理类
  • 大小端处理
  • 常用数据模型(如Singleton, ObjectManager等)

目前是单进程多线程的架构,游戏逻辑服务的项目名称是center_server。用于处理游戏IO和游戏逻辑处理。与客户端的通信流程如下:

通信协议

通信协议使用了Google Protobuf,并在Protobuf前面包装了Header,包括了length和opcode,分别用于表示数据包的长度和操作码。Google Protobuf的协议描述文件存放在目录:ZuesMud/protocol 下,使用.proto作为后缀,使用autogen.bat生成(包括C++和C#两种语言)。

协议定制注意事项

  1. 协议文件名采用 协议号_协议名.proto 的方式进行命名。
  2. 命名空间使用 Protocol,于每个proto文件的最顶行proto语法为:

    package Protocol;

  3. 协议所有字段均使用下划线分割形式的命名风格。如:is_ok, last_login ..
  4. 由服务端发向客户端的协议使用 S2C (Server To Client) 开头,并使用Rsp (Response) 结尾。客户端使用 C2S (Client To Server)开头,使用Req (Request)结尾。
  5. 包含中文内容的字段使用bytes类型。
  6. 协议号严格参考 protocol/协议号划分.txt 内的说明进行设定。

开发习惯

  1. 游戏对象管理器继承Venus::Singleton,方便游戏逻辑处理。
  2. 使用debug_log("")输出调试日志,尽可能在每个重要的流程内打印有用日志。
  3. 多为指针判空(如访问到空指针则可能导致服务器崩溃)。
  4. 在 opcodes_handler.cpp 文件内为操作码和回调函数注册。
  5. 为频繁的游戏对象增加对象池,使用模板类Venus::ObjectPool<T>,ObjectPool类提供默认构造,如果作为对象池对象的类类型不含有默认构造函数,则继承ObjectPool类扩展acquire方法,参考文件 player_pool.h
  6. 如果要使用std::unordered_map,则直接使用common.h下定义的adap_map,该模板类为跨平台做了处理。

###关于使用不同版本的vs编译

使用visual studio 2013编译时,可能会告知min或max等算法没有定义,在报错文件最顶部包含(include) algorithm标准头文件即可。另外,会提示obj常量版本不匹配,请到google官方下载libprotobuf,并在编译环境中修改各工程配置为/MTd(c/c++->代码生成->运行库),并在解决方案资源管理器中生成libprotobuf,并将生成后的文件拷贝到3rdparty\protobuf_lib中覆盖libprotobuf.lib和libprotobuf_d.lib。这两个文件分别是以release模式和debug模式编译的。

About

酷到没朋友的 ZeusMud 交流QQ群:37723482 休闲在线游戏,混合多种游戏模式,如养成,战网,卡牌/竞技,社区。该游戏会合理利用你的碎片时间带给你最大的愉悦和享受。 expand collapse
Cancel

Releases

No release

Contributors

All

Activities

Load More
can not load any more
C++
1
https://gitee.com/zapline/ZeusMud.git
git@gitee.com:zapline/ZeusMud.git
zapline
ZeusMud
ZeusMud
master

Search

E71a60c3 8189591 Df7b7c6b 8189591