首页/编程/制作endzone:拥有你的工具箱
编程

制作endzone:拥有你的工具箱

2020-10-01T17:18:14 + 02:00

Endzone的自动化和工具链开发– A World Apart.

在GentyMad Studios,我们,就像许多其他开发人员一样,基于第三方技术建立了我们的工作。这始于我们的技术基础,团结,本身就是使用许多其他专有和开源软件项目和技术,以创建通用游戏引擎。但是,谈到工作室的生产效率时,花时间开发自己的工具可能是依赖第三方软件的有效替代方案。它可能似乎是违反直观的,但您可以通过完全控制自己解决方案的复杂性,可维护性和可用性来节省时间和资源。

对于我们最新的项目,Endzone–除了一个世界,我们致力于为我们的生产流水线和所有集成游戏系统编写自己的解决方案。回想起来,我们可以充满信心地说,这是一种有效的方法,即使是一个只有十一个人的团队。在以下页面上,我们潜入我们在工作室申请的原则,以查找并创建工具链的正确工具。

三个重要的领域
当我们在2014年获得GentyMad时,我们在很大程度上依赖于Unity资产存储生态系统以及开源项目。然后只有四个队伍,那么它才觉得一个不可能的努力在内部实施每个工具和功能。六年后,我们的最新项目刚出门,我们仍然携带我们对新的和令人兴奋的技术的不间断的好奇心,但我们也看到了一些不同的事情。第三方插件可以提高您的效率,特别是在开发的原型阶段,也带来了一些不可否认的挑战,特别是如果您想在生产中使用它们。

因此,在开发期间,仔细评估使用外部工具或创建自己的决定可以成为有价值的部分。让我们看看三个领域,我们在评估您的问题的正确工具方面找到了重要信息:维护,范围和可用性。

 

我们的一个工具,用于在编辑器中直接管理移动路径和测试动画。

维护
当您开始使用外部工具时,您信任该工具的社区和开发人员以维护它。因此,在评估过程中分析对技术负责人的承诺变得对此变得重要意义。除了项目当前的现状和团队,结构,可理解性和质量同样重要。

有用的问题:

该工具是否积极维护或已经放弃?
它是我们的游戏引擎是否无关?
如果没有,它是否经常更新以支持更新的引擎版本?
源代码是否可用?
代码是否可持续和组织?
我们可以自己维护吗?

范围
在市场上销售的第三方工具必须与许多具有相似原则和功能的其他项目竞争。这就是为什么这些工具中的许多工具遭受特色蠕变。他们立刻做了太多,试图吸引尽可能多的客户。这与许多开源项目具有巨大的对比,这更简单但更精确。在评估工具时,请注意特征蠕变,这些功能蠕变通常过于复杂或笨重的项目,这些项目遭受了不良的可维护性和可用性。

有用的问题:
工具是开源吗?
它解决了问题是否过于复杂?
功能是否适合我们的特定需求?
它解决了我们的具体问题吗?

可用性
用户体验是软件工程的重要组成部分,尤其是在工具开发的背景下。这是关于你互动的方式,达到你的目标的效率和轻松和使用的乐趣。许多第三方工具遭受了严重实施的,使用UI繁琐,这通常与他们迎合的大范围和大型用户群相关。

有用的问题:
谁将在我们团队中使用该工具?
他们很容易使用吗?他们很容易理解吗?
它以有效的方式解决问题吗?
它需要很多点击和交互吗?

你的内心需求
在评估或创建生产管道的工具之前,最重要的一步是确定需要解决的内容。它可能听起来很简单,但花时间分析和定义问题,在过早地跳到解决方案之前,可以节省宝贵的时间。它可以防止您击中死胡同。在一段技术中投入时间,金钱和资源的那一刻,只是发现它最终无法解决你的问题。

识别问题不是一个简单的任务,而是在开发,会议或只是随机对话期间偶尔出现的东西。我们发现有一个技术艺术家有助于与团队同步的技术艺术家有助于发现他们在哪里看到或有创建和集成内容或实现功能的问题。

从那里,您可以优先考虑需要最直接的注意力,也许与每个问题的大家建立会面,澄清任何误解并开始搜索或制定现在定义明确的问题的解决方案。

建立你自己的
现在我们知道我们的生产管道中需要解决的问题以及我们如何评估可能的第三方解决方案。此外,我们可以使用这些指南并在编写自己的工具时记住他们。但我们如何开始创建自定义解决方案?

符合K.I.S.S.
吻。是一个众所周知的通用编码范式。它代表着保持简单,愚蠢。作为一个工具开发人员,保持这种句子也可以帮助您。核心的想法是打破一个问题,你试图为那些解决较小的问题和工艺解决方案。您可以专注于通过步骤解决更大的问题,而不是立即解决所有内容。它还可以帮助您创建独立和可重用的模块,该模块也可以概括并用于解决其他相关问题。总的来说,这一概念可以从纸上的较小零件中分解你的问题,到你要写的个体课程。

一个实际的例子
endzone.–一个世界间隔是一个具有繁重模拟方面的生存战略游戏。与其他RTS游戏一样,我们使用我们世界的基于单元的代表。细胞容纳不同的属性和状态。它可以阻止,潮湿,是水,它也可以立刻有几件事,或者没有。我们将这种数据称为Cellflags。从技术角度来看,CellFlags被实现为一个简单的位域,一组标志。
很多实体都有一个二维阵列,这是一个网格,所以这些Cellflags的栅格。建筑物,命名一个常见的例子,需要它来定义,如果建筑物需要放置在水中,那么建筑物留下视觉占地面积的地方,需要走路。
问题是,在Unity编辑器中没有预定义的方式在Unity编辑器中显示这样的复杂数据类型。尽管如此,游戏设计师和程序员需要能够以高效且简单的方式设置这种数据。通过此问题的清晰定义,我们可以逐步将其分解为较小的零件,以后实施解决方案:

问题:需要在Unity编辑器中可视化和编辑CellFlags

解决方案:在Unity编辑器中…

对于建筑物组成…

  • 在检查器中显示Cellflags
  • 在两个轴上更改CellFlags尺寸
  • 制作特定的CellFlagType可选择
  • 可视化所选择的cellflagtype.
  • 强调&相应地着色Cellflags
  • 使Cellflags在检查员中可编辑
  • 在3D模型是的3D场景中渲染Cellflags
  • 在检查器中显示3D模型的2D自上而下表示
  • 使用点击&拖动到“Paint”所选CellFlagtype

在写这样一个复杂的工具时,击穿立即有助于焦虑,因为它不再是一个大问题。基于用户的用户反馈,在该工具的开发和迭代期间还扩展了上述列表。

1)由于我们需要一种方法来为建筑物可视化CellFlags,因此我们可以开始为相应的组件编写自己的UI。由于我们的第一批任务仅显示CellFlags,我们可以编写一个独立的模块,即CellDatainsPector,它将照顾Cellflag相关的所有内容。这样,我们可以在特定组件之外需要在案例中重新使用它。作为CellFlaginsPector的一部分,我们需要绘制可编辑的网格。电网需要可扩展和可伸缩。

2)接下来,我们需要提供一种方法来选择特定的CellFlag类型,并在设置它的网格上的字段中调集。要选择特定类型,我们使用简单的下拉元素。由于我们现在可以在网格上选择和可视化CellFlag数据,因此我们可以开始使其成为可编辑。最直观的方式是通过单击网格中的单元格,以将其标记为所选的CellFlag类型。另一个单击网格元素将取消设置标志。通过这一步骤,所有关键特征都已到位。该工具现在准备在内部发布,因此我们可以从团队中获得反馈,而我们仍在迭代它。

3)现在我们可以编写一个独立的可视化器,可以处理直接在3D模型下方直接绘制我们的Cellflag网格。您现在可以看到标志的设置,直接在3D模型上。在场景中也直接更新组件中的CellFlags。

4)接下来,我们将捕获我们3D模型的自上而下的缩略图,并将其用作组件中的2D网格的背景。这带来了看模型在2D空间中设置的模型上的位置的好处。

5)添加的每个新功能都是直接提供给团队。这导致即时反馈,我们可以在飞行中融入其中。作为一个例子,团队希望有一种简单的方法来“绘制”选择的CellFlag类型,点击 &拖动鼠标操作。这是一个很好的想法,因为它提升了填充网格的效率。

这是我们的工具开发过程的简要概述,在保持吻合的同时,在保持可维护性,范围和可用性的同时。我们创建了一个适合我们团队需求的工具,在初始版本时提前提高生产率。早期使用它,因为它分成较小的独立部件,允许有组织的迭代过程。由于其模块化和围绕一个特定的,定义的问题的范围,它也易于使用且易于维护。

最终言论
试图写自己的工具是一件美妙的事情,但你还应该遵守类似的路径来保持含义和后果。以下是我们在持续生产的endzone生产过程中学到的一些实用的事情– A World Apart.

陡峭的学习曲线
根据平台或基础技术的可扩展性和API,它可能需要很长时间才能编写具有良好可用性的工具。例如:一个统一编辑器的开发编辑器扩展是简单的,但您必须与替代但强大的UI系统进行战斗,这些UI系统与UI可视化交织在一起。此API有很多怪癖和不一致,您只能通过足够的体验处理和理解。

因此,在预生产过程中,在工具开发方面做沉重的提升是一个好主意,因为在那里,您仍然有时间在一个直播的游戏操作之前将头部包裹在复杂的问题上!

搞乱数据
我们在生产过程中我们不会停止编写新工具和扩展。具有新的游戏功能,可以获得我们的工具链和生产管道的新要求。

我们还希望直接与团队直接测试我们的工具的早期版本。这具有巨大的优势,因为新工具能够在仍在开发的同时提升效率,但您也得到了错误。如果没有重要的游戏数据,这不是一个问题!不止一次,我们正在与序列化问题和数据丢失作出斗争。

具有强大的版本控制系统是必需的,以这种方式运行,因此几乎不可能永久打破事物。

过度优化
它很容易作为开发人员在无休止地优化代码中被带走。作为开发人员,我们可以发展过度优化和微调的趋势。你想让它成为完美的,这是一个可能不存在的状态,所以你需要自己支撑自己。
最重要的是,您所做的每一个变化都具有新的可用性问题,并且您可能最终可能在永不完成工作的恒定螺旋中。


Matthias Guntrum.
共同创始人,工作室领先

Matthias是基于Wiesbaden的德国发展工作室的Gentendmad Studios的创始人之一。他是所有交易的杰克,专注于项目管理和流程自动化。作为自称数字门卫,他也非常致力于取悦自我写的,闪亮的新开发工具。

 

关于作者: 5. 10月20日
类别:
去顶级