亚马逊的领导原则是亚马逊文化的核心,它就像亚马逊的DNA融入到每一个重要的决策中,深深地影响着每一位亚麻人,影响着每一位亚马逊客户、合作伙伴以及每一位亚马逊云技术的建设者。同时,Amazon的领导原则对Amazon与开源的交互方式产生了深远的影响。在上一篇文章中,我们告诉你亚马逊如何践行开源社区最重要的领导原则——客户至上:通过始终以客户为中心,倾听开发者的反馈,并通过合作和参与开源社区来实现开源更容易使用。在本文中,我们想与大家分享我们在开源文化中践行的另一个领导原则——最高标准。最高标准无论是为开发者提供全托管的开源软件服务,还是为自主管理的客户提供各种复杂的基础云服务,我们都需要确保这些产品和服务能够满足开发者的需求。可靠、安全、稳定。这是亚马逊的另一项领导原则——最高标准。Amazon在内部使用ApacheLucene多年,2019年Amazon.com决定将其100%的搜索服务切换为由Lucene提供支持。作为一种开源技术,Lucene能否支持亚马逊运行规模的搜索性能,迁移是否存在业务风险?事实证明,Amazon的加入,将Lucene搜索性能的极限推向了另一个新的高峰。ApacheLucene项目主页https://lucene.apache.org/项目地址https://github.com/apache/luceneApacheLucene是一个用Java构建的开源全文搜索库,亚马逊高级首席搜索工程师MikeMcCandless(LuceneandLongtimecontributortorelatedprojects)表示,在将Lucene的使用“推向极限”的过程中,亚马逊的工程师发现了一些粗糙的边缘、bug等问题并有效地修复了它们。出于行业竞争或产品战略的考虑,Apache2.0许可允许开发人员在使用开源产品时自行修改代码,而无需将更改反馈给上游。但亚马逊选择积极将代码修改和最佳实践回馈给Lucene社区,以帮助其他与之相关的项目。亚马逊工程师一直在加紧参与开源项目,以更好地为客户服务,甚至在搜索等可以创造竞争优势的战略领域也是如此。Amazon对Lucene提出了多项重要的改进,包括:Lucene索引代码的重大底层改动,实现并发“更新”和“删除”,大大提高了在支持并发执行的硬件上的执行效率;构建自定义词频索引,将行为信号引入排名依据(如客户搜索产品后可能的行为);许多错误修复,并将更改推送到上游分支。打开3DEngine项目主页https://www.o3de.org/项目地址https://github.com/o3de/o3de游戏,模拟开发者告诉我们,从头开始构建3D工具是昂贵的,需要多年的开发时间,并且需要需要维护的重要资源。要么花大部分钱重复别人或你自己已经做过的事情,要么必须使用难以定制的专有解决方案。他们想要更多选项来帮助他们协作、定制和创造性地控制他们的生产过程。2021年7月7日,亚马逊正式发布了开放式3D引擎(O3DE),这是一种模块化、开源、跨平台的3D引擎,可为从AAA游戏到电影质量的3D世界再到高保真模拟的一切提供支持。这是一个开源项目,不收取任何费用或商业义务。O3DE在Apache2.0下获得许可并由Linux基金会管理。O3DE的初衷故事要从亚马逊在2016年推出的Lumberyard游戏引擎说起。Lumberyard提供了一个完全免费、源代码可用的实时3D开发引擎,用于通过云集成进行快速构建、部署和扩展。几年来,根据用户的新需求,通过不断完善,终于构建了强大的组件实体系统和流行的ScriptCanvas可视化脚本引擎。为此,亚马逊收购了EmotionFX动画编辑器,创建了模块化的Gem系统,并实现了许多Twitch和亚马逊云技术的集成。要提供世界一流的免费3D渲染工具,光有Lumberyard是远远不够的,于是亚马逊利用Lumberyard的构建经验,在此基础上进一步迭代改进,以实现更好的协作和创新控制,并于2021年发布了O3DE。不同于传统的整体构建设计作为游戏引擎,O3DE被设计为可扩展的模块化引擎,并使用开放和标准化的工具。最重要的是,我们添加了一个预构建系统、一个新的构建系统、一个可扩展的UI、新的云属性特性、广泛的数据库优化、新的网络特性等等。我们还添加了一个新的基于物理的渲染(PBR)渲染器,它可以通过光线追踪和Gi支持实现前向和延迟渲染。O3DE的模块化设计使用O3DE的模块化架构添加新功能很简单,因此开发人员可以继续创新。O3DE引擎被设计为模块化引擎,几乎所有的引擎部件都是一个库。因此开发人员可以独立更换图形渲染器、音频子系统、编辑器、语言支持、网络堆栈、物理系统和其他库,而不会影响其他库。核心引擎模块和任何附加组件或插件统称为“Gems”。开发人员可以通过引入30多种功能和工具中的任何一种来简化项目,或者将它们作为独立的库来实现。如果开发者已经有了引擎,想要减少技术债务或更新代码,他们可以很容易地从开源项目中选择所需的功能,并将其实现到自己的技术栈中。他们可以创建和合并自己的堆栈。EngineasSDK有助于自定义引擎组件,并根据需要用特定的自定义模块替换预构建的组件。Lumberyard开发人员会发现引擎发生了重大变化。它的构建类似于SDK,因为它以预编译的形式提供给引擎模块和gem,这可以被认为是一种“引擎即SDK”的方法。此外,当项目发生变化时,无需重新编译预编译库或gem。而且,当有新的引擎版本发布时,开发者可以更新核心gem,只需要解决项目代码本身的编译问题。AtomRenderer另一个重大变化是AtomRenderer,正如预期的那样,它作为Gem提供。该渲染器通过提供符合ACES色彩空间标准并完全支持Vulkan、Metal(开发中)和DirectX12的光线追踪的现代基于物理的渲染器(PBR)来支持多个平台。Atom带有全局照明(GI)和前向+开箱即用的渲染,并支持延迟渲染管道。与O3DE本身一样,Atom是模块化的、可编写脚本的和数据驱动的。AmazonWebTechnologies甚至为其编写了一种全新的着色语言,称为AZSL。该语言利用Atom的数据驱动功能,允许开发人员在新硬件接口出现时进行创新。此外,与O3DE中的其他所有内容一样,Atom是开源且免费的。请参阅此博客文章以了解有关Atom渲染器的更多信息:网络O3DE中包含一个全新的网络堆栈,具有高度灵活的数据驱动模型,支持TCP/UDP并在简单的API后面抽象出低延迟传输层。该堆栈支持加密和压缩,并具有针对延迟、抖动、重新排序和丢失的内置模拟器。为确保最低延迟和最高保真度,它支持通过乱序不可靠数据复制进行实体复制、本地预测延迟补偿、服务器权限的向后协调以及具有自动不同步检测和纠正行为的可拆分播放器。为确保开发人员可以使用不同的服务器模型,堆栈支持开箱即用的玩家托管和专用服务器模型。有关更多开发细节,请参阅此博客:O3DE的演变和开源友好构建系统的未来模块化还必须易于开发人员理解并允许快速开发,因此我们决定将整个构建系统移动到CMake中的开源系统。这种选择为各种IDE(例如VisualStudio、XCode等)的CTest、插件库、分析、编辑和继续、快速代码生成和本机项目生成提供了更好的支持。这种新方法通过使用适当的依赖关系树构建选定的目标并确保仅重建实际的依赖关系来提高迭代开发的速度,从而节省了时间。这种模块化还允许我们通过删除所有二进制格式并将其移动到可以使用CMake编写脚本的人类可读的JSON文件来简化项目和gem管理。因此,只需更改JSON文件中的一行,即可在项目中添加或删除gem。在博客中了解有关Lumberyard构建系统未来的更多信息:更快、更轻、性能更高O3DE比上一代Lumberyard更轻、更快、性能更高。当前版本已经去除了超过200万行的旧代码冗余,准备开源。创建了新的高性能数学库,利用现代CPU和当前的SIMD指令集。数学是伟大游戏和模拟的核心,它为用户、贡献者和社区提供了一个非常坚实的工作基础。最终结果将是更高的帧速率、改进的平台支持(尤其是在ARM设备上)、更高的准确性以及更多可用于动画、特效和游戏的计算资源。毕竟,几乎3D引擎中的所有内容都与数学有关!请参阅此博客文章以了解有关我们的高性能数学工作的更多信息:生产力和可扩展性工具和管道实施对于简化生产所需时间也至关重要。为了帮助加快定制,它使用UI工具进行了扩展,它使用Python扩展和具有可访问代码界面的Qt来创建定制编辑器组件。资产创建已通过新的步骤前和步骤后Python绑定进行了重大更新,以允许FBX和材料处理的动态处理和自定义行为。这些绑定使技术游戏艺术家能够编写可以拆分、分配或重新定位资产的Python脚本,以及从任何输入源创建自定义材料。许多其他功能也发生了变化,以允许社区以新的方式扩展它们。ScriptCanvas现在支持编译为具有未来本机代码支持的Lua,以及通过可扩展行为上下文管理器进行脚本绑定。O3DE终于从Lumberyard管理游戏内资产的“切片”模型转变为熟悉的预制模型。O3DE模块化的标准接口使开发者可以直接对其他Gem接口进行函数调用,并提供IDE自动补全支持,使开发者能够发现并实现项目中的功能(无论是全部还是部分)。总结对于AmazonCloudTechnologies,我们将继续与Linux基金会、合作伙伴和大学合作,帮助实现更多创新,即将宣布激动人心的新年度O3DE活动,以及全球行业展览和黑客马拉松。我们希望任何人都可以使用这个开源技术提供的游戏模拟开发平台,快速构建更多精彩的游戏和实时模拟。我们相信现在是发展我们的3D可视化和工具业务的理想时机,我们期待更多的开发人员加入该项目。在接下来的分享中,我们将解读另一个指导亚马逊开源文化的领导原则——创新和简单。您将了解Bottlerocket和Firecracker,这是我们根据这一原则努力构建的两个开源产品。欢迎继续关注BuildOnCloud微信公众号,为开发者了解更多技术分享和云发展趋势!文章来源:https://segmentfault.com/a/11...推荐阅读合作、参与,让开源更易用|亚马逊的开源文化机器学习洞察|JAX,机器学习领域的“新面孔”machinelearninginsights|本文带你“解读”JAX作者郑玉斌,亚马逊云技术资深开发布道者,拥有20年ICT行业积累和数字化转型实践,专注于亚马逊云技术云原生和云安全技术领域.18年架构师经验,致力于为金融、教育、制造、世界500强企业用户提供数据中心建设和软件定义数据中心解决方案的咨询和技术实施。亚马逊云技术解决方案基于行业客户应用场景及技术领域解决方案联系亚马逊云技术专家
