游戏服务器端引擎--DogSE的设计


DogSE的设计目标来说,它定位为千人左右的页游服务器,在不修改任何底层模块的情况下可以快速的写各种游戏业务。就算是新人在熟悉2~3天后也可以开始写一个游戏。

项目可以从github获得,访问地址:https://github.com/dogvane/DogSE

 

1.DogSE的基本结构


 

对于一个游戏再代码层面可以分为3个部分

1.与所有游戏无关的代码(DogSECoreLibrary 项目)

2.特定游戏类型的基础代码

3.具体游戏相关的业务代码

 

对于DogSE来说,它所完成的任务就是与游戏无关的底层代码,在第二阶段,会根据不同的游戏类型,补充一些特定游戏的基础代码,这些基础代码是已例子的方式提供,真正在用引擎开发时,只需要根据具体的游戏类型,选择对应的例子,并再这个基础上进行快速开发。

 

2.DogSE一些组件的设计

2.1 网络层设计

  网络层主要由2个对象组成ListenerClientSession,当Listener开启监听后,当有socket发起连接后,会触发SocketConnect的事件。事件里面会带有一个ClientSession的对象用来区分每个客户端。这里采用模板,可以对每个客户端绑定一个指定类型的业务逻辑数据。目前这个T是消息包处理的NetSate对象。

 

2.2 消息包处理

消息包处理目前Core只提供了一个Byte读和写的基本类(PacketReader和 PacketWriter),后期根据不同项目的需求,可以采用不同的解析协议。DogSE默认用自定义的二进制流读写,后面将试着支持googleprotobuf,以及一些其它的交换数据(json,xml

 

 


2.3 任务队列

任务队列游戏运转的核心,任务分为网络任务(NetTask)和非网络任务(ActionTaskParamActionTask),网络任务主要是客户端发起的请求,而非网络任务可能是某些定时回调的任务,一些异步任务的回调。PacketHander主要负责网络消息id对具体业务逻辑绑定。

 

 

2.4 时间调度

  时间调度会开启一个线程监测当前时间调度队列里的TimeSlice对象是否达到执行要求。达到触发要求,会向TaskManager里添加一个ActionTask对象,用来执行对应的游戏业务逻辑。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值