(仓发) 多人在线游戏架构实战:基于C++的分布式游戏编程/机械工业出版社/彭放/9787111667926
¥109.00
| 运费: | ¥ 6.00-20.00 |
| 库存: | 10 件 |
商品详情
内页插图
编辑推荐
《多人在线游戏架构实战:基于C++的分布式游戏编程》特点:
从网络游戏的底层编码开始,深入讲解游戏开发的详细步骤、游戏主循环、线程的使用、Actor模式的应用等。
以直观的方式阐述和还原游戏制作的全过程,全面介绍游戏编码过程中众多的核心概念和具体实现,如定时器、对象池、组件编码、架构层的解耦等。
使用C++来实现游戏的架构,读者也可以举一反三,使用其他的编程语言轻松实现游戏开发目标。
客户端采用Unity引擎。
内容简介
《多人在线游戏架构实战:基于C++的分布式游戏编程》主要讲述大型多人在线游戏开发的框架与编程实践,以实际例子来介绍从无到有地制作网络游戏框架的完整过程,让读者了解网络游戏制作中的所有细节。
全书共12章,从网络游戏的底层网络编程开始,逐步引导读者学习网络游戏开发的各个步骤。
《多人在线游戏架构实战:基于C++的分布式游戏编程》通过近50个真实示例、近80个流程图,以直观的方式阐述和还原游戏制作的全过程,涵盖了网络游戏设计的核心概念和实现,包括游戏主循环、线程、Actor模式、定时器、对象池、组件编码、架构层的解耦等。
《多人在线游戏架构实战:基于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
前言
本书主要讲述大型多人在线游戏开发的框架与编程实践,以实际例子来介绍从无到有地制作网络游戏框架的完整过程,让读者了解网络游戏制作中的所有细节,最终我们会得到一个完整的、基于ECS(Entity Component System,实体组件系统)模式的、高效的分布式服务端框架,一个可以登录的客户端,以及一个用于测试的机器人工程。本书为读者呈现了近50个真实示例,提供了近80个流程图,以直观的方式还原游戏制作的过程,同时阐述在这些示例中运用的编程技巧、数据结构以及所采用的主流设计模式。
笔者从事游戏开发工作十余年,经历了从PC端游、网页游戏到手机游戏3个重要的游戏发展阶段。从行业知名大公司到创业团队,笔者曾就职于数个多元化的游戏制作团队,参与研发过多种类型的游戏,其间积累了相当丰富的游戏编程经验,本书就是总结这些经验编写而成的。
不同于其他的游戏编程图书,本书不使用伪代码,而是给出游戏制作中的具体实现。
本书致力于向游戏开发编程人员、学生或对游戏编程有兴趣的读者提供一整套游戏开发的基础框架——一种多进程、多线程、高效的分布式服务端解决方案,在这个基础框架之上,我们可以快速开发游戏业务逻辑。同时,本书的源代码库中提供了一套易于开发的、少耦合的客户端框架,用于验证分布式框架的功能。
本书讲解的是网络游戏框架,定位为多人在线游戏体系,这类游戏的特点是数以万计的玩家同时在游戏世界中,游戏互动性很高。对多人在线游戏进行细分,其中两个大的分类为MMO(Massively Multiplayer Online,大型多人在线)游戏和MOBA(Multiplayer Online Battle Arena,多人在线竞技类)游戏。如今,MMO和MOBA游戏基本占据了游戏市场的半壁江山。
常见的MMO游戏是MMORPG(Massively Multiplayer Online Role-Playing Game,大型多人在线角色扮演游戏),代表作有《魔兽世界》,其玩法是玩家登录一个虚拟的游戏世界,进行任务、道具、交易等一系列交互操作。
大家熟悉的MOBA游戏有《英雄联盟》《王者荣耀》等,其玩法是玩家之间的竞技操作。
这两类游戏都是游戏中比较复杂的类型,也是本书中框架设计的目标类型。但不要被吓到,本书不但适合有经验的游戏行业从业人员学习,同样适合新手学习。如果读者有游戏行业从业的经验,那么应该了解游戏工作室的法则,即为了加快开发进度,游戏从业人员总是被固定在某一个领域或者某一系统开发中,例如游戏技能开发、AI功能开发。越是大公司,越遵循这条法则,因此游戏从业人员不得不根据策划提出来的需求,花大量的时间在某一区域中增加功能、修改Bug,从而忽视了游戏的整体框架。又或许出于代码安全考虑,公司不得不对一些员工屏蔽核心的功能,使得一线的游戏编程人员在整体框架上的知识储备总是缺少一环。
本书通过实战的方式向读者展示如何搭建一个既适合MMO又适合MOBA的基本游戏框架。虽然这两类游戏在逻辑上大相径庭,但在架构的时候仍有相通之处。
如果读者要了解本书最终的成果,可以预览介绍视频,笔者将介绍视频的地址放在了源代码目录中。
本书组织结构
本书共12章,各章内容介绍如下:
第1、2章主要介绍网络编程。网络编程是网络游戏的核心,毫不夸张地说,网络游戏是一种建立在协议之上的软件。由于系统底层不同,因此示例中会同时介绍基于Windows系统与基于Linux系统的不同网络编程模型。第2章会引入Google公司开发的第三方protobuf库来定义网络协议的内容,该库是目前常用的协议工具。
第3章讲解进程和线程,它们是构成后续逻辑的基础知识。同时,引入Actor模型并介绍该模型的使用方法。为了充分了解这些知识点,第4章给出了一个登录示例。在这一章中,我们的高性能服务框架会有一个基本雏形——由几个多线程的进程组成,可以自由地扩展进程,能均衡服务端的性能。这里需要澄清一个概念,本书所说的服务端并不一定是指物理机,可能是几台物理机,也可能是一台物理机上的几个进程相互协作的系统。
第5章讲解性能优化与对象池。在开始更复杂的编码之前,有必要对框架的性能做一次检查。在这一章中介绍Windows和Linux下的性能检查工具。在检查的过程中会引入一些提升性能的常用缓存数据结构和对象池来提升整体框架的效率。
第6章搭建ECS框架。我们要在旧的框架体系上做一些改动,引入ECS模式。在这一章中将详细介绍什么是ECS、它有什么特点以及如何让它在多线程上无冲突地运行。在此基础之上,第7章引入MySQL数据库,存储功能是游戏中的基础功能之一。
第8章深入学习组件式编程,基于ECS的思路,将抛弃面向对象的编程,真正转向组件式编程。为了便于读者理解,在这一章中制作了非常多的流程图,以梳理组件与框架是如何配合工作的。ECS和Actor模型的结合会让框架变得异常灵活。其表现在于,框架可以随时合并成一个进程以方便在开发阶段进行测试,也可以随着发布的需求变更为无数个进程,以便在必要时部署到多个物理机上。
基本框架搭建完成之后,第9~12章都是上层应用。在这几章中给出了分布式登录方案、跳转方案,还引入了内存数据库Re




