版本控制,gamedev和git-lfs

Tulenber 16 December, 2019 ⸱ Beginner ⸱ 6 min ⸱

这篇文章一开始是关于git和Unity的,然后慢慢思路就失控了。

让我们跳过“什么是Version Control?”或者“为什么在21世纪需要版本控制?”这些问题。与此相反,让我们描述一下vcs的现状,说明为什么游戏开发人员都大同小异,以及我们可以如何应对。 帖子中提到了第三方服务及其价格政策。本文作者与这些服务无关。此外,作者对您为此产生的费用不承担任何责任。

版本控制系统-VCS

对于那些不知道这是什么的人-记住一个简单的方法:“永远使用VCS!” 开始的时候,去搜索“Github初学者”做完其中所有教程。然后,读一本名叫Pro Git的书。如果您知道什么是VCS,我推荐您git和GitHub,因为它们涵盖了开始所需的一切。另外,我建议您使用这两个词开始所有项目:“ git init”。只是提醒你,并无冒犯。

一般公司情况

  • 好的老公司和(或)项目-你正在使用svn或更糟的东西。如果项目仍在使用,不要认为您可以更改,但您可以试试。您不需要再进行一次迁移。但是在这种情况下,您总能找到一些积极的东西-您已经在最坏的情况下知道痛苦了,未来会更好。
  • 轻度偏执-如果您有偏执这并不意味着没有人跟随您。您自己的专用服务器在本地网络中。没关系,也许当地国家强迫您这样做。例如,如果我们得到git,然后除以prise,则可能是Gitea <GitLab <GitHub Enterprise。所有这些工具都来自本世纪,所以都可以。
  • 赶时髦-您可以找到一家将所有源代码存储在GitHub中的公司,而且很好。

游戏开发

Game dev在版本控制中有其特殊性,它包含大量图片、视频和类似内容的资源,这些资源非常重要(这称为BLOB,二进制大对象)。我的一个项目是10GB的容量,其中7GB是艺术。Git不是为存储blob而设计的,因此,对源代码和资源的存储是分离的。在任何一个自重的项目中,都会有一些工具来简单生活,其中相当一部分将是解决这一问题的方法。人们以某种方式和它生活在一起,所以不要高估它的规模。但我遇到过这样的情况:团队更改blob存储规则,有时是为了流程,有时是为了降价。那为什么不把它们换成一个新的、时髦的东西呢?

Gamedev解决方案

我们可以说git是事实上的标准,所以首先想到的解决方案是:

  • 定制工具-为什么不呢?它总是:一个小项目-小工具,一个大项目-伟大的工具。如前所述,blob与代码分开存储。如果你在办公室工作,或者把它放到分布式团队的dropbox中,你就有一个专门的服务器。因此,为稳定新生产版本而进行的每个拆分,您都会在Slack中收到一条消息,如“对于创建1.6.0版1.6.0文件夹的艺术作品,所有艺术家都必须在此处保存所做的更改!!!"或者您的工具会功能多一点。
  • Perforce-有时你可以听到它在游戏开发行业和其他媒体领域很流行,它可以很容易地存储blob,而且你可以使用git。当进入他们的价格页面时,您可以看到“开始免费并按需付费”,这样你就可以免费试用,就像大多数其他服务一样,为什么不呢。
  • Git-作为一个开发者,我对Git很满意。为了解决blob在git市场上一些大玩家的问题,为git编写了一个名为git lfs的插件。这些都是相同的自定义工具,但是集成到了您的git客户端中。里面没有什么特别的魔力。在本地存储库中,按原样存储所有文件。在远程存储库中,所有blob文件都存储对某个文件存储的引用。没什么复杂的。所有您想知道和得到的话,可以转到项目站点

Git lfs(大文件传输)

当你听到“某个文件存储”时,你会立刻感觉到某个地方有问题。什么服务器,在哪里可以访问它,我将花费多少?令人惊讶的是,要整合关于这个功能的信息是非常困难的,因为所有的大佬都创建了这个功能,他们花了多少钱来使用它,令人惊讶的是,他们忘记了营销。所以,如果你不考虑大型服务的话,则几乎很少服务器可以实现,所有这些服务都是开源的,没有什么支持,但也许它们不是那么糟糕?我想了解git lfs的情况,所以我今天(2019年12月)了解到以下信息:

  1. 基本的案例-云,您无需执行任何操作,所有操作从一开始自动执行:
    • GitHub-所有项目都有1Gb的空间和1Gb的带宽。然后每50Gb空间和50Gb带宽每月额外打包5美元(您可以在“计费”按钮下的帐户设置中找到价格)
    • Bitbucket-所有项目都有1Gb的空间,没有关于带宽的信息。每100Gb额外空间10美元
    • Azure DevOps服务-2Gb空间和其他空间的不同价格,从每1Gb 2美元(价格)开始
    • GitLab-和往常一样,有一些问题,比如说:“目前,我们有10GB/存储库的限制,用户没有增加存储空间的选项,我们稍后会添加这个功能。”(链接到文章)。如果你喜欢阅读一些无用的东西,那么里面有一些关于游戏开发的评论。
  2. 混合-您需要自己配置一些东西,但所有数据仍在云中:
    • AWS S3-有些git lfs存储的实现,可以将文件路由到类似git-lfs-s3等的S3中。价格看起来还不错,但是在使用亚马逊时必须非常小心。因为很难计算费用额(作者对您的费用不承担任何责任)

  3. 半混合-blob文件转到专用服务器:
    • Nexus储存库管理器-与maven或python本地储存库配合使用时,和docker一样它有大量的存储空间,几乎满足您所有想象,所以为什么不将它用于lfs呢?

  4. 中核-都存储在专用服务器上:
    • GitHub EnterpriseBitbucket ServerMicrosoft DevOps Server-如果您有这样的资金和需求,那么为什么还没有购买呢?
    • GitLab-与云版本不同,文件存储空间受HDD和配置此服务器人员的友善程度而限制。
    • Gitea-也具有lfs实现功能,但您需要先对其进行配置。
      5.Harcore:
    • 您可以编写lfs服务器实现,而不必为Blob管道编写自定义工具。它可以将文件随时存储到S3。您真的要从头开始创建自己的工具,而不是扩展当前众所周知的工具吗?

因此,git lfs看起来还不错(它也将用于本博客)。宠物项目的其他基础设施工具看起来像是开销。成本最低的解决方案始终可以赢得公司的青睐。对于我自己,我选择啦…我想您已经通过本文开头的图片知道了。下次见! =)


如果您喜欢这篇文章,可以为它提供支持



Privacy policyCookie policyTerms of service
Tulenber 2020