亚马逊AWS官方博客
专为构建者打造:AWS 和开放式 3D 引擎的故事 — 开发人员预览
我们从游戏和模拟开发人员那里听说,他们想要更多的选项,以便在生产管道中进行协作、自定义和创造性控制。从头开始构建 3D 工具成本高昂,需要数年的开发时间,并需要大量的资源来维护。这些开发人员最终要么将关键资金花费在重复做别人或者自己已经做过的事情上,要么只好使用难以定制的专有解决方案。
为了解决其中一些挑战,我们在 2016 年推出了 Lumberyard 游戏引擎。Lumberyard 提供了完全免费(无特许权使用费或席位许可证)、源代码可用的实时 3D 开发引擎,以便通过云集成进行快速构建、部署和扩展。过去 5 年中,我们不断地为客户改进产品。我们构建了功能强大的组件实体系统和备受欢迎的 Script Canvas 可视化脚本引擎。我们还收购了 Emotion FX 动画编辑器,创建了模块化 Gem 系统,并实施了许多 Twitch 和 AWS 集成。但有一件事从未改变,那就是我们的使命:为所有人提供世界一流的免费 3D 渲染工具。现在,我们要更进一步。
开源之旅
当开始构建 Lumberyard 的后继产品时,我们意识到我们可以做更多事情。如果最终目标是创新,则我们希望使游戏和模拟开发人员能够在开放的社群中与我们并肩合作,这样他们就可以访问技术,为技术做出贡献并推动技术发展。这就是 Linux Foundation 宣布成立 Open 3D Foundation 的原因,AWS 借助开放式 3D 引擎 (O3DE) 为该基金会提供支持。O3DE 是一款支持构建 AAA 级游戏的跨平台开源游戏引擎。作为开源社群的一部分,O3DE 可以提供开发人员实现实时 3D 环境所需的所有工具来扩展游戏和模拟的 3D 开发。该引擎在 Apache 2.0 许可证下授权使用,因此,任何人都可以构建和保留自己的智力资产,并选择回馈项目。
我们花了一年多时间来招募合作伙伴,这些合作伙伴拥有相应的资源和专业知识,最重要的是,他们有动力培养自维护社群。我们与 Linux Foundation 合作,将其作为我们值得信赖的专家开源组织机构,因为它是全球管理大型开源项目最好的机构之一。Linux Foundation 可以提供如此大规模开源项目所需的专家管理水平。我们很高兴能够得到众多合作伙伴的支持,他们与我们一样大力支持为游戏和模拟开发人员提供的选择。这些合作伙伴包括:Accelbyte、Adobe、Apocalypse Studios、Audiokinetic、Backtrace.io、Carbonated、Futurewei、GAMEPOCH、Genvid Technologies、Hadean、Huawei、HERE Technologies、Intel、International Game Developers Association、Kythera AI、Niantic、Open Robotics、PopcornFX、Red Hat、Rochester Institute of Technology、SideFX、Tafi、TLM Partners 和 Wargaming。与成熟的开源基金会合作还意味着打造平衡的生态系统,推动双方共同取得成功。这将产生飞轮效应,影响开源社群的方向和创新以及构建产品的合作伙伴和项目开发人员。最终,这种协作会推动更新的创新。这种模式让我们持续将工作重点放在客户对 Amazon 和 AWS 的期望上,包括大规模支持、云渲染、云中的工作室以及引擎本身的许多原生功能等创新。
那么发生了什么变化? 这是使用开源许可证的 Lumberyard 吗?
简单来说,有很多变化! 没错,它是开源引擎,根据宽松的 Apache 2.0 许可证授予许可。但是,O3DE 与之前的 Lumberyard 截然不同。我们在很大程度上依赖构建 Lumberyard 的经验,迭代和改进了 O3DE,以实现最终的协作和创造性控制。我们保留了客户最喜欢的 Lumberyard 相关部分,并对其余部分进行了重大修改。我们的目标是构建一款能够在开源环境中经受住时间考验的引擎。由于游戏引擎往往是整体式的,因此,我们在很大程度上倾向于构建具有可扩展性的模块化引擎,从一开始就采用开放标准工具。但是,我们仍然不满意,因此,我们添加了新预制系统、新构建系统、可扩展的 UI、许多新云功能、大量数学库优化、新网络功能以及许许多多的性能改进。此外,我们甚至添加了全新的 PBR 渲染器,它能够通过光线追踪和 GI 支持实现前向+ 和延迟渲染!
模块化
我们从头开始将该引擎重新设计为模块化引擎,因此,几乎所有引擎部件都是一个库。开发人员可以完全替换图形渲染器、音频子系统、编辑器、语言支持、网络堆栈、物理系统和其他库,而不影响其他库。核心引擎模块和任何附加组件或插件统称为“Gem”。开发人员可以通过引入 30 多种功能和工具中的任何一种(而不是引入所有功能和工具)来精简项目。他们也可以将这些功能和工具作为独立库来实施。如果开发人员已经拥有引擎并希望减少技术债务或更新代码,可以从开源项目中轻松选择所需的功能,然后将其实施到自己的技术堆栈中。他们也可以创建并合并自己的堆栈。借助 O3DE 的模块化架构添加新功能非常简单,这样开发人员就可以持续创新。
开源友好型构建系统
对于开发人员来说,模块化还必须易于理解并允许快速开发,因此,我们决定将整个构建系统移到开源 CMake 系统中。这一选择为各种 IDE(例如 Visual Studio、XCode 等)提供了更好的 CTest、插件库、分析、编辑并继续、快速代码生成及本机项目生成的支持。这种新方法通过适当的依赖关系树来构建所选的目标,并确保只重新构建实际的依赖关系,以便提高迭代开发的速度,进而节省时间。这种模块化特性还允许我们简化项目和 Gem 管理,方法是:删除所有二进制格式,然后将其移到可使用 CMake 编写脚本的人类可读的 JSON 文件。因此,只需简单地更改 JSON 文件中的某一行,即可在项目中添加或删除 Gem。通过博客详细了解 Lumberyard 构建系统的未来。
引擎即 SDK
Lumberyard 开发人员会发现引擎已经发生了很大的变化。它的构建类似于 SDK,因为对于引擎模块和 Gem,它可以以预编译的形式提供,这可被视为是一种“引擎即 SDK”方法。同样,在项目发生变化时,不需要重新编译预编译的库或 Gem。而且,当新引擎版本发布时,开发人员可以更新核心 Gem,只需解决项目代码本身的编译问题即可。工作室现在可以轻松自定义引擎组件,并根据需要用特定自定义模块替换预构建组件。
Atom 渲染器
另一个重大变化是 Atom 渲染器,正如预期的那样,它作为 Gem 交付。该渲染器通过提供基于物理的现代渲染器 (PBR) 来支持多个平台,该渲染器符合 ACES 色彩空间标准并完全支持 Vulkan、Metal(开发中)和 DirectX 12 的光线追踪。Atom 随附全局光照 (GI) 和前向+ 渲染,开箱即用,并支持延迟渲染管道。与 O3DE 本身一样,Atom 具有模块化、可编写脚本和数据驱动等特点。我们甚至编写了一种全新的着色语言,称为 AZSL。这种语言利用 Atom 的数据驱动功能,因此,开发人员可以随着新硬件接口的出现不断创新。没错,Atom 是开源且免费的,就像 O3DE 中的其他所有功能一样。请参阅这篇博文,详细了解 Atom 渲染器。
网络
O3DE 中包含了全新的网络堆栈,它具有高度灵活的数据驱动模型,支持 TCP/UDP,并在简单的 API 背后抽象了低延迟传输层。该堆栈支持加密和压缩,并具有内置模拟器,用于延迟、抖动、重新排序和丢失。为了确保最低延迟和最高保真度,它支持通过无序不可靠的数据复制进行实体复制、本地预测延迟补偿、针对服务器权限的向后协调,及支持自动去同步检测和修正的可拆分玩家行为。为了确保开发人员可以使用不同的服务器型号,该堆栈支持开箱即用的玩家托管服务器和专用服务器型号。请参阅这篇博文,获取更多开发详情。
更快、更轻、性能更高
相较于它的前辈 Lumberyard,O3DE 更轻便、速度更快、性能更高。我们的工程师删除了超过 200 万行旧代码冗余,为开源做好准备。我们创建了新的高性能数学库,这些库利用现代 CPU 和当前 SIMD 指令集。数学是精彩游戏和模拟的核心,我们确保了我们的客户、贡献者和社群拥有非常坚实的工作基础。最终结果将是,帧率提高,平台支持得到改进(尤其是在 ARM 设备上),准确性提高,及可用于动画、特效和游戏运行的计算资源增加。毕竟,3D 引擎中的几乎所有内容都与数学有关! 请参阅这篇博文,详细了解我们的高性能数学工作。
支持云
我们额外添加了云功能,包括对 Amazon Kinesis、AWS Lambda、Amazon Cognito、Amazon CloudWatch、AWS CloudTrail、AWS IAM、Amazon GameLift 和更新的 AWS C++ SDK 的新支持。借助这些与云服务的深度集成,开发人员能够交付具有可自定义支持功能的游戏和模拟,快速创新,并吸引和留住现有玩家和新玩家。随着合作伙伴和社群不断增加 AWS 之外的更多选项,O3DE 的云功能将进一步增加。此外,在未来几个月里,AWS 将继续构建更多云功能,并支持其他文件格式,涵盖一系列新用例。
生产力和可扩展性
工具和管道实施对于简化生产所需的时间同样至关重要。为了帮助加速自定义,我们扩展了 UI 工具,它使用可访问代码接口的 Python 扩展和 Qt 来创建自定义编辑器组件。我们通过新的步骤前和步骤后 Python 绑定极大地更新了资产创建,以允许 FBX 和材料处理的动态处理和自定义行为。这些绑定使技术类游戏艺术家能够编写可拆分、分配或重新定位资产的 Python 脚本,以及从任何输入源创建自定义材料。
许多其他功能也发生了变化,以便社群以新方式对其扩展。Script Canvas 现在支持通过未来本机代码支持编译为 Lua,并通过我们的可扩展行为上下文管理器进行脚本绑定。我们已经从 Lumberyard 管理游戏内部资产的“切片”模型转向了大家都很熟悉的预制模型。我们的模块化标准接口使开发人员能够针对其他 Gem 接口执行直接函数调用,并提供 IDE 自动完成支持。总体而言,我们的目标之一是使开发人员能够在自己的项目中发现和实施功能(无论是整个还是部分功能)。
后续行动
开放式 3D 引擎目前已提供开发人员预览版,我们的团队正在努力工作,争取在今年晚些时候提供生产就绪型版本。我们很高兴能与社群和其他 Open 3D Foundation 合作伙伴合作,在未来几个月和几年里不断为引擎添加更多内容。我们将与 Linux Foundation、合作伙伴和大学合作,以帮助实现更多创新,开展令人兴奋的即将宣布的年度 O3DE 新活动,以及举办全球行业展览和骇客马拉松。
我们希望这项开源工作提供游戏和模拟开发平台,任何人都可以利用该平台快速构建更加精彩的游戏和实时模拟。我们相信,现在正是发展 3D 可视化和工具业务的理想时机,希望您能加入我们的旅程。正如我们在 Amazon 常说的那样,现在我们仍然在“第一天”。
请访问 docs.o3de.org 并观看视频,详细了解开放式 3D 引擎计划。