书籍详情
多人在线游戏架构实战:基于C++的分布式游戏编程
作者:彭放 著
出版社:机械工业出版社
出版时间:2021-01-01
ISBN:9787111667926
定价:¥109.00
购买这本书可以去
内容简介
《多人在线游戏架构实战:基于C++的分布式游戏编程》主要讲述大型多人在线游戏开发的框架与编程实践,以实际例子来介绍从无到有地制作网络游戏框架的完整过程,让读者了解网络游戏制作中的所有细节。全书共12章,从网络游戏的底层网络编程开始,逐步引导读者学习网络游戏开发的各个步骤。《多人在线游戏架构实战:基于C++的分布式游戏编程》通过近50个真实示例、近80个流程图,以直观的方式阐述和还原游戏制作的全过程,涵盖了网络游戏设计的核心概念和实现,包括游戏主循环、线程、Actor模式、定时器、对象池、组件编码、架构层的解耦等。《多人在线游戏架构实战:基于C++的分布式游戏编程》既可以作为大学计算机相关专业网络游戏开发课程的参考书,叉可以作为网络游戏行业从业人员的编程指南。
作者简介
暂缺《多人在线游戏架构实战:基于C++的分布式游戏编程》作者简介
目录
前言
第1章 网络编程基础1
1.1 单机游戏与网络游戏的区别1
1.2 理解IP地址4
1.3 理解TCP/IP5
1.4 阻塞式网络编程7
1.4.1 工程源代码7
1.4.2 服务端代码分析9
1.4.3 客户端代码分析13
1.4.4 系统差异14
1.4.5 网络底层函数说明14
1.4.6 小结17
1.5 非阻塞网络编程17
1.5.1 工程源代码18
1.5.2 服务端代码分析19
1.5.3 客户端代码分析21
1.5.4 小结23
1.6 总结24
第2章 网络IO多路复用25
2.1 Select网络模型25
2.1.1 ::select函数说明25
2.1.2 工程源代码27
2.1.3 网络基类:Network29
2.1.4 NetworkListen分析31
2.1.5 Server流程详解35
2.1.6 NetworkConnector分析37
2.1.7 测试流程详解39
2.1.8 ConnectObj分析41
2.1.9 Buffer分析42
2.1.10 RecvNetworkBuffer分析44
2.1.11 SendNetworkBuffer分析48
2.1.12 Packet分析50
2.1.13 小结55
2.2 Epoll网络模型55
2.2.1 函数说明56
2.2.2 源代码分析57
2.2.3 小结60
2.3 网络协议:protobuf61
2.3.1 在Windows下编译使用protobuf62
2.3.2 在Linux下编译使用protobuf64
2.3.3 使用protobuf定义协议66
2.4 总结69
第3章 线程、进程以及Actor模型70
3.1 游戏架构概述70
3.1.1 无服务端游戏70
3.1.2 单进程CS架构71
3.1.3 多进程CS架构71
3.2 框架瓶颈72
3.2.1 滚服游戏72
3.2.2 副本游戏73
3.2.3 大图分割空间游戏73
3.3 设计游戏框架74
3.4 游戏主循环76
3.5 理解进程和线程77
3.5.1 进程是什么77
3.5.2 线程是什么78
3.5.3 C++标准线程库79
3.6 Actor模型82
3.7 游戏框架中的线程84
3.7.1 包裹类ThreadObject85
3.7.2 线程类Thread85
3.7.3 线程管理类ThreadMgr86
3.7.4 libserver库与游戏逻辑88
3.8 Actor对象之间的消息处理机制92
3.8.1 消息定义原则93
3.8.2 消息队列机制94
3.9 总结99
第4章 账号登录与验证100
4.1 登录流程图100
4.2 制作一个简单的验证接口101
4.2.1 Nginx参考配置102
4.2.2 php-fpm参考配置103
4.3 导入PHP登录接口104
4.3.1 修改PHP中的数据库配置104
4.3.2 导入测试账号105
4.3.3 批量生成账号105
4.4 编码中用到的第三方库106
4.4.1 库libcurl106
4.4.2 库libjsoncpp107
4.5 账号验证代码分析108
4.5.1 定义登录协议号108
4.5.2 处理协议的Account类110
4.5.3 Account类如何放置到线程中110
4.5.4 处理验证的HttpRequestAccount类112
4.6 结果测试115
4.7 消息过滤机制116
4.8 测试机器人118
4.8.1 状态机119
4.8.2 状态机基类120
4.8.3 状态机管理类120
4.8.4 Robot类中的状态机122
4.9 批量登录测试125
4.10 总结126
第5章 性能优化与对象池127
5.1 Visual Studio性能工具127
5.2 内存中的数据结构131
5.2.1 交换型数据结构131
5.2.2 刷新型数据结构135
5.3 gprof137
5.3.1 gprof调用堆栈图138
5.3.2 让进程安全退出139
5.3.3 用gprof工具查看框架141
5.4 valgrind145
5.5 对象池150
5.5.1 对象池代码分析150
5.5.2 使用cmd命令查看对象池154
5.6 总结155
第6章 搭建ECS框架156
6.1 一个简单的ECS工程156
6.1.1 组件类Component157
6.1.2 实体类Entity158
6.1.3 系统类System158
6.1.4 管理类EntitySystem159
6.1.5 测试161
6.2 基于ECS框架的libserver162
6.2.1 通过字符串动态创建类163
6.2.2 提供多参变量来创建实例168
6.2.3 EntitySystem的工作原理171
6.3 基于ECS框架的login和robots工程177
6.3.1 Account类177
6.3.2 动态创建组件或实例178
6.3.3 ECS框架下的网络通信185
6.3.4 执行效率188
6.4 YAML文件189
6.4.1 YAML编译安装189
6.4.2 读取YAML配置文件191
6.4.3 合并线程195
6.5 log4cplus日志197
6.5.1 log4cplus的编译安装197
6.5.2 配置文件198
6.5.3
第1章 网络编程基础1
1.1 单机游戏与网络游戏的区别1
1.2 理解IP地址4
1.3 理解TCP/IP5
1.4 阻塞式网络编程7
1.4.1 工程源代码7
1.4.2 服务端代码分析9
1.4.3 客户端代码分析13
1.4.4 系统差异14
1.4.5 网络底层函数说明14
1.4.6 小结17
1.5 非阻塞网络编程17
1.5.1 工程源代码18
1.5.2 服务端代码分析19
1.5.3 客户端代码分析21
1.5.4 小结23
1.6 总结24
第2章 网络IO多路复用25
2.1 Select网络模型25
2.1.1 ::select函数说明25
2.1.2 工程源代码27
2.1.3 网络基类:Network29
2.1.4 NetworkListen分析31
2.1.5 Server流程详解35
2.1.6 NetworkConnector分析37
2.1.7 测试流程详解39
2.1.8 ConnectObj分析41
2.1.9 Buffer分析42
2.1.10 RecvNetworkBuffer分析44
2.1.11 SendNetworkBuffer分析48
2.1.12 Packet分析50
2.1.13 小结55
2.2 Epoll网络模型55
2.2.1 函数说明56
2.2.2 源代码分析57
2.2.3 小结60
2.3 网络协议:protobuf61
2.3.1 在Windows下编译使用protobuf62
2.3.2 在Linux下编译使用protobuf64
2.3.3 使用protobuf定义协议66
2.4 总结69
第3章 线程、进程以及Actor模型70
3.1 游戏架构概述70
3.1.1 无服务端游戏70
3.1.2 单进程CS架构71
3.1.3 多进程CS架构71
3.2 框架瓶颈72
3.2.1 滚服游戏72
3.2.2 副本游戏73
3.2.3 大图分割空间游戏73
3.3 设计游戏框架74
3.4 游戏主循环76
3.5 理解进程和线程77
3.5.1 进程是什么77
3.5.2 线程是什么78
3.5.3 C++标准线程库79
3.6 Actor模型82
3.7 游戏框架中的线程84
3.7.1 包裹类ThreadObject85
3.7.2 线程类Thread85
3.7.3 线程管理类ThreadMgr86
3.7.4 libserver库与游戏逻辑88
3.8 Actor对象之间的消息处理机制92
3.8.1 消息定义原则93
3.8.2 消息队列机制94
3.9 总结99
第4章 账号登录与验证100
4.1 登录流程图100
4.2 制作一个简单的验证接口101
4.2.1 Nginx参考配置102
4.2.2 php-fpm参考配置103
4.3 导入PHP登录接口104
4.3.1 修改PHP中的数据库配置104
4.3.2 导入测试账号105
4.3.3 批量生成账号105
4.4 编码中用到的第三方库106
4.4.1 库libcurl106
4.4.2 库libjsoncpp107
4.5 账号验证代码分析108
4.5.1 定义登录协议号108
4.5.2 处理协议的Account类110
4.5.3 Account类如何放置到线程中110
4.5.4 处理验证的HttpRequestAccount类112
4.6 结果测试115
4.7 消息过滤机制116
4.8 测试机器人118
4.8.1 状态机119
4.8.2 状态机基类120
4.8.3 状态机管理类120
4.8.4 Robot类中的状态机122
4.9 批量登录测试125
4.10 总结126
第5章 性能优化与对象池127
5.1 Visual Studio性能工具127
5.2 内存中的数据结构131
5.2.1 交换型数据结构131
5.2.2 刷新型数据结构135
5.3 gprof137
5.3.1 gprof调用堆栈图138
5.3.2 让进程安全退出139
5.3.3 用gprof工具查看框架141
5.4 valgrind145
5.5 对象池150
5.5.1 对象池代码分析150
5.5.2 使用cmd命令查看对象池154
5.6 总结155
第6章 搭建ECS框架156
6.1 一个简单的ECS工程156
6.1.1 组件类Component157
6.1.2 实体类Entity158
6.1.3 系统类System158
6.1.4 管理类EntitySystem159
6.1.5 测试161
6.2 基于ECS框架的libserver162
6.2.1 通过字符串动态创建类163
6.2.2 提供多参变量来创建实例168
6.2.3 EntitySystem的工作原理171
6.3 基于ECS框架的login和robots工程177
6.3.1 Account类177
6.3.2 动态创建组件或实例178
6.3.3 ECS框架下的网络通信185
6.3.4 执行效率188
6.4 YAML文件189
6.4.1 YAML编译安装189
6.4.2 读取YAML配置文件191
6.4.3 合并线程195
6.5 log4cplus日志197
6.5.1 log4cplus的编译安装197
6.5.2 配置文件198
6.5.3
猜您喜欢