编辑推荐
《多人在线游戏架构实战:基于C++的分布式游戏编程》特点:
从网络游戏的底层编码开始,深入讲解游戏开发的详细步骤、游戏主循环、线程的使用、Actor模式的应用等。
以直观的方式阐述和还原游戏制作的全过程,全面介绍游戏编码过程中众多的核心概念和具体实现,如定时器、对象池、组件编码、架构层的解耦等。
使用C++来实现游戏的架构,读者也可以举一反三,使用其他的编程语言轻松实现游戏开发目标。
客户端采用Unity引擎。
内容简介
《多人在线游戏架构实战:基于C++的分布式游戏编程》主要讲述大型多人在线游戏开发的框架与编程实践,以实际例子来介绍从无到有地制作网络游戏框架的完整过程,让读者了解网络游戏制作中的所有细节。
全书共12章,从网络游戏的底层网络编程开始,逐步引导读者学习网络游戏开发的各个步骤。
《多人在线游戏架构实战:基于C++的分布式游戏编程》通过近50个真实示例、近80个流程图,以直观的方式阐述和还原游戏制作的全过程,涵盖了网络游戏设计的核心概念和实现,包括游戏主循环、线程、Actor模式、定时器、对象池、组件编码、架构层的解耦等。
《多人在线游戏架构实战:基于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
前言
本书主要讲述大型多人在线游戏开发的框架与编程实践,以实际例子来介绍从无到有地制作网络游戏框架的完整过程,让读者了解网络游戏制作中的所有细节,最终我们会得到一个完整的、基于ECS(Entity Component System,实体组件系统)模式的、高效的分布式服务端框架,一个可以登录的客户端,以及一个用于测试的机器人工程。本书为读者呈现了近50个真实示例,提供了近80个流程图,以直观的方式还原游戏制作的过程,同时阐述在这些示例中运用的编程技巧、数据结构以及所采用的主流设计模式。
笔者从事游戏开发工作十余年,经历了从PC端游、网页游戏到手机游戏3个重要的游戏发展阶段。从行业知名大公司到创业团队,笔者曾就职于数个多元化的游戏制作团队,参与研发过多种类型的游戏,其间积累了相当丰富的游戏编程经验,本书就是总结这些经验编写而成的。
不同于其他的游戏编程图书,本书不使用伪代码,而是给出游戏制作中的具体实现。
本书致力于向游戏开发编程人员、学生或对游戏编程有兴趣的读者提供一整套游戏开发的基础框架——一种多进程、多线程、高效的分布式服务端解决方案,在这个基础框架之上,我们可以快速开发游戏业务逻辑。同时,本书的源代码库中提供了一套易于开发的、少耦合的客户端框架,用于验证分布式框架的功能。
本书讲解的是网络游戏框架,定位为多人在线游戏体系,这类游戏的特点是数以万计的玩家同时在游戏世界中,游戏互动性很高。对多人在线游戏进行细分,其中两个大的分类为MMO(Massively Multiplayer Online,大型多人在线)游戏和MOBA(Multiplayer Online Battle Arena,多人在线竞技类)游戏。如今,MMO和MOBA游戏基本占据了游戏市场的半壁江山。
常见的MMO游戏是MMORPG(Massively Multiplayer Online Role-Playing Game,大型多人在线角色扮演游戏),代表作有《魔兽世界》,其玩法是玩家登录一个虚拟的游戏世界,进行任务、道具、交易等一系列交互操作。
大家熟悉的MOBA游戏有《英雄联盟》《王者荣耀》等,其玩法是玩家之间的竞技操作。
这两类游戏都是游戏中比较复杂的类型,也是本书中框架设计的目标类型。但不要被吓到,本书不但适合有经验的游戏行业从业人员学习,同样适合新手学习。如果读者有游戏行业从业的经验,那么应该了解游戏工作室的法则,即为了加快开发进度,游戏从业人员总是被固定在某一个领域或者某一系统开发中,例如游戏技能开发、AI功能开发。越是大公司,越遵循这条法则,因此游戏从业人员不得不根据策划提出来的需求,花大量的时间在某一区域中增加功能、修改Bug,从而忽视了游戏的整体框架。又或许出于代码安全考虑,公司不得不对一些员工屏蔽核心的功能,使得一线的游戏编程人员在整体框架上的知识储备总是缺少一环。
本书通过实战的方式向读者展示如何搭建一个既适合MMO又适合MOBA的基本游戏框架。虽然这两类游戏在逻辑上大相径庭,但在架构的时候仍有相通之处。
如果读者要了解本书最终的成果,可以预览介绍视频,笔者将介绍视频的地址放在了源代码目录中。
本书组织结构
本书共12章,各章内容介绍如下:
第1、2章主要介绍网络编程。网络编程是网络游戏的核心,毫不夸张地说,网络游戏是一种建立在协议之上的软件。由于系统底层不同,因此示例中会同时介绍基于Windows系统与基于Linux系统的不同网络编程模型。第2章会引入Google公司开发的第三方protobuf库来定义网络协议的内容,该库是目前常用的协议工具。
第3章讲解进程和线程,它们是构成后续逻辑的基础知识。同时,引入Actor模型并介绍该模型的使用方法。为了充分了解这些知识点,第4章给出了一个登录示例。在这一章中,我们的高性能服务框架会有一个基本雏形——由几个多线程的进程组成,可以自由地扩展进程,能均衡服务端的性能。这里需要澄清一个概念,本书所说的服务端并不一定是指物理机,可能是几台物理机,也可能是一台物理机上的几个进程相互协作的系统。
第5章讲解性能优化与对象池。在开始更复杂的编码之前,有必要对框架的性能做一次检查。在这一章中介绍Windows和Linux下的性能检查工具。在检查的过程中会引入一些提升性能的常用缓存数据结构和对象池来提升整体框架的效率。
第6章搭建ECS框架。我们要在旧的框架体系上做一些改动,引入ECS模式。在这一章中将详细介绍什么是ECS、它有什么特点以及如何让它在多线程上无冲突地运行。在此基础之上,第7章引入MySQL数据库,存储功能是游戏中的基础功能之一。
第8章深入学习组件式编程,基于ECS的思路,将抛弃面向对象的编程,真正转向组件式编程。为了便于读者理解,在这一章中制作了非常多的流程图,以梳理组件与框架是如何配合工作的。ECS和Actor模型的结合会让框架变得异常灵活。其表现在于,框架可以随时合并成一个进程以方便在开发阶段进行测试,也可以随着发布的需求变更为无数个进程,以便在必要时部署到多个物理机上。
基本框架搭建完成之后,第9~12章都是上层应用。在这几章中给出了分布式登录方案、跳转方案,还引入了内存数据库Re
- 广州购书中心
- 广州购书中心——你我的城市文化生活中心
- 扫描二维码,访问我们的微信店铺