欢迎光临
免费的PDF电子书下载网站

多人在线游戏架构实战:基于C++的分布式游戏编程 PDF下载

编辑推荐

暂无

内容简介

本书主要讲述大型多人在线游戏开发的框架与编程实战,以实例的形式讲解从零开始制作网络游戏框架的完整过程,让读者了解网络游戏制作中的所有细节。*终得到一个完整的、基于ECS模式的、高效的分布式服务端框架,一个可以登录的客户端以及用于验证网络游戏各个模块功能的自动化测试系统。

全书共12章,从网络游戏的底层网络编程开始,逐步引导读者深入网络游戏开发的各个步骤。通过近50个真实示例、90个流程图,以直观的方式阐述和还原游戏制作的全过程,涵盖网络游戏设计的核心概念和实现:游戏主循环、线程、Actor模式、定时器、对象池、组件编码、架构层的解耦等。

作者简介

暂无

多人在线游戏架构实战:基于C++的分布式游戏编程 PDF下载

目录

前言
第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

前沿

本书主要讲述大型多人在线游戏开发的框架与编程实践,以实际例子来介绍从无到有地制作网络游戏框架的完整过程,让读者了解网络游戏制作中的所有细节,最终我们会得到一个完整的、基于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++的分布式游戏编程 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:多人在线游戏架构实战:基于C++的分布式游戏编程