多人在线游戏架构实战:基于C 的分布式游戏编程_第1页
多人在线游戏架构实战:基于C 的分布式游戏编程_第2页
多人在线游戏架构实战:基于C 的分布式游戏编程_第3页
多人在线游戏架构实战:基于C 的分布式游戏编程_第4页
多人在线游戏架构实战:基于C 的分布式游戏编程_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多人在线游戏架构实战:基于C++的分布式游戏编程读书笔记模板01思维导图读书笔记作者介绍内容摘要目录分析精彩摘录目录0305020406思维导图架构游戏网络游戏编程实战书读者游戏进程数据框架网络组件类线程分析协议登录游戏本书关键字分析思维导图内容摘要内容摘要本书主要讲述大型多人在线游戏开发的框架与编程实践,以实际例子来介绍从无到有地制作网络游戏框架的完整过程,让读者了解网络游戏制作中的所有细节。全书共12章,从网络游戏的底层网络编程开始,逐步引导读者学习网络游戏开发的各个步骤。本书通过近50个真实示例、近80个流程图,以直观的方式阐述和还原游戏制作的全过程,涵盖了网络游戏设计的核心概念和实现,包括游戏主循环、线程、Actor模式、定时器、对象池、组件编码、架构层的解耦等。本书既可以作为大学计算机相关专业网络游戏开发课程的参考书,又可以作为网络游戏行业从业人员的编程指南。读书笔记读书笔记这本书很棒,里面详细介绍了actor机制,手把手教写游戏服务器。看过的名字带有实战的书没有哪本出彩的,这本也不例外。说一般是站在我的视角来说的,自己对后端的一些技术和设计方案有一定掌握,主要是想了解要实现游戏业务,整个系统是怎么设计划分的,前端做哪些,后端做什么,在不同场景,比如不同游戏,不同业务容量会采用哪种架构方案,上线和升级遇到了什么问题,有什么样的解决方案,怎么观测系统和业务的。目录分析1.1单机游戏与网络游戏的区别1.3理解TCP/IP1.2理解IP地址第1章网络编程基础1.4阻塞式网络编程1.6总结1.5非阻塞网络编程第1章网络编程基础1.4阻塞式网络编程1.4.1工程源代码1.4.2服务端代码分析1.4.3客户端代码分析1.4.4系统差异1.4.5网络底层函数说明1.4.6小结1.5非阻塞网络编程1.5.1工程源代码1.5.2服务端代码分析1.5.3客户端代码分析1.5.4小结2.1Select网络模型2.2Epoll网络模型2.3网络协议:protobuf2.4总结第2章网络IO多路复用2.1Select网络模型2.1.1::select函数说明2.1.2工程源代码2.1.3网络基类:Network2.1.4NetworkListen分析2.1.5Server流程详解2.1.6NetworkConnector分析2.1.7测试流程详解2.1.8ConnectObj分析2.1.9Buffer分析2.2Epoll网络模型2.2.1函数说明2.2.2源代码分析2.2.3小结2.3网络协议:protobuf2.3.1在Windows下编译使用protobuf2.3.2在Linux下编译使用protobuf2.3.3使用protobuf定义协议3.1游戏架构概述3.3设计游戏框架3.2框架瓶颈第3章线程、进程以及Actor模型3.4游戏主循环3.5理解进程和线程3.6Actor模型3.7游戏框架中的线程3.8Actor对象之间的消息处理机制3.9总结010302040506第3章线程、进程以及Actor模型3.1游戏架构概述3.1.1无服务端游戏3.1.2单进程CS架构3.1.3多进程CS架构3.2框架瓶颈3.2.1滚服游戏3.2.2副本游戏3.2.3大图分割空间游戏3.5理解进程和线程3.5.1进程是什么3.5.2线程是什么3.5.3C++标准线程库3.7游戏框架中的线程3.7.1包裹类ThreadObject3.7.2线程类Thread3.7.3线程管理类ThreadMgr3.7.4libserver库与游戏逻辑3.8Actor对象之间的消息处理机制3.8.1消息定义原则3.8.2消息队列机制4.1登录流程图4.2制作一个简单的验证接口4.3导入PHP登录接口4.4编码中用到的第三方库4.5账号验证代码分析4.6结果测试010302040506第4章账号登录与验证4.7消息过滤机制4.8测试机器人4.9批量登录测试4.10总结第4章账号登录与验证4.2制作一个简单的验证接口4.2.1Nginx参考配置4.2.2php-fpm参考配置4.3导入PHP登录接口4.3.1修改PHP中的数据库配置4.3.2导入测试账号4.3.3批量生成账号4.4编码中用到的第三方库4.4.1库libcurl4.4.2库libjsoncpp4.5账号验证代码分析4.5.1定义登录协议号4.5.2处理协议的Account类4.5.3Account类如何放置到线程中4.5.4处理验证的HttpRequestAccount类4.8测试机器人4.8.1状态机4.8.2状态机基类4.8.3状态机管理类4.8.4Robot类中的状态机5.1VisualStudio性能工具5.2内存中的数据结构5.3gprof5.4valgrind第5章性能优化与对象池5.6总结5.5对象池第5章性能优化与对象池5.2内存中的数据结构5.2.1交换型数据结构5.2.2刷新型数据结构5.3gprof5.3.1gprof调用堆栈图5.3.2让进程安全退出5.3.3用gprof工具查看框架5.5对象池5.5.1对象池代码分析5.5.2使用cmd命令查看对象池6.1一个简单的ECS工程6.2基于ECS框架的libserver6.3基于ECS框架的login和robots工程6.4YAML文件第6章搭建ECS框架6.6总结6.5log4cplus日志第6章搭建ECS框架6.1一个简单的ECS工程6.1.1组件类Component6.1.2实体类Entity6.1.3系统类System6.1.4管理类EntitySystem6.1.5测试6.2基于ECS框架的libserver6.2.1通过字符串动态创建类6.2.2提供多参变量来创建实例6.2.3EntitySystem的工作原理6.3基于ECS框架的login和robots工程6.3.1Account类6.3.2动态创建组件或实例6.3.3ECS框架下的网络通信6.3.4执行效率6.4YAML文件6.4.1YAML编译安装6.4.2读取YAML配置文件6.4.3合并线程6.5log4cplus日志6.5.1log4cplus的编译安装6.5.2配置文件6.5.3使用log4cplus7.1MySQLConnector/C7.3数据库连接组件7.2连接时使用的函数说明第7章MySQL数据库7.4写入数据时使用的函数说明7.5写入数据示例7.6查询数据时使用的函数说明7.7查询数据示例7.8数据表的创建与更新12345第7章MySQL数据库7.9数据表中的数据结构与protobuf结构7.11总结7.10角色查询与创建流程第7章MySQL数据库7.3数据库连接组件7.3.1MysqlConnector组件7.3.2连接数据库7.3.3关闭连接7.5写入数据示例7.5.1创建预处理7.5.2用预处理创建角色7.7查询数据示例7.7.1Query查询函数7.7.2查询玩家数据7.8数据表的创建与更新7.8.1创建表7.8.2更新表7.8.3测试更新与创建组件7.10角色查询与创建流程7.10.1为login进程与dbmgr进程创建连接类7.10.2找到指定的NetworkConnector实例7.10.3创建角色7.10.4机器人登录创建角色测试8.1新的系统管理类SystemManager8.2allinone工程8.3线程分类8.4IAwakeSystem接口与对象池第8章深入学习组件式编程8.5主动销毁对象8.7总结8.6时间堆第8章深入学习组件式编程8.1新的系统管理类SystemManager8.1.1实体系统EntitySystem8.1.2更新系统UpdateSystem8.1.3消息系统MessageSystem8.1.4测试执行效率8.2allinone工程8.2.1新工程allinone8.2.2协议是如何被转发的8.2.3查看线程中的所有对象8.2.4测试执行效率8.4IAwakeSystem接口与对象池8.4.1DynamicObjectPoolCollector对象池集合8.4.2全局单例对象8.4.3查看线程中的所有对象8.5主动销毁对象8.5.1一般组件销毁8.5.2引用计数销毁对象8.6时间堆8.6.1堆实现代码8.6.2时间堆组件9.1启动多个login进程9.2appmgr进程9.3HTTP9.4使用Mongoose分析HTTP格式第9章服务器管理进程与HTTP9.5为Packet定义新的网络标识9.6HTTP分块9.7机器人测试批量登录9.8总结第9章服务器管理进程与HTTP9.4使用Mongoose分析HTTP格式9.4.1HTTP类型9.4.2接收HTTP数据9.4.3处理HTTP数据的协议号9.4.4收到HTTP请求是如何响应的9.4.5发送HTTP返回数据流程9.5为Packet定义新的网络标识9.5.1使用网络标识创建一个连接9.5.2使用网络标识发送数据9.5.3向外部请求HTTP数据10.1game与space的定位10.3性能瓶颈分析10.2Redis及其第三方库第10章分布式登录与Redis内存数据库10.5总结10.4多进程登录协议回顾第10章分布式登录与Redis内存数据库10.1game与space的定位10.1.1选择合适的game进程10.1.2使用token登录game进程10.1.3Player组件10.2Redis及其第三方库10.2.1Redis的安装10.2.2Redis命令行命令10.2.3hireids库10.2.4组件RedisConnector10.2.5Redis在login中的应用10.2.6Redis在game中的应用10.2.7从Redis删除数据10.3性能瓶颈分析10.3.1使用日志查看瓶颈10.3.2优化MessageComponent组件10.3.3ConnectObj内存组织11.1资源数据配置与读取11.2地图类World与代理类WorldProxy11.3分布式地图跳转流程11.4通过客户端进入游戏11.5玩家在WorldProxy之间的跳转11.6总结010302040506第11章分布式跳转方案11.1资源数据配置与读取11.1.1资源管理类ResourceManager11.1.2地图资源管理类ResourceWorldMgr11.1.3地图资源类ResourceWorld11.2地图类World与代理类WorldProxy11.2.1地图类World11.2.2为什么需要WorldProxy11.3分布式地图跳转流程11.3.1发起跳转协议的时机11.3.2跳转协议的数据定义11.3.3目标代理地图收到跳转协议11.3.4网络标识如何在网络中传递11.3.5space进程发送的协议如何转发到客户端12.1玩家断线12.2进程之间的断线12.3动态新增系统12.4总结第12章断线与动态加载系统12.1玩家断线12.1.1玩家在login进程中断线12.1.2玩家在game进程中断线12.1.3玩家断线时World类的处理12.1.4玩家数据的读取与保存12.1.5如何进入断线之前的地图12.2进程之间的断线12.2.1login进程断线

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论