• 为游戏开发行业释放 Git


    游戏开发有许多独特的要求,包括大型专有格式文件的管理。了解 Diversion 如何提供云原生、可扩展的 git 替代方案来满足这些需求。

     

    游戏可能是最常见的计算机(和移动)软件类型之一——游戏占 Apple App Store 的 21.8%(截至 2021 年 6 月)和 Android Play Store 的类似比例。到 2024 年,视频游戏的市场规模预计将增长到惊人的 2187 亿美元,复合年增长率为 8.7%。

    游戏主要适用于个人电脑、移动设备和专用游戏机,但它们并不止于此。近年来,元界取得了进展,迄今为止已售出超过 1500 万台 Oculus Quest,游戏是推动其采用的主要吸引力之一,它们将继续是元界生态系统的关键部分。

    作为软件经济的核心,简化和优化游戏开发可以转化为直接的利益和收益。今天的大多数游戏都是使用 Unity 或 Unreal Engine 等游戏引擎开发的(还有其他几个,但这两个主导了市场),只有很少或没有软件开发经验的艺术家可以创造出令人惊叹的艺术,并与编写代码的开发人员合作推动比赛。

    这些游戏引擎已经存在了几十年,并且随着技术的发展而显着发展。它们功能强大,足以创建最先进的 2D 和 3D 图形,但它们的定价(均包括免费层)足够灵活,甚至独立游戏工作室也可以使用它们。

    然而,游戏开发就像任何其他类型的软件的开发一样,需要实施软件开发最佳实践,例如版本控制 (SCM)。Git、SVN、Perforce 和 PlasticSCM(2020 年被 Unity 收购并集成到 Unity 开发环境中)等工具如今在游戏开发公司中相当普遍。

    但是请注意,这些工具中的大多数主要是为管理标准软件源代码而开发的,因此对于有一些独特要求的游戏公司来说,它们并不是最理想的。网络上的游戏开发论坛充满了关于版本管理工具、最佳实践和方法的讨论。共识是,需要对 SCM 工具和工作流程进行一些调整,并对这些组织中的一些人进行专门培训,以有效地使用版本管理。

    游戏开发中的独特挑战

    游戏开发的独特优势之一始于与过程中的利益相关者一样基本的东西。游戏开发需要游戏设计师与软件工程师密切合作来构建和发布游戏软件。最流行的平台 Unity 和 Unreal 也有自己的一套要求和设计师专有的文件格式。

    所有这些,连同质量要求和流程合规性,在使用典型的源代码控制管理平台时增加了相当多的摩擦。下面我们将逐一深入研究它们,看看它们在游戏开发中增加了哪些摩擦,以及如何消除这种摩擦,从而将现代软件交付的好处带入游戏开发。

    游戏开发独有的四大痛点是:

    • 他们的文件和存储库非常大。

    • 非技术利益相关者是技术交付的关键部分。

    • 合规性测试和其他交付要求的复杂性。

    • 难以解决专有文件格式中的冲突。

    我们还将概述典型的工作流程,以及游戏开发可以从与其他工程领域更一致的改进流程中受益的地方。

    文件和存储库大小

    尽管流行的工程领域需要处理大型文件(从游戏开发到人工智能和机器学习)。这仍然很复杂且尚未解决。例如,其他工程领域中事实上的 SCM Git 需要使用名为 Git-LFS 的专用扩展来高效处理大文件。至少可以说,基于流行观点,使用此扩展程序很麻烦,并且增加了过多的摩擦,使用户的一切变得更慢。

    即使是能够原生处理大型二进制文件的工具,也会因为同步到变更列表或分支等功能需求而减慢工作流程。这需要在每次结帐或拉取时传输和替换作为正在处理的集合的一部分的大文件。即使文件与当前更改或正在完成的工作无关,也是如此。因此,许多游戏开发公司对大型二进制文件采用“影子版本管理”,使用 Google Drive 或 Dropbox 等工具,其中版本被编码为文件或文件夹名称,并应用手动过程来“缝合”这些文件使用在 SCM 系统中找到的源代码将它们组合成一个连贯的项目。

    关键的非技术利益相关者

    在游戏开发团队中占很大比例的设计师和美术师不太习惯 SCM 工具相对复杂的工作流程(例如,分支、签出、提交),尽管他们需要将他们的工件与代码一起交付并使用与软件交付相同的工作流程。

    虽然这可以通过培训来克服,但许多组织通常使用 Google Drive 或 Dropbox 等工具来处理这个问题(这也消除了前面讨论的大文件大小问题)。这给培训和入职,甚至招聘人才增加了很多摩擦。它还增加了与文件格式及其在典型测试、质量和自动化流程中的管理相关的其他方面的摩擦,我们很快就会谈到。

    针对合规性和游戏要求进行测试

    游戏开发具有严格的合规要求,以确保最终产品的质量,并允许不同利益相关者之间进行高效、简化的协作。然而,由于所创建文件的性质、软件文件和专有格式之间的差异,将典型的质量、测试和自动化门应用于游戏软件是相当复杂的。这需要大量人工干预和额外的胶带来验证软件是否符合相关要求。

    需要的人工和人工干预越多,流程中的摩擦就越大,发生错误的可能性就越大。手动和人工流程更容易出错。游戏开发克服这一问题的一种方法是在设计团队(“技术艺术家”)中安排专职人员,将大型二进制图形文件整合到 SCM 工具中。一些公司甚至构建了自己的专有工具和插件(有些公司将它们贡献给他们的社区)来克服围绕 SCM 的这些限制。然而,这些过程应该是自动化的,就像在其他领域一样。

    合并专有文件格式

    与前一个挑战密切相关的是解决专有文件中的冲突并将它们合并到主/生产中。这也很大程度上取决于必须解决专有 YAML 和二进制文件中的冲突的技术艺术家。由于缺乏更好的选择,这通常会导致手动重新实现导致冲突的功能之一并重新提交生成的文件。基本上每个游戏设计合并冲突都像是你在 Git 中经历过的最严重的合并冲突。所以想象一下这种情况发生的频率以及这给游戏开发过程增加了多少摩擦。对更多文件格式和部署过程的更大支持可以显着改变这一点。

    游戏开发需要重新思考

    游戏是一项严肃的业务,具有可观的收入来源和激烈的竞争,这需要游戏开发使工作流与更先进的软件交付原则保持一致,从而从自动化、速度和效率中获得更大的收益。许多真正的挑战与他们的 SCM 能够支持的基本内容密切相关。迄今为止,对于这个行业在工程和交付方面面临的挑战,似乎仍然没有一个好的解决方案。

    我们已经从理论出发,今天我们拥有更先进的工具来克服尺寸和规模带来的许多技术挑战。游戏开发应该能够从这些进步中获得类似的好处。在Diversion,我们认为游戏行业在云原生工程实践方面应该是一等公民,并且应该拥有支持其独特需求和工作流程的工具。Diversion提供了一种云原生、可扩展的 git 替代方案。

    我们相信有可能构建一个现代工具来帮助解决游戏开发人员使用当前 SCM 工具所面临的独特挑战,其中大多数工具已经存在了 20 年或更长时间,并且没有像其他工程工具和框架那样进步。通过与领先的游戏公司合作,帮助识别挑战并从他们的流程中无情地消除摩擦,我们可以将游戏开发工作流程与其他领域中可能对业务产生直接影响的精英软件交付保持一致。

  • 相关阅读:
    Temp directory ‘C:\WINDOWS\TEMP‘ does not exist
    A. Beat The Odds
    Java 日志框架,性能无敌横扫所有对手
    gitblit 搭建本地 git 仓库
    时序预测 | MATLAB实现TCN-GRU时间卷积门控循环单元时间序列预测
    Win10系统自带的虚拟机怎么打开教学
    EuroVis2022论文—1—STAR-前沿综述
    踩坑ffmpeg录制的mp4无法在浏览器上播放
    JavaSE 第十一章 泛型
    【广州华锐互动】VR营销心理学情景模拟培训系统介绍
  • 原文地址:https://blog.csdn.net/ycykj/article/details/127630653