开发工作流程#
以下是关于如何在使用 AirSim 时执行不同开发活动的指南。如果您是虚幻引擎项目的新手,并希望为 AirSim 贡献代码或为您的自定义需求创建自己的分支,这可能会为您节省一些时间。
开发环境#
操作系统#
我们强烈建议将 Windows 10 和 Visual Studio 2019 作为您的开发环境。遗憾的是,虚幻引擎对其他操作系统和 IDE 的支持不够成熟,您可能会因尝试各种变通方法和解决复杂问题而严重降低生产力。
硬件#
我们建议使用 NVidia 1080 或 NVidia Titan 系列 GPU,搭配强大的台式机,例如配备 64GB 内存、6 核以上 CPU、SSD 和 2-3 个显示器(最好是 4K)。我们发现 HP Z840 非常适合我们的需求。高端笔记本电脑的开发体验通常不如强大的台式机,但它们在紧急情况下可能有用。您通常需要配备独立 NVidia GPU(至少 M2000 或更好)、64GB 内存、SSD 和最好是 4K 显示器的笔记本电脑。我们发现 Lenovo P50 等型号非常适合我们的需求。只有集成显卡的笔记本电脑可能无法正常工作。
更新和修改 AirSim 代码#
概述#
AirSim 被设计为插件。这意味着它无法独立运行,您需要将其放入 Unreal 项目(我们称之为“环境”)中。因此,构建和测试 AirSim 有两个步骤:(1) 构建插件 (2) 在 Unreal 项目中部署插件并运行项目。
第一步通过 AirSim 根目录中的 build.cmd 完成。此命令将更新 Unreal\Plugins
文件夹中插件所需的所有内容。因此,要部署插件,您只需将 Unreal\Plugins
文件夹复制到您的 Unreal 项目文件夹中。接下来,您应该删除 Unreal 项目中的所有中间文件,然后为您的 Unreal 项目重新生成 .sln 文件。为此,我们在 Unreal\Environments\Blocks
文件夹中有两个方便的 .bat 文件:clean.bat
和 GenerateProjectFiles.bat
。因此,只需从 Unreal 项目的根目录按顺序运行这些 bat 文件。现在您就可以在 Visual Studio 中打开新的 .sln 并按 F5 运行它了。
步骤#
以下是我们修改 AirSim 并进行测试的步骤。在 AirSim 代码中进行开发的最佳方式是使用 Blocks 项目。这是一个轻量级项目,因此编译时间相对较快。通常的工作流程是:
REM //Use x64 Native Tools Command Prompt for VS 2019
REM //Navigate to AirSim repo folder
git pull
build.cmd
cd Unreal\Environments\Blocks
update_from_git.bat
start Blocks.sln
上述命令首先构建 AirSim 插件,然后使用方便的 update_from_git.bat
将其部署到 Blocks 项目。现在您可以在 Visual Studio 解决方案中工作,修改代码并按 F5 来构建、运行和测试您的更改。调试、断点等应该像往常一样工作。
完成代码更改后,您可能希望将更改推送到 AirSim 仓库或您自己的分支,或者将新插件部署到您的自定义 Unreal 项目。为此,请返回命令行并首先更新 AirSim 仓库文件夹
REM //Use x64 Native Tools Command Prompt for VS 2019
REM //run this from Unreal\Environments\Blocks
update_to_git.bat
build.cmd
上述命令将您的代码更改从 Unreal 项目文件夹传输回 Unreal\Plugins
文件夹。现在您的更改已准备好推送到 AirSim 仓库或您自己的分支。您还可以将 Unreal\Plugins
复制到您的自定义 Unreal 引擎项目中,并查看您的自定义项目是否一切正常。
总结#
一旦您理解了虚幻构建系统和插件模型的工作原理以及我们执行上述步骤的原因,您就应该会非常轻松地遵循此工作流程。不要害怕打开 .bat 文件查看其内部操作。它们非常简单明了(当然,除了 build.cmd - 不要看那个)。
常见问题#
我在 Blocks 项目中修改了代码,但它不工作。#
当您在 Visual Studio 中按 F5 或 F6 开始构建时,虚幻构建系统会启动并尝试找出是否有任何文件已更改以及需要构建哪些文件。不幸的是,它通常无法识别那些不使用虚幻头文件和对象层次结构的代码中的更改文件。因此,诀窍是修改一些虚幻构建系统总是能识别的文件。我最喜欢的是 AirSimGameMode.cpp。只需插入一行,删除它并保存文件即可。
我在 Visual Studio 外部修改了代码,但它不工作。#
不要那样做!虚幻构建系统**假设**您正在使用 Visual Studio,并且它会做很多事情来与 Visual Studio 集成。如果您确实坚持使用其他编辑器,那么请查找如何在 Unreal 项目中进行命令行构建,或者查看您的编辑器文档以了解如何与 Unreal 构建系统集成,或者运行 clean.bat
+ GenerateProjectFiles.bat
以确保 VS 解决方案同步。
我正在尝试在 Unreal 项目中添加新文件,但它不工作。#
它不会!虽然您确实在使用 Visual Studio 解决方案,但请记住此解决方案实际上是由 Unreal 构建系统生成的。如果您想在项目中添加新文件,请先关闭 Visual Studio,在所需位置添加一个空文件,然后运行 GenerateProjectFiles.bat
,它将扫描项目中的所有文件,然后重新创建 .sln 文件。现在打开这个新的 .sln 文件,您就可以开始工作了。
我复制了 Unreal\Plugins 文件夹,但在 Unreal 项目中没有任何变化。#
首先确保您的项目的 .uproject 文件引用了该插件。然后确保您已按上面概述中描述的运行了 clean.bat
和 GenerateProjectFiles.bat
。
我有多个带有 AirSim 插件的 Unreal 项目。如何轻松更新它们?#
您很幸运!我们有 build_all_ue_projects.bat
,它正是做这个的。不要把它当作黑箱(至少现在不要),打开它看看它做了什么。它有 4 个变量是从命令行参数设置的。如果未提供这些参数,它们将在下一组语句中设置为默认值。您可能需要更改路径的默认值。这个批处理文件会构建 AirSim 插件,将其部署到所有列出的项目(请参阅批处理文件中稍后的 CALL 语句),为这些项目运行打包并将最终二进制文件放入指定的文件夹 - 所有这些都在一个步骤中完成!这就是我们用来创建自己的二进制版本的方式。
我如何为 AirSim 贡献代码?#
在进行任何更改之前,请确保您已经创建了您的功能分支。在 Blocks 环境中测试您的代码更改后,请遵循 常规步骤 来贡献代码,就像任何其他 GitHub 项目一样。请使用 rebase 和 squash 合并,有关更多信息,请参阅 Git 合并和 rebase 简介:它们是什么以及如何使用它们。