实习期间深入参与到某大型pc端枪战游戏的后端开发中,此游戏由著名游戏工作室编写,代码可读性极高,自由时间对游戏后台代码进行了深入研究,在满足自身工作需要的同时对游戏后台的架构也有了理解,记录在此,以便学习。
根据功能层次可大致划分为应用层(逻辑层)、通用方法层、编包层(数据统一)、通信层(TCP连接)
以上为个人总结与理解
以下是准确的架构表。

层次 功能 约束
逻辑层 实现更具体的业务逻辑 能调用所有下层代码,但应主要依赖接口层
实现层 对各种具体的通信协议、存储设备等功能的实现 满足下层的接口层来做实现,禁止同层间互相调用
接口层 定义了各模块的基本使用方式,用以隔离具体的实现和设计,从而提供互相替换的能力 本层之间代码可以互相调用,但禁止调用上层代码
工具层 提供通用的 C++ 工具库功能,如 log/json/ini/日期时间/字符串处理 等等 不应该调用其他层代码,也不应该调用同层其他模块
第三方库 提供诸如 redis/tcaplus 或者其他现成功能,其地位和“工具层”一样 不应该调用其他层代码,甚至不应该修改其源码

如果希望业务数据的协议包,能自动化的成为编程中的对象,那么在处理消息体这里,需要一个可选的额外层次,用来把字节数组,转换成对象。

输入 层次 功能 输出
Data Transport 通信 Buffer
Buffer Protocol 分包 Message
Message Processor 分发 Object
Object 处理模块 处理 业务逻辑

C++游戏(大型PC端枪战游戏)服务器架构的更多相关文章

  1. 类似于QQ游戏百万人同时在线的服务器架构实现

    http://blog.csdn.net/sodme/article/details/213995 —————————————————————————————————————————————————— ...

  2. 职业定位(Web前端、后台、PC端)

    Web前端 Web前端开发工程师:http://baike.sogou.com/v18499271.htm WEB前端开发面试题集锦:http://wenku.baidu.com/view/47bbc ...

  3. 第二期,问道PC端游戏免安装,下载即可体验

    最近 迷恋游戏搭建不能自拔.搭建过 手游梦幻诛仙,传奇等等. 今天还是推荐PC端的问道这款游戏,原因是个人投入修改的时间太多了.基本完善了好多.这还得感谢这都是论坛的各位大佬体验的结果. 原来这个游戏 ...

  4. pygame开发PC端微信打飞机游戏

    pygame开发PC端微信打飞机游戏 一.项目简介 1. 介绍 本项目类似曾经火爆的微信打飞机游戏.游戏将使用Python语言开发,主要用到pygame的API.游戏最终将会以python源文件gam ...

  5. windows8安装xna4.0不能开发Xbox和PC端游戏的解决办法

    vs2012安装wp8后,只能开发手机端的xna游戏程序,没有xbox和pc端的,看来官方是不打算更新了,不过我们还是有办法的. 前提条件下,您得安装了vs2010和xna4.0 game studi ...

  6. QQ游戏百万人同时在线服务器架构实现

    转载自:http://morton5555.blog.163.com/blog/static/976407162012013112545710/# QQ游戏于前几日终于突破了百万人同时在线的关口,向着 ...

  7. 带你使用h5开发移动端小游戏

    带你使用h5开发移动端小游戏 在JY1.x版本中,你要做一个pc端的小游戏,会非常的简单,包括说,你要在低版本的浏览器IE8中,也不会出现明显的卡顿现象,你只需要关心游戏的逻辑就行了,比较适合逻辑较为 ...

  8. 一个3D的多人在线游戏, 服务端 + 客户端 【转】

    最近学院组织了一个实训,要求是利用Socket通信和D3D的知识, 写一个多人在线的游戏, 服务端是在linux下, 客户是在Windows下: 写这个的目的是想让大家给我找错, 欢迎大家的意见.我的 ...

  9. 同一世界服务器架构--Erlang游戏服务器

        Erlang最大的优点是方便,很多基础功能都已经集成到Erlang语言中.之前用C++写服务器的时候,管理TCP连接很繁琐,需要写一大堆代码来实现.底层的框架需要写很多代码实现,这样既浪费时间 ...

随机推荐

  1. Oracle基础概述

    本部分主要参考”风哥“的Oracle入门视频. 一.体系结构概述 1.物理结构(文件结构) Oracle有四种文件:控制文件.数据文件.日志文件.参数文件 其中日志文件分为两类:联机日志文件.归档日志 ...

  2. Python Ethical Hacking - BeEF Framework(2)

    Basic BeEF commands: Login the BeEF Control Panel, and go to Commands page. Create Alert Dialog: Run ...

  3. onehot编码检测

    ‘’16bits位宽寄存器,用五(六也行)级逻辑判断其中有15个0和1个1‘’,这么道题目,面试无数,几乎没有人能答出来,连给我衍生‘’14个0和2个1‘’的机会都没有. 今天的问题来源于知乎,某大牛 ...

  4. OpenXml demo

    class OpenXmlDemo { /* * excel 对象结构 * SpreadsheetDocument * >WorkbookPart * >WorksheetPart * & ...

  5. 终于搞懂Spring中Scope为Request和Session的Bean了

    之前只是很模糊的知道其意思,在request scope中,每个request创建一个新的bean,在session scope中,同一session中的bean都是一样的 但是不知道怎么用代码去验证 ...

  6. python多线程之Threading

    什么是线程? 线程是操作系统内核调度的基本单位,一个进程中包含一个或多个线程,同一个进程内的多个线程资源共享,线程相比进程是“轻”量级的任务,内核进行调度时效率更高. 多线程有什么优势? 多线程可以实 ...

  7. Blazor带我重玩前端(四)

    布局 Blazor中的布局和MVC中的布局是类似的. 创建布局 新建一个Razor页面,所有新增的布局都要继承LayoutComponentBase,同时标识自定义内容的输出位置,即标识Body的位置 ...

  8. APP自动化 -- contexts(上下文切换)

    一.上下文是什么? 1.解释 1)在混合型APP中包含了  原生页面 和 H5页面,如果需要进入APP内嵌的H5页面里面去操作就需要先切换进去,如果要继续回到原生页面操作就需要切回来. 2)这个就像是 ...

  9. 第【7】章: 数递归、DFS、剪枝、回溯等问题 学习报告

    (7.2)节:   递归问题    1.题干: 递归方便表达,但是性能上消耗过多 1.有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶.2阶.3阶. 请实现一个方法,计算小孩有多少种上楼的方式. ...

  10. 16 . Go之网络编程

    互联网的本质 两台计算机之间的通信与两个人打电话原理是一样的. # 1. 首先要通过各种物理连接介质连接 # 2. 找准确对方计算机(准确到软件)的位置 # 3. 通过统一的标准(一般子协议)进行数据 ...