扩展 Bevy 开发

发布于 2023 年 1 月 14 日 由 Carter Anderson ( GitHub 的吉祥物 Octocat,一个带着猫耳挥舞触手的剪影 @cart 一只灰色飞鸟的矢量图,X(前 Twitter)的旧徽标 @cart_cart 一个指向右边的三角形,在一个圆角矩形中;Youtube 的徽标 cartdev )

An image representing the article

在过去几年里,Bevy 社区发展壮大。我们已经拥有了超过 3642 个 pull request、599 位贡献者、357917 次下载和 21200 个 GitHub 星标。我们共同打造了市场上最受欢迎、使用最广泛的 Rust 游戏引擎,也是 GitHub 上第二受欢迎的游戏引擎。到目前为止,为了保持一致的愿景和质量标准,我一直尽可能地将我们的决策过程保持得小而集中。而且我尽可能地缓慢地扩展我们的领导角色。我相信这是 Bevy 初期阶段的正确做法,但我们现在需要做出一些改变,这些改变更倾向于信任和开发敏捷性。

现状 #

我一直都在慢慢地委托职责,每次我信任某个人时,都为项目和我的个人幸福带来了巨大的收益。现在,我们又多了三位很棒的维护者:Alice (@alice-i-cecile)、François (@mockersf) 和 Rob (@superdump)。他们的职责范围随着时间的推移而扩大。

但即使是今天,我仍然必须亲自批准 Bevy 的所有“有争议”的更改,其中“有争议”基本上是指任何对我们的功能、用户体验或范围进行有意义扩展的更改。随着我们现在看到的争议性更改的数量以及我仍然想要亲自设计和构建的事情的数量,这已经无法持续。我早已达到了带宽极限,社区也已经感受到了这些限制。

当 Bevy 还很年轻,社区还很新的时候,这种保守程度是有道理的。我知道我想构建什么,各个部分如何拼凑在一起,以及我的能力是什么。我不太清楚的是,其他人想构建什么,他们的能力是什么,以及所有这些如何融入我的个人愿景。

我现在很高兴地报告说情况已经发生了变化。我们在各个领域都拥有经验丰富的技术专家。他们定期设计和构建 Bevy 的大型部分,这与我们对未来的集体愿景相一致。有时我们对未来应该是什么样有不同的想法,但我们几乎总能最终达成共识。他们做出了杰出的技术工作,建立了信任,并使 Bevy 变得出色。他们应该获得在决策中参与的权利。

在说明了以上背景之后,我非常高兴地宣布对 Bevy 组织进行两项重大调整。

新角色:主题专家 #

主题专家(简称 SME)是指那些在给定“主题领域”(例如:渲染、ECS、反射、动画)内始终展现出技术专长和同步愿景的 Bevy 开发人员。他们必须在自己的领域内贡献和审查过 Bevy 的重要部分。这些人有权对他们主题领域的争议性 pull request 进行投票(包括 代码更改RFC)。如果您对 Bevy 的特定主题领域有任何疑问,SME 也是您寻求帮助的好人选。

如果给定主题领域内的两位 SME 批准了“争议性”PR,维护者现在可以合并它。我们有意将主题领域内的 SME 人数保持在较小的范围内,以使达成共识和执行一致愿景变得更容易。目前,2 位 SME 是允许投票的最低限度,3 位是“最佳点”,4 位在某些情况下允许,但它是“上限”。

作为项目负责人,我仍然可以合并争议性 PR。将 2 位 SME 的批准视为与项目负责人的批准等效。作为凝聚力的最后一道防线,项目负责人保留对更改的最终决定权。虽然我默认会服从 SME 的意见,但如果他们批准了一项我认为对 Bevy 方向错误的 PR,我仍然会阻止或撤销该更改。对我来说,保持一致的愿景和质量至关重要。但我打算尽可能地偏向信任和共识。

SME 的工作是在他们自己、更广泛的 Bevy 社区和项目负责人之间争取共识。他们可以在没有我的情况下合并有争议的更改,但他们仍然必须尽最大努力预测我对这些更改的反应(以及在相关时提前与我讨论这些更改)。同样,我也会尝试在进行更改之前与 SME 和更广泛的社区达成共识。

我们正在逐步推出 SME,以便我们能够随着时间的推移调整流程,避免过快地改变太多东西。我们主要从活动最多的主题领域以及最明确的主题专家开始。欢迎加入我,一起欢迎我们第一批 SME!

  • 渲染: @superdump (Rob Swain), @robtfm (Rob Macdonald)
  • ECS: @BoxyUwU (Boxy), @james7132 (James Liu), @maniwani (Joy)
  • 反射: @MrGVSV (Gino Valente), @jakobhellermann (Jakob Hellermann)
  • 动画: @james7132 (James Liu), @mockersf (François Mockers)

希望这里没有太多惊喜。这些人在他们所在的领域已经构建了很长时间的出色产品了。

我们将在 SME 在 Bevy 项目中证明自己并表达兴趣后,推出更多主题领域(以及其中的 SME)。新的领域主要是由在这些领域工作的专家来定义的。我们预计 UI、编辑器和音频等领域将在不久的将来得到填充。

我们还在上述每个主题领域都留下了空缺。如果您认为您符合我们对当前或建议的主题领域的 SME 标准,并且对该角色感兴趣,请不要犹豫,请联系我或其他任何维护者。我们会定期考虑新候选人。仅仅因为您没有被纳入第一批,并不意味着我们认为您不适合!

新维护者 #

我们还希望改进我们合并非争议性 pull request 的速度。并且促进 SME 流程将带来新的维护工作量。现有的维护者和我都一致同意,现在该增加一位新的维护者了。

欢迎 James Liu (@james7132) 成为我们最新的维护者!James 已经证明自己是 Bevy 多个系统(尤其是 ECS、动画、并行化/任务调度和优化)的技术专家。您可能已经注意到,他们也是 ECS 和动画的 SME。他们贡献了大量的代码更改,提供了可靠的审查,易于合作,并且对 Bevy 的未来愿景与我们一致。

新的 Bevy 组织文档 #

我们有一个新的 Bevy 组织文档,它描述了 Bevy 组织在未来将如何运作。它概述了每个角色的功能以及我们对他们的期望。以前存在的角色(项目负责人、维护者)仍然以相同的方式运作,但它们的定义和范围已经变得更加清晰。

组织中最大的变化是新的 SME 角色和对“角色轮换”的初步描述。

项目负责人、维护者和 SME 等角色是有意保持有限供给,以确保项目的愿景一致。但是,这些角色可能很繁重,有时生活中的其他方面需要优先考虑,而且合格的积极主动的人应该有机会领导。为了解决这些问题,我们计划建立“角色轮换”。这将是什么样子还没有确定(因为这个问题还没有出现,我们仍然处于扩展团队的过程中),但我们会尝试适当平衡当前和未来领导者的需求和愿望,同时确保 Bevy 的愿景一致和持续性。

Bevy 人员页面 #

Bevy 是一个社区驱动的项目。Bevy 背后的人以及他们所扮演的角色能够轻松被发现是有道理的。

为了实现这一点,François (@mockersf) 和我共同创建了一个新的 Bevy 人员 页面。“Bevy 人员”可以选择列出他们的姓名和/或假名、他们的社交信息(GitHub、Discord、Mastodon、Twitter、个人网站、itch.io 等)、赞助链接以及描述他们的身份和工作内容的个人简历。

它还会显示这些人员目前在 Bevy 组织中所担任的角色。如果您愿意,您也可以称其为“组织结构图”,但我的反官僚主义本能阻止我这样做。Bevy 社区将始终尽可能地扁平化和“以人为本”。

它向所有人开放(包括 Bevy 组织成员和更广泛的 Bevy 社区)。如果您希望在该页面上看到自己,请 在此处创建一个 pull request

这就是它的样子! bevy 人员

展望未来 #

下一个 Bevy 版本(Bevy 0.10)大约一个月后发布,我对我们计划中的更改感到非常兴奋。我不能保证所有这些更改都会实现,但它们都在顺利进行中。

  • 新的“无阶段”ECS 调度程序: 我们已经完全重建了我们的调度程序,使其更加灵活。我们不再需要“阶段”来处理“独占系统调度”。任何类型的系统都可以相对于任何其他系统进行排序(即使它们对 ECS World 具有独占访问权限)。许多调度程序 API 现在更加简洁、更易于使用。我们还利用了这次机会改进了相关的 API,例如 States。
  • 深度和法线预处理: 这将使渲染功能开发人员能够在主渲染阶段访问深度缓冲区和法线,这将使各种渲染功能和优化成为可能。
  • 屏幕空间环境光遮蔽: 这是一种流行的、相对便宜的照明技术,可以使场景看起来更加自然。它建立在深度预处理工作之上。
  • 资产预处理: 我们正在重新设计我们的资产系统,以允许将资产预处理为更高效的形式,这将使部署的游戏加载速度更快、更漂亮、更快。这是一个完整的资产系统重做,它改进了我们很大一部分资产 API。
  • 窗口作为实体: 窗口现在是 ECS 实体,而不是资源,这使得它们更容易构建和查询,更可扩展,并为将它们包含在 Bevy 场景中打开了大门。
  • UI 风格拆分: 将单一的 UI 风格类型分解成更小的部分,采用更分散、更可扩展的模式。

大约一个月后见!