虚幻引擎应用实例分享(一):安装 & 编译

作者:Dluck
2023-01-13
5 1 0

前言

由 Epic Games 推出的虚幻系列引擎,因其高效、全能、易获取、所见即所得等特性受到广大游戏开发者的欢迎,市面上也不乏从入门到深度分析的教程。本系列主要面向虚幻引擎的初学者以及有一定实践经验的虚幻引擎游戏开发者,分享能够立即运用在自己项目中的实践技巧。本教程综合了个人的学习笔记、官方文档以及个人心得,水平不足之处,望读者反馈和指正。

本文是 UE 应用实例分享系列专栏的第一篇。我想先从如何成为一名虚幻开发者开始讲起。大家接触到游戏引擎的机缘各不相同,像我,最早是从 Gamker 的视频中了解到了游戏开发的故事。今天这篇文章,咱们不妨先讲讲游戏引擎是什么,以及如何安装虚幻引擎。

互联网上的许多教程往往只搬运了 How-To 的过程,却很少对“为什么”做足够简单的解释,导致初学者面对大堆的新概念感到困惑。这也是我想要结合示例来组织内容的目的所在:通过具体实例,来对引擎相对基础的一些部分进行分享,并且确保读者能够理解使用这些概念背后的道理。我会力求将自己已理解的概念完整清晰地分享给各位初学者,诚然,由于本人在游戏行业工作时间也并不久,囿于经验水平不足,如果有疏漏、片面之处,还请大家多多指正。

什么是游戏引擎?

概念:游戏引擎是一组完整子系统的集合,这些子系统几乎不需要做修改就能够被多个游戏重复使用。

游戏引擎的概念来自于 20 世纪 90 年代中期。当时,Id Software 开发的 FPS 游戏 Doom 将游戏系统划分为多个完整的子系统(图形渲染、碰撞检测、音频系统等),开发新作只需要制作新的美术资产、关卡、游戏规则等而无需对其余部分(即游戏引擎)作出修改即可开发出完整的游戏。

按照引擎可以制作的游戏类型,大概可以作以下分类:

  • 可以制作单个游戏:这就是游戏(吃豆人)
  • 可以制作非常相似的游戏:某种特定游戏的引擎(《迅雷赛艇》引擎)
  • 可以用 MOD 方式制作某种类型游戏:现代游戏引擎(虚幻引擎、Unity3D)
  • 可以制作任何游戏:某种大概不可能实现的引擎

数据驱动架构(data-driven architecture)可以用于分辨软件的游戏和引擎两部分。如果制作不同游戏这一部分可以不用怎么修改,这部分就属于游戏引擎;如果这一部分代码在制作其余游戏时很难复用,或是针对某个特定的需要去设计的,那么这一部分不属于引擎。

虚幻引擎

虚幻引擎(英语:Unreal Engine)是由 Epic Games 开发的游戏引擎,现已更新至 5.1.0(UE5)。虚幻引擎完全开源,可以在 Epic 平台下载编译好的二进制版本或前往 Github 下载源码版本自行编译。引擎提供了关卡编辑、逻辑编写、模型/光照/材质等多种工具,使用 C++ 作为编程语言。虚幻引擎是目前大型 3A 游戏使用的主流引擎之一。

简单来讲,引擎是一个工具软件,就像编辑照片我们需要 Photoshop 一样,虚幻引擎提供了一个编辑器(Editor)来帮助我们制作和查看我们的游戏。

虚幻引擎的安装

提示:请虚幻开发者准备好足够的硬盘和内存空间。虚幻引擎的项目和引擎文件夹都十分庞大,很多时候采用了空间换取时间的策略。

从 Epic Games Store 进行安装

这是网络上最推荐的做法,建议初学者先下载商店版本的引擎。以下步骤来自虚幻引擎文档:安装虚幻引擎,为了节约篇幅这里简述步骤。

1. 载 Epic Games Store,注册 Epic 账号。

2. 找到如下页面,点击选择对应的版本安装即可。对于初学者而言建议直接选择最新版本,使用 UE5 开始我们的旅程。

3. 启动引擎。

下载源码自己编译

下载 UE4 源码

1. 准备账号:Github/EpicGames。相信大多数读者都有账号,如果没有,前往对应官网注册即可。

2. 关联账号:点击虚幻引擎官网右上角的个人页面,进入应用与账户 - GITHUB。

3. 加入 EpicGames 组织:根据后续网站给出的指引,一步一步进行授权和验证,最终加入 EpicGames 组织。这一步参考教程:GitHub 上的虚幻引擎,不再赘述。

4. 访问 Git 库并下载:完成后使用自己的 Github 账号就可以访问代码仓库了。可以选择合适的版本下载到本地。

Github 上的虚幻引擎提供了多个分支:

  • 名称为版本号的分支代表已经发布的虚幻引擎稳定版本。
  • release 分支是最新的稳定版本。
  • promoted 更新更快,主要面向美术设计。
  • master 分支更新是实时的,不稳定,但可以看到引擎团队是如何修改引擎的。

编译 UE4 源码版本

1. 下载依赖文件:运行 Setup.bat。这个过程会下载一些需要用到的文件。这一步是必须的,虚幻引擎非常庞大复杂,本身的源码可能不足 1GB,但编译过程中,需要各种依赖文件。等下载完毕后,整个安装文件夹大小就会增加到几十上百 GB。

2. 生成项目需要的临时文件:运行 GenerateProjectFiles.bat 生成项目文件。这一步是为了生成用 Visual Studio 打开项目所需的那些临时文件。

3. 配置和修改解决方案:双击 sln 文件使用 Visual Studio 打开项目(建议使用 VS2022)。修改解决方案配置为 Development Editor,平台选择 Win 64。这里选择 Server 就是服务器,Client 是游戏客户端,而 Editor 则是引擎的编辑器。

4. 编译 UE4 源码:右键 UE4 工程点击 Build 来开始编译。

5. 运行与查看:运行 UE4 的工程来打开引擎,或者去 Binaries 文件夹下寻找引擎的二进制文件 UE4Editor.exe 来直接运行。

Q & A

GenerateProjectFiles.bat 是什么?

理解虚幻引擎的编译系统十分重要,然而不知为何,许多初学者、甚至也包括一些已经参与研发工作的人,都对此不甚了解。

首先,我们需要了解,虚幻引擎并没有使用传统的 C++ 编译方式,而是自己开发了一套编译系统。受篇幅限制,这里无法对其做过多解释,但基本概念很好理解:

虚幻引擎把不同功能包装成了模块,随后以模块为基本单位对所有的源码进行管理。模块封装了一组功能,并提供接口给其他模块引用。模块通过 C# 源文件声明,拓展名为 Build.cs。也就是说,通过编辑对应模块的 Build.cs 文件,我们可以调用其他模块的功能,这就像 C++ 引入头文件一样。

GenerateProjectFiles.bat 做的第一步就是运行 MSBuild 来编译虚幻编译工具(UnrealBuildTool,缩写为 UBT,后文简称 UBT)。UBT 可以识别这些模块文件,并对模块进行编译。随后,会根据 UBT 对所有文件进行扫描的结果,生成对应工程文件。这些工程文件其实就是单纯提供给 Visual Studio 使用的,帮助我们使用 IDE 来打开项目,对代码进行编辑。许多人可能会认为这些工程文件会影响编译,但是请记住,它们的作用只是为了让 Visual Studio 能识别到这些代码文件而已。

为什么我直接编译解决方案失败了?

虚幻引擎生成的解决方案包括五花八门、各种各样的项目工程,其中有许多都是工具程序。对于大多数人,这些工具程序暂时都用不到,而且它们往往也并不总是全部都能通过编译,有一些会依赖当前的开发环境。比如,一个针对 PS4 的工具,在没有安装 PS4 的 SDK 时,当然就没有办法通过编译。

在 Windows 平台下,我们需要关注的工程只有一个,就是 Engine\UE4。如果使用 macOS,还需要先编译 ShaderCompileWorker 工程,完成后再编译 UE4 工程。如果你不想每次都在项目列表右键 UE4 工程,也可以在 VS 修改默认工程,这样点击运行按键,就是默认启动引擎了。

使用源码版本引擎的意义是什么?

根据官方文档,使用源码版本的引擎可以快速掌握以下信息:

  • 你将获得 Epic 工程师每天(实际上是每一分钟)完成的最新功能和漏洞修复。
  • 如果你发现了一个尚未被我们修复,但对你的项目来说影响很大的漏洞,你可以自己在源代码中进行修复并重新生成二进制文件,以便项目能够正常运行。
  • 通过将你的修复工作提交给 Epic,你可以改进引擎并为整个虚幻社区提供帮助。
  • 除了能够更方便地查看 Epic 的开发者的每日工作之外,实际工作中,我发现特定情况下,源码版引擎还至少有以下这些好处:
  • 引擎并不总是完美,也许有一些部分功能并不适合正在开发的项目,我们需要修改引擎来满足当前的开发目标;
  • 团队工作时,我们经常需要在服务器上使用自动化脚本来编译游戏,并不建议手动安装二进制版引擎;
  • 掌握源码是学习引擎很重要的一种方式;
  • 只有从源码才能获取尚未发布的更新。


在大型游戏的开发中,引擎和游戏基本会使用同一代码仓库。不过,在个人学习时,我还是建议先从 EpicGames 下载,可以免去不少起步的麻烦。

参考

[1]: 杰森·格雷戈瑞. 游戏引擎架构. 北京: 电子工业出版社. 2019: 4-7. 
[2]: 虚幻引擎. 维基百科. 2021-9-5.
[3]: 下载 ue4 源码引擎+编译 - 知乎 
[4]: 下载虚幻引擎源代码 | 虚幻引擎文档 
[5]: 从源代码构建虚幻引擎 | 虚幻引擎文档 
[6]: 虚幻引擎编译系统总结 - 知乎 
[7]: 模块. 虚幻引擎文档. 
[8]: UnrealBuildTool | Unreal Engine Documentation


封面:UE 启动页面
*本文内容系作者独立观点,不代表 indienova 立场。未经授权允许,请勿转载。

近期点赞的会员

 分享这篇文章

Dluck 

硬核玩家 / 游戏开发者 / 爱写点文章 / 懂点音乐 

您可能还会对这些文章感兴趣

参与此文章的讨论

暂无关于此文章的评论。

您需要登录或者注册后才能发表评论

登录/注册