Skip to content

Latest commit

 

History

History
129 lines (72 loc) · 9.56 KB

File metadata and controls

129 lines (72 loc) · 9.56 KB

零、前言

虽然现在有很多语言被用来开发游戏,但是 C++ 仍然是专业开发的标准。绝大多数库、引擎和工具链仍然是严格用 C++ 开发的。以其性能和可靠性而闻名,C++ 仍然是真正跨平台兼容性的最佳选择。

拿起这本书,你就开始了掌握这门强大语言的旅程。虽然旅程会很长,但会充满发现!即使在我花了无数个小时与 C++ 打交道之后,我仍然发现自己对发现新的技术和方法充满了喜悦。在这本书里,我想给你一些工具和理解,让你为继续这个学习旅程做好准备。虽然新的和华而不实的工具和引擎会出现,也可能会出现,但对游戏、它们的工具和引擎是如何在低水平开发的有很强的理解,将为你提供宝贵的知识,你可以一直依靠。

这本书是给谁的

本书面向中级到高级的 C++ 游戏开发人员,他们希望将自己的技能提升到一个新的水平,并学习 3D 游戏开发的深层概念。读者将学习 AAA 级游戏开发中使用的关键概念。高级主题,如库创建、人工智能、着色器技术、高级效果和照明、工具创建、物理、网络和其他关键游戏系统,将在整个旅程中涵盖。

这本书涵盖了什么

第 1 章C++ for Game Development,涵盖了现代游戏开发中使用的一些更高级的 c++ 主题。我们将研究继承和多态、指针、引用以及常见的 STL 通用容器。用类、函数和变量模板模板化和构建通用代码的概念。类型推断和新的语言关键字 auto 和 decltype,以及它们与新的返回值语法的结合使用。最后,我们将通过查看今天使用的一些核心游戏模式来结束这一章。

第二章了解库,将讲授共享库的进阶话题。我们将看看可用的不同类型的库。我们将介绍创建自己的共享库的各种方法。

第三章建立强大的基础,将会看看使用面向对象编程和多态为你所有的游戏项目创建一个可重用结构的不同方法。我们将通过真实代码中的例子来介绍助手、管理器和接口类的区别。

第 4 章构建素材管道,将涵盖开发中非常重要的一部分,即素材的处理。我们将了解导入、处理和管理内容(如声音、图像和 3D 对象)的过程。有了这个基础系统,我们可以继续完善游戏开发所需的其他系统。

第五章构建游戏系统,将覆盖大量领域,在开发专业级项目所需的核心游戏系统方面取得强劲进展。到本章结束时,我们将拥有自己的自定义游戏状态系统,游戏引擎本身的许多其他组件都可以采用该系统。我们将开发自己的定制相机系统,同时建立对相机如何在较低水平上工作的理解。最后,我们将看看如何通过在示例引擎中添加子弹物理引擎来将完整的第三方游戏系统添加到我们的项目中。

第 6 章创建图形用户界面,将讨论创建图形用户界面所需的不同方面。我们将详细介绍它的实现,深入探讨工作图形用户界面背后的核心架构。我们将开发一个面板和一个元素架构,包括控制定位的锚点。我们将使用观察者设计模式实现一个用户输入结构,并通过对在屏幕上显示图形用户界面元素所需的渲染管道进行编码来完善它。

第 7 章高级渲染,将涵盖使用着色器的基础知识。我们将学习如何构建编译器和链接抽象层来节省时间。我们将获得关于照明技术理论的知识,以及如何用着色器语言实现它们。最后,我们将通过查看着色器的其他用途来结束这一章,例如创建粒子效果。

第 8 章高级游戏系统将深入探讨如何在游戏项目中加入脚本语言,比如 Lua。然后,我们将在这些知识的基础上检查在示例引擎中实现对话和任务系统的方法。

第九章人工智能,将在短时间内覆盖一个大的研究领域。我们将开发一个游戏人工智能到底是什么的基本定义,就此而言,它不是什么。我们还将考虑通过包含人工智能技术来扩展决策功能。我们将介绍如何通过使用转向力和行为来控制人工智能代理的移动。最后,我们将通过查看寻路算法的使用来为我们的人工智能代理创建从点到点的路径来结束这一章。

第 10 章多人游戏,将在理解多人游戏如何在低水平上实现方面迈出一大步。您将了解 TCP/IP 堆栈以及用于游戏开发的不同网络拓扑。我们研究了使用 UDP 和 TCP 协议在客户机-服务器设置中传递数据。最后,我们将看看开发人员开始实现多人游戏功能时面临的一些问题。

第十一章虚拟现实,将快速介绍 VR 发展的世界;它应该为你的体验想法提供一个很好的测试平台。您将学习如何处理多视图截头体和各种硬件选项,最后看看我们如何使用 OpenVR SDK 向示例引擎添加 VR 支持。

充分利用这本书

这本书将假设一些先前的 C++ 知识。对游戏开发有基本的了解。一般来说,会在整本书中帮助你,但不应该被认为是先决条件。

为了充分利用示例和开发经验,建议您使用相对较新的开发设备,该设备至少具备以下功能:

  • CPU : 4 色
  • 内存 : 8 GB 内存
  • 磁盘空间 : 40 GB

这些例子(除了少数例外)是为在苹果电脑和视窗电脑上运行而设计的。

接下来,您应该安装以下软件:

  • PC : Visual Studio 2015 社区或更好
  • macOS : XCode 8.x 或更好。

其他需要的软件将根据需要进行描述。

下载示例代码文件

你可以从你在www.packtpub.com的账户下载这本书的示例代码文件。如果您在其他地方购买了这本书,您可以访问www.packtpub.com/support并注册将文件直接通过电子邮件发送给您。

您可以按照以下步骤下载代码文件:

  1. 登录或注册www.packtpub.com
  2. 选择“支持”选项卡。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书的名称,并按照屏幕上的说明进行操作。

下载文件后,请确保使用最新版本的解压缩文件夹:

  • 视窗系统的 WinRAR/7-Zip
  • zipeg/izp/un ARX for MAC
  • 适用于 Linux 的 7-Zip/PeaZip

这本书的代码包也托管在 GitHub 上https://GitHub . com/packt publishing/Mastering-Cpp-Game-Development。我们还有来自丰富的书籍和视频目录的其他代码包,可在获得。看看他们!

下载彩色图像

我们还提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。你可以从https://www . packtpub . com/sites/default/files/downloads/masteringppgamepdevelopment _ color images . pdf下载。

使用的约定

本书通篇使用了许多文本约定。

CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟网址、用户输入和推特句柄。这里有一个例子:“唯一的问题是它将包括所有的ConsoleHelper库。”

代码块设置如下:

int m_numberOfPlayers; 

void RunScripts(){} 

class GameObject {}; 

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

int m_numberOfPlayers; 

void RunScripts(){} 

class GameObject {}; 

任何命令行输入或输出都编写如下:

cl /c hello.cpp

粗体:表示一个新的术语、一个重要的单词或者你在屏幕上看到的单词。例如,菜单或对话框中的单词像这样出现在文本中。下面是一个例子:“当出现 VS2105 时,选择开发人员命令提示符。”

Warnings or important notes appear like this. Tips and tricks appear like this.

取得联系

我们随时欢迎读者的反馈。

综合反馈:发邮件[email protected]并在邮件主题中提及书名。如果您对本书的任何方面有疑问,请发电子邮件至[email protected]

勘误表:虽然我们已经尽了最大的努力来保证内容的准确性,但是错误还是会发生。如果你在这本书里发现了一个错误,如果你能向我们报告,我们将不胜感激。请访问www.packtpub.com/submit-errata,选择您的图书,点击勘误表提交链接,并输入详细信息。

盗版:如果您在互联网上遇到任何形式的我们作品的非法拷贝,如果您能提供我们的位置地址或网站名称,我们将不胜感激。请通过[email protected]联系我们,并提供材料链接。

如果你有兴趣成为一名作者:如果有一个你有专长的话题,你有兴趣写或者投稿一本书,请访问authors.packtpub.com

复习

请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在的读者可以看到并使用您不带偏见的意见来做出购买决定,我们在 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们的书的反馈。谢谢大家!

更多关于 Packt 的信息,请访问packtpub.com