《多人在线游戏架构实战:基于C++的分布式游戏编程》彭放 | PDF下载|ePub下载
多人在线游戏架构实战:基于C++的分布式游戏编程 版权信息
- 出版社:机械工业出版社
- 出版时间:2021-01-01
- ISBN:9787111667926
- 条形码:9787111667926 ; 978-7-111-66792-6
多人在线游戏架构实战:基于C++的分布式游戏编程 本书特色
《多人在线游戏架构实战:基于C++的分布式游戏编程》特点: 从网络游戏的底层编码开始,深入讲解游戏开发的详细步骤、游戏主循环、线程的使用、Actor模式的应用等。 以直观的方式阐述和还原游戏制作的全过程,全面介绍游戏编码过程中众多的核心概念和具体实现,如定时器、对象池、组件编码、架构层的解耦等。 使用C++来实现游戏的架构,读者也可以举一反三,使用其他的编程语言轻松实现游戏开发目标。 客户端采用Unity引擎。
多人在线游戏架构实战:基于C++的分布式游戏编程 内容简介
《多人在线游戏架构实战:基于C++的分布式游戏编程》主要讲述大型多人在线游戏开发的框架与编程实践,以实际例子来介绍从无到有地制作网络游戏框架的完整过程,让读者了解网络游戏制作中的所有细节。 全书共12章,从网络游戏的底层网络编程开始,逐步引导读者学习网络游戏开发的各个步骤。 《多人在线游戏架构实战:基于C++的分布式游戏编程》通过近50个真实示例、近80个流程图,以直观的方式阐述和还原游戏制作的全过程,涵盖了网络游戏设计的核心概念和实现,包括游戏主循环、线程、Actor模式、定时器、对象池、组件编码、架构层的解耦等。 《多人在线游戏架构实战:基于C++的分布式游戏编程》既可以作为大学计算机相关专业网络游戏开发课程的参考书,叉可以作为网络游戏行业从业人员的编程指南。
多人在线游戏架构实战:基于C++的分布式游戏编程 目录
前言
第1章 网络编程基础1
11 单机游戏与网络游戏的区别1
12 理解IP地址4
13 理解TCP/IP5
14 阻塞式网络编程7
141 工程源代码7
142 服务端代码分析9
143 客户端代码分析13
144 系统差异14
145 网络底层函数说明14
146 小结17
15 非阻塞网络编程17
151 工程源代码18
152 服务端代码分析19
153 客户端代码分析21
154 小结23
16 总结24
第2章 网络IO多路复用25
21 Select网络模型25
211 ::select函数说明25
212 工程源代码27
213 网络基类:Network29
214 NetworkListen分析31
215 Server流程详解35
216 NetworkConnector分析37
217 测试流程详解39
218 ConnectObj分析41
219 Buffer分析42
2110 RecvNetworkBuffer分析44
2111 SendNetworkBuffer分析48
2112 Packet分析50
2113 小结55
22 Epoll网络模型55
221 函数说明56
222 源代码分析57
223 小结60
23 网络协议:protobuf61
231 在Windows下编译使用protobuf62
232 在Linux下编译使用protobuf64
233 使用protobuf定义协议66
24 总结69
第3章 线程、进程以及Actor模型70
31 游戏架构概述70
311 无服务端游戏70
312 单进程CS架构71
313 多进程CS架构71
32 框架瓶颈72
321 滚服游戏72
322 副本游戏73
323 大图分割空间游戏73
33 设计游戏框架74
34 游戏主循环76
35 理解进程和线程77
351 进程是什么77
352 线程是什么78
353 C++标准线程库79
36 Actor模型82
37 游戏框架中的线程84
371 包裹类ThreadObject85
372 线程类Thread85
373 线程管理类ThreadMgr86
374 libserver库与游戏逻辑88
38 Actor对象之间的消息处理机制92
381 消息定义原则93
382 消息队列机制94
39 总结99
第4章 账号登录与验证100
41 登录流程图100
42 制作一个简单的验证接口101
421 Nginx参考配置102
422 php-fpm参考配置103
43 导入PHP登录接口104
431 修改PHP中的数据库配置104
432 导入测试账号105
433 批量生成账号105
44 编码中用到的第三方库106
441 库libcurl106
442 库libjsoncpp107
45 账号验证代码分析108
451 定义登录协议号108
452 处理协议的Account类110
453 Account类如何放置到线程中110
454 处理验证的HttpRequestAccount类112
46 结果测试115
47 消息过滤机制116
48 测试机器人118
481 状态机119
482 状态机基类120
483 状态机管理类120
484 Robot类中的状态机122
49 批量登录测试125
410 总结126
第5章 性能优化与对象池127
51 Visual Studio性能工具127
52 内存中的数据结构131
521 交换型数据结构131
522 刷新型数据结构135
53 gprof137
531 gprof调用堆栈图138
532 让进程安全退出139
533 用gprof工具查看框架141
54 valgrind145
55 对象池150
551 对象池代码分析150
552 使用cmd命令查看对象池154
56 总结155
第6章 搭建ECS框架156
61 一个简单的ECS工程156
611 组件类Component157
612 实体类Entity158
613 系统类System158
614 管理类EntitySystem159
615 测试161
62 基于ECS框架的libserver162
621 通过字符串动态创建类163
622 提供多参变量来创建实例168
623 EntitySystem的工作原理171
63 基于ECS框架的login和robots工程177
631 Account类177
632 动态创建组件或实例178
633 ECS框架下的网络通信185
634 执行效率188
64 YAML文件189
641 YAML编译安装189
642 读取YAML配置文件191
643 合并线程195
65 log4cplus日志197
651 log4cplus的编译安装197
652 配置文件198
653
第1章 网络编程基础1
11 单机游戏与网络游戏的区别1
12 理解IP地址4
13 理解TCP/IP5
14 阻塞式网络编程7
141 工程源代码7
142 服务端代码分析9
143 客户端代码分析13
144 系统差异14
145 网络底层函数说明14
146 小结17
15 非阻塞网络编程17
151 工程源代码18
152 服务端代码分析19
153 客户端代码分析21
154 小结23
16 总结24
第2章 网络IO多路复用25
21 Select网络模型25
211 ::select函数说明25
212 工程源代码27
213 网络基类:Network29
214 NetworkListen分析31
215 Server流程详解35
216 NetworkConnector分析37
217 测试流程详解39
218 ConnectObj分析41
219 Buffer分析42
2110 RecvNetworkBuffer分析44
2111 SendNetworkBuffer分析48
2112 Packet分析50
2113 小结55
22 Epoll网络模型55
221 函数说明56
222 源代码分析57
223 小结60
23 网络协议:protobuf61
231 在Windows下编译使用protobuf62
232 在Linux下编译使用protobuf64
233 使用protobuf定义协议66
24 总结69
第3章 线程、进程以及Actor模型70
31 游戏架构概述70
311 无服务端游戏70
312 单进程CS架构71
313 多进程CS架构71
32 框架瓶颈72
321 滚服游戏72
322 副本游戏73
323 大图分割空间游戏73
33 设计游戏框架74
34 游戏主循环76
35 理解进程和线程77
351 进程是什么77
352 线程是什么78
353 C++标准线程库79
36 Actor模型82
37 游戏框架中的线程84
371 包裹类ThreadObject85
372 线程类Thread85
373 线程管理类ThreadMgr86
374 libserver库与游戏逻辑88
38 Actor对象之间的消息处理机制92
381 消息定义原则93
382 消息队列机制94
39 总结99
第4章 账号登录与验证100
41 登录流程图100
42 制作一个简单的验证接口101
421 Nginx参考配置102
422 php-fpm参考配置103
43 导入PHP登录接口104
431 修改PHP中的数据库配置104
432 导入测试账号105
433 批量生成账号105
44 编码中用到的第三方库106
441 库libcurl106
442 库libjsoncpp107
45 账号验证代码分析108
451 定义登录协议号108
452 处理协议的Account类110
453 Account类如何放置到线程中110
454 处理验证的HttpRequestAccount类112
46 结果测试115
47 消息过滤机制116
48 测试机器人118
481 状态机119
482 状态机基类120
483 状态机管理类120
484 Robot类中的状态机122
49 批量登录测试125
410 总结126
第5章 性能优化与对象池127
51 Visual Studio性能工具127
52 内存中的数据结构131
521 交换型数据结构131
522 刷新型数据结构135
53 gprof137
531 gprof调用堆栈图138
532 让进程安全退出139
533 用gprof工具查看框架141
54 valgrind145
55 对象池150
551 对象池代码分析150
552 使用cmd命令查看对象池154
56 总结155
第6章 搭建ECS框架156
61 一个简单的ECS工程156
611 组件类Component157
612 实体类Entity158
613 系统类System158
614 管理类EntitySystem159
615 测试161
62 基于ECS框架的libserver162
621 通过字符串动态创建类163
622 提供多参变量来创建实例168
623 EntitySystem的工作原理171
63 基于ECS框架的login和robots工程177
631 Account类177
632 动态创建组件或实例178
633 ECS框架下的网络通信185
634 执行效率188
64 YAML文件189
641 YAML编译安装189
642 读取YAML配置文件191
643 合并线程195
65 log4cplus日志197
651 log4cplus的编译安装197
652 配置文件198
653