UE4基础:搭建开发环境

获取引擎源码

UE4 引擎源码托管在 Github 上,是一个半公开的项目,想要获取代码前必须要先加入到 EpicGames organization 才能看到项目,加入项目需要两个账号,一个是 Github 账号,一个是 UnrealEngine 开发者账号,没有的话需要先去官网注册一下

关联 UnrealEngine 和 Github 账号

  • 打开 UnrealEngine官网 并登录,在页面右上角转到个人页面,如图

    UnrealEnginePersonal.png

  • 在个人页面左边,选择连接的账户菜单,然后选择 GITHUB, 如图

    UnrealAccount_Link.png

  • 在弹出的 Github 授权页面中输入 Github 的账户密码进行登录并授权,如图

    UnrealAccount_Github.png

    UnrealAccount_GithubAuthorize.png

  • 连接成功后,Github的注册邮箱会收到一封邀请邮件,邀请你加入 EpicGames organization,点击 Join @EpicGames 按钮

    UnrealAccount_GithubInvite.png

  • 加入成功后,就可以看到引擎项目了,这时候就可以克隆到本地了,如图

    UnrealAccount_GithubOrgnanization.png

克隆引擎源码

先安装 Github 桌面客户端(用其他的也行,比如 SourceTree 或者 Git,用Github Desktop会简单点)

  • 打开 Github Desktop 客户端并登录,打开 Clone 菜单,如图

    GithubDesktop_Clone.png

  • 在弹出的界面中选择 EpicGames/UnrealEngine,并设置本地路径,点 Clone 按钮并耐心等待克隆完成,如图

    GithubDesktop_CloneSetting.png

下载第三方依赖库

源码克隆完成后,因为引擎依赖的第三方预编译库等等二进制文件并没有一起托管在 Github 上,需要额外下载

打开本地引擎目录,有一个 Setup 文件,Windwos 上是 Setup.bat,Mac 上是 Setup.command,Linux 上是 Setup.sh,直接双击运行会去下载对应平台的库

更新

从 4.22 开始,Setup.bat 默认会下载所有平台的依赖,除非用 -exclude 排除,所以现在可以直接运行 Setup 脚本了,不需要额外的修改

旧版本引擎

  • Setup 只会去下载对应平台的库,比如在 Windows 上执行就只下载 Win32/Win64 的库,但是一般我们的游戏都是多平台运行的,所以最好全部都下全了,否则就出不了其他平台的包

  • 新建一个 MySetup.bat,内容如下,Setup.command/Setup.sh 同理

    1
    2
    3
    4
    5
    6
    7
    @echo off

    rem -include=平台名 这个命令是用来指定包含对应的平台库
    rem -exclude=平台名 这个命令是用来指定排除对应的平台库
    rem 所有平台名称 Win32 Win64 Mac Android Linux

    Setup.bat -include=Android -include=Mac -include=Linux
  • 然后双击运行 MySetup.bat,耐心等待所有文件下载完成

  • 所有依赖文件下载完成后,会自动运行 Engine/Extras/Redist/en-us/UE4PrereqSetup_x64.exe 安装依赖项。
    一般 Setup.bat 都只是版本机上运行即可,运行完后将所有依赖都提交到库里,所以其他人拉下项目库之后,需要自己手动运行一下这个 UE4PrereqSetup_x64.exe

生成引擎工程

在生成引擎工程之前,需要确保自己已经安装了 Visual Studio 或者 xcode,Windows 上推荐 Visual Studio 2017

到引擎根目录下,执行 GenerateProjectFiles.bat(GenerateProjectFiles.command for Mac, GenerateProjectFiles.sh for Linux),成功后会在同目录下生成 UE4.sln 工程文件,双击打开并编译,成功后就会在 Engine\Binaries\Win64 目录下生成引擎可执行文件

其它项目相关的Tips

项目工程目录结构

新建一个游戏项目,UE4 的每个项目都有一个 *.uproject 描述文件,这个文件中主要记载了项目的模块,各个插件的开关情况等信息,还有一个字段,EngineAssociation,这个字段描述当前工程使用的引擎版本,如图所示

UProject_EngineAssociation.png

如果使用的是 EpicLauncher 上下载的引擎创建的工程,这里的值就是 4.18, 4.20 等固定的字段,如果是使用自己源码编出来的引擎,这里的字段就是一个 GUID,这个 GUID 是在自己本机上随机生成的全球唯一标识符,并且会写到系统注册表里,如图

UProject_Regist.png

这里就会遇到一个问题,当美术、策划这些非程序人员拉下来项目库之后,双击运行 uproject 文件打开工程,这时候因为自己的本地没有 {933A9399-4400-D439-4C61-289C6AC29FBC} 这个 GUID 所对应的引擎,就会弹出一个错误提示框,提示引擎版本错误,需要重新编译工程。

所以,美术和策划要想正常打开项目,就得先右键 uproject,选择 Switch Engine Version,如图

UProject_SwitchEngineVersion.png

选择自己本地的引擎来打开项目,这个操作虽然可以打开工程,但是会修改本地的 uproject 文件中的 EngineAssociation 字段,导致和库里的文件有差异,如果不小心提交到库里,就会污染版本库,导致其他人那边需要重新生成,或者当程序员开关某个插件也会导致 uproject 文件更新,这时候程序员将这个文件提交到库里,美术和策划更新之后又得重新执行 Switch Engine Version 操作,比较繁琐

解决方法

要解决以上问题,可以将工程项目文件夹放到引擎目录中(子目录中亦可),如图

UProject_Folder.png

然后执行 GenerateProjectFiles.bat 生成 UE4.sln,打开 UE4.sln 之后,会发现我们自己的工程项目被引擎正确的识别到了,并引入到同一个工程里了(只有在根目录里才会生成到UE4.sln,子目录里不会),如图

UProject_UE4Sln.png

这时候,就可以打开 uproject 文件,将 EngineAssociation 字段置空并提交到库里,如图

UProject_EngineAssociation1.png

这样,不管在哪台机器上双击运行 uproject 文件,因为 EngineAssociation 字段是空的,所以就会向上查找 uproject 文件所在目录的上级目录,直到找到一个引擎来打开工程

使用这个目录结构,所有人都可以开心地工作了,再也不用担心 uproject 文件冲突了!

Perforce Streams

简单说,Perforce Streams 是 Perfroce 提供的轻量级分支开发模型,它的分支非常类似和接近 Git 的分支模型,相对于 Perforce 老的分支模型和 SVN 的分支来说,Perforce Streams 和 Git 都是非常轻量的,可以很轻松实现主线分支,开发分支,版本分支,hotfix分支等等分支类型,可以自动进行分支间的合并,还可以设置相应过滤规则,方便控制哪些合哪些不合,甚至粒度可以小到对具体的一个开发需求创建一个分支

总而言之,Perforce Streams 非常适合管理大型游戏项目的开发和维护,具体内容可去 Perforce 官网查看,这里有一篇简介 Streams: The Big Picture

其他链接