游戏服务器端引擎——DogSE的设计
、
就DogSE的设计目标来说,它定位为千人左右的页游服务器,在不修改任何底层模块的情况下可以快速的写各种游戏业务。就算是新人在熟悉2~3天后也可以开始写一个游戏。
1、DogSE的基本结构
对于一个游戏再代码层面可以分为3个部分
1.与所有游戏无关的代码(DogSE的Core和Library 项目)
2.特定游戏类型的基础代码
3.具体游戏相关的业务代码
对于DogSE来说,它所完成的任务就是与游戏无关的底层代码,在第二阶段,会根据不同的游戏类型,补充一些特定游戏的基础代码,这些基础代码是已例子的方式提供,真正在用引擎开发时,只需要根据具体的游戏类型,选择对应的例子,并再这个基础上进行快速开发。
2、DogSE一些组件的设计
2.1 网络层设计
网络层主要由2个对象组成Listener和ClientSession,当Listener开启监听后,当有socket发起连接后,会触发SocketConnect的事件。事件里面会带有一个ClientSession的对象用来区分每个客户端。这里采用模板,可以对每个客户端绑定一个指定类型的业务逻辑数据。目前这个T是消息包处理的NetSate对象。
2.2 消息包处理
消息包处理目前Core只提供了一个Byte读和写的基本类(PacketReader和 PacketWriter),后期根据不同项目的需求,可以采用不同的解析协议。DogSE默认用自定义的二进制流读写,后面将试着支持google的protobuf,以及一些其它的交换数据(json,xml)
2.3 任务队列
任务队列游戏运转的核心,任务分为网络任务(NetTask)和非网络任务(ActionTask,ParamActionTask),网络任务主要是客户端发起的请求,而买手游非网络任务可能是某些定时回调的任务,一些异步任务的回调。PacketHander主要负责网络消息id对具体业务逻辑绑定。
2.4 时间调度
时间调度会开启一个线程监测当前时间调度队列里的TimeSlice对象是否达到执行要求。达到触发要求,会向TaskManager里添加一个ActionTask对象,用来执行对应的游戏业务逻辑。
游戏服务器端引擎——DogSE的设计相关推荐
- 类Photon游戏服务器引擎Matchvs简介
在介绍Matchvs前,先来了解下是什么游戏服务器引擎?虽然很多人可能都听过国外的Photon,但相对于引擎,大家对游戏服务器框架这个概念可能更为熟悉.框架其实就是针对后台通讯部分搭建一个可复用的设计 ...
- MMORPG 游戏服务器端设计
之前有过一篇介绍游戏服务器端的博文 http://blog.csdn.net/liuxialong/archive/2011/06/12/6539762.aspx 但是篇幅太长,而且过于关注细节,适合 ...
- MMORPG游戏服务器端设计
之前有过一篇介绍游戏服务器端的博文 http://blog.csdn.net/liuxialong/archive/2011/06/12/6539762.aspx 但是篇幅太长,而且过于关注细节,适合 ...
- 【游戏后端】游戏服务器端开发的一些建议(转载)
摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结.第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一 ...
- 「游戏开发」游戏服务器端开发的一些经验
本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结.第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一些基本原 ...
- 游戏服务器端开发的基本大纲
摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结.第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一 ...
- 游戏服务器端的基本体系和开发建议
游戏服务器开发的基本体系与服务器端开发的一些建议 转载 2017-07-21 投稿:mdxy-dxy 我要评论 刚开始时以为做游戏服务器和做web差不多,但是经过一段时间之后,才发现代码太 ...
- 游戏后端】游戏服务器端开发的一些建议
<!--一个博主专栏付费入口结束--><link rel="stylesheet" href="https://csdnimg.cn/release/p ...
- 【游戏后端】游戏服务器端开发的一些建议
摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结.第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一 ...
最新文章
- html中设置表格单实线,css实现表格实线的方法
- 写入位置 0x00000004 时发生访问冲突_HDFS读取和写入数据简介
- ddos中的tcp反射攻击技术分析
- 存储知识:数据一致性、分级存储、分层存储与信息生命周期管理
- 新编辑神器,可以在终端运行 Jupyter Notebook 了!
- hive查询像mysql在终端一样有规则的方法!!!
- UnitTest in .NET(Part 1)
- NGINX 配置超时时间
- 微软中文网,越办越好了!
- spring boot 使用 websocket tomcat刚启动就关闭到问题
- 公众号回复单个图文消息
- C++语言基础 例程 派生类的声明与构成
- 依赖注入框架Autofac的简单使用
- C#中跨工程跨项目注释的显示
- WPS 2019使用技巧及WPS2019政府版最全合集
- matlab工作区导入多个文件,MATLAB可以直接把Excel文件中的数据导入工作区中
- 大一计算机基础ppt练习题,计算机基础知识PPT练习题及答案DOC
- 【第149期】游戏策划:给@Dimitri的简历分析
- 驱动精灵的护眼大师屏保非常不错
- 【 优秀的无干扰文本写作工具】Ommwriter for Mac 1.57
热门文章
- 希尔伯特曲线 java_Java中空间填充Hilbert曲线的递推算法
- 初学者不建议月python吗_9.python入门
- 三、linux目录浏览管理及维护
- CF1000G Two-Paths
- 在 Unity 中基于 Oculus DK1 的开发
- MVC5中EF6 Code First启动慢及间隙变慢的一些优化处理
- MySql 数据操作类
- 两种方法设置disabled属性
- 二维数组求最大子矩阵的和
- 服务器cpu,内存正常, 部分网站打不开,提示死锁,应用程序池回收就正常,如何解决?...