リリースタイムラインの邪魔になる生産性に関わる目に見えないコスト

Jan 21, 2022
島の岩場

このウェブページは、お客様の便宜のために機械翻訳されたものです。翻訳されたコンテンツの正確性や信頼性は保証いたしかねます。翻訳されたコンテンツの正確性について疑問をお持ちの場合は、ウェブページの公式な英語版をご覧ください。

今すぐ解決しなければならない緊急の問題を解決するために、この1ヶ月の間に何度、今やっていることを中断し、行動に移さなければならなかっただろうか?ゲーム開発にありがちな落とし穴のひとつは、一見取るに足らない小さな非効率を雪だるま式に大きくしてしまうことだ。

プロジェクトファイルのダウンロード待ちであれ、また新たな合併問題の解決であれ、あなたのフロー状態が1日に何度も中断されると、物事はその隙間から抜け落ち始める。バグがコードに侵入し始める。配備サイクルが長くなる。徹夜が当たり前になる。不手際があるたびに摩擦が生じ、やがてそれはチーム全体に波及する。不満は募り、士気は下がり始め、スタジオのやり方がうまくいかないのは明らかだ。

DevOpsソリューションを導入することで、この混沌としたサイクルを断ち切ることができる。適切なプロセスを導入することで、あなたとチームの全員がタスクの切り替えに費やす時間を減らし、最高の仕事を生み出すために必要な集中力を取り戻すことができる。よく定義された運営原則と適切なツール一式は、コラボレーションを改善し、展開サイクルをスピードアップする。洗練され、安定したゲームを、何度でも、時間通りに、高品質で発売することができます。

Unityは長年にわたり、数え切れないほどのゲーム開発者やスタジオと仕事をしており、私たちのチームの専門家の多くはゲーム開発者自身です。我々の経験では、バージョン管理システム(VCS)は効果的なDevOpsの基盤であるが、スタジオにとって最大の悩みの種でもある。それは偶然ではない。

このEブックでは、スタジオが最も得意とする創作活動から遠ざかっている3つの最も一般的なバージョン管理の落とし穴について、当社の製品チームとエンジニアリング・チームからの洞察を集めた。Unity DevOpsのVersion ControlコンポーネントのようなVCSソリューションが、どのようにして軌道に乗せることができるのか。

問題その1:パラレル開発

状況だ:1つのプロジェクトで複数のワークフロー

1人のチームでない限り、複数のチームメンバーが同じプロジェクトに取り組むことになる。余分な手を持つことは、スピードでスケールアップするのに役立つのは明らかだが、スピードが落ちることもある。

並行開発とは、さまざまなチームメンバーが複数のブランチで作業することで、後でそれらをマージすることができる。コーダーは通常この方法で作業するが、アーティストは個々のファイルやアセットを扱うため、ロック付きの単一ブランチで作業する傾向がある。

コストだ:取り戻せない時間

生産性への影響は明らかであり、計り知れない:多くの時間を失った。

作業をやり直したり、マージの衝突を解決したり、紛失したファイルを探し出したり、すでにコミットした変更のダウンロードを待ったりしなければならないことによる生産性の低下は、リリースサイクルの遅れ、チームメンバー間の内部対立、ユーザーがゲーム内で見つけたバグを素早く修正できないことにつながる。

問題だ:仕事の喪失と内部抗争

ソロのゲーム開発者でもVCSを使うメリットはあるが、複数のチームメンバーで作業する場合は、まさに必須だ。

バージョン管理をしていない場合、開発者同士がお互いのコードを上書きしてしまい、作業の損失や多くのフラストレーションが発生する可能性がある。しかし、今日、一般的なVCSツールの使用でさえ、ゲーム開発チームには問題が生じている。

例えば、チーム全員がGitを使っている場合、よくあるシナリオの一つは、アーティストのような非技術的なチームメンバーがツールを完全に理解していないことです。特にファイルをロックする機能がないと、変更を失うことが非常に簡単になる。また、システムの透明性やフォローが容易でないため、問題解決のために開発者に過度に依存することが多く、その結果、さらに仕事が失われることになる。

Gitはファイルをロックすることができないため、多くのゲーム開発チームはチーム全体でPerforceを使い、単一のシステムと真実のソースにこだわっている。しかし、開発者は、Perforce の「タスクストリーム」アプローチによるブランチとマージの速度とパフォーマンスに不満を感じているかもしれません。特に継続的インテグレーションを設定する場合、すでに複雑なプロセスにさらに複雑なレイヤーを追加することになる。私たちが話をするクリエイターのほとんどは、Perforceを使ったタスクベースの開発には挑戦しないと言います。理想的なワークフローではないんだ。

ステージで音楽を演奏するアニメーション・トリオ

さよならボルケーノ・ハイ by KO_OP

解決策:一貫したプロジェクト組織

ファイル整理などのルールを明確にし、広く周知させることで、チームの連携を保つことができる。

また、チーム全員が使えるVCSを選ぶことをお勧めする。例えば、アーティストはプログラマーに頼ることなく、独立してプロジェクトに貢献できるはずだ。誰もが使いやすいバージョン管理システムを導入することで、プロジェクトファイルの変更を行うことが、気後れするようなプロセスではなくなる。

モントリオールを拠点とするスタジオKO_OPは、ゲーム『グッバイ火山高』の制作中、アーティストとプログラマー間の非対称性やコミュニケーションミスに対処した。適切なVCSを導入することで、進捗を阻害する問題をどのように解決したかを紹介する。

問題その2:冗長なツールとサイロ

状況だ:異なる役割、異なるツール

Uチームは通常、単一のバージョン管理ソリューションから始め、問題が発生した後に複数のシステムに移行する。根本的に、開発者とアーティストは、コードとバイナリを扱うため、異なるワークフローを必要とする。その結果、チームはアーティストがPerforceなどのツールで作業し、開発者はGitLabやGitHubで作業することになる。

コストだ:見返りのない2倍の仕事

ゲーム開発では、新しいアイデアを迅速に反復し、テストするために、1秒1秒が必要とされる。複数のバージョン管理ツールは、同期やマージのコンフリクトなど、時間を浪費する問題を解決するために採用されることが多いが、しばしばこれらの問題を複雑にしたり、他の消耗を生み出したりすることがある。例えば、2つのシステムを統合することなく新しいプロセスやワークフローを作成する時間や、2つのシステムを維持するための財務コストが増加する可能性があります。

問題だ:ワークフローの増加、問題の増加、メンテナンスの増加

さらに説明すると、チームは通常、PerforceベースかGitベース(GitLab/GitHubなど)のどちらかでスタートし、それぞれのユニークなワークフローが生み出す痛みに対処する。Perforceでは、分散作業やエフェメラルブランチでの作業ができなくなる。Gitでは、作業が分散しているため、ファイル・ストレージに関する問題が発生する。チームはGit Large File Storage (LFS)を使って、バイナリの1つのバージョンだけがマシンに保存されるようにすることができますが、これはスピードと、一元化されているようでされていない混乱したワークフローを犠牲にしています。

複数のソリューションを使用する場合、スタジオが遭遇する一般的な問題が2つある。1つ目は、プロジェクトのために2種類のバージョン管理技術を維持することで、通常、この2つを統合するための面倒なワークフローやプロセスが含まれる。もうひとつは、知識とトレーニングを中心としたものだ。まったく異なる2つのシステムで、何か問題が発生したときにクリエイターやチーム全体のブロックを解除するには、両方のエキスパートが必要だ。

Crying Suns』のゲームアート

クライング・サンズ by オルト・シフト

解決策:ツールチェーンの評価と最適化

理想的には、すべての資産を同じバージョン管理システムで管理し、バージョン管理し、チームのさまざまなニーズに合わせてワークフローを調整することだ。

プロセスや道具を吟味し、それがスタジオにとって本当に有効かどうかを判断することが重要だ。

これによってスタジオは、チームからチームへアセットを転送するためにバラバラのパイプラインを作らなければならないという、よくある頭痛の種を回避することができる。

複数のワークフローに対応できる、あるいはシステム間の強固な統合が可能な単一のVCSを推奨し、誰が何に取り組んでいるか、各アセットの最新バージョンを追跡できるようにする。

バージョン管理システムを評価する際に考慮すべき点について学ぶことから始めましょう。

Problem #3:コミットするには大きすぎる

状況だ:プロジェクトファイルの頻繁な更新が必要

大きなファイルやバイナリを扱うことは、ゲーム制作のユニークな要素の1つですが、バージョン管理の問題を引き起こす可能性があります。あなたがGitを使っている開発者で、コードをチェックインしようとしているとしましょう。そのためにはまず、他のチームメンバーからの最新の変更で自分のワークスペースを更新する必要がある(これはプル&プッシュに相当する)。

コストだ:さらに時間を浪費

アップデートのダウンロードを待つ時間は無駄な時間だ。その時間が積み重なる。より迅速なシステムにより、ツールによってプロジェクトが停滞することなく、チームはタスクの完了に集中することができます。

問題だ:ワークフローの中断

バージョン管理システムの中には、大きなバイナリを扱うときに非常に時間がかかるものがある。アップデートをクリックしてからチェックインするまでに5分も待たされ、やっと人生をやり直せるとしたら、どれほどイライラするか想像してみてほしい。

ゲーム開発では、素早く動く必要がある。パイプラインの初期段階での非効率性によって、ゲームに変更を加えたり、バグに対応したりするのに時間がかかりすぎると、こうした問題は後々まで深刻化するだけだ。

多くのスタジオは、PerforceやGit LFSのようなソリューションを使って、大規模なバイナリ資産の問題を解決していますが、それぞれに左記のような妥協が伴います。

リターン・トゥ・ナングリム』より「冬の廃屋

ナングリムへの帰還 by Sycoforge

解決策:ファイルベースのバージョン管理を使用する

ファイルベースのVCSを選べば、作業を大幅にスピードアップできる。

このようなシステムを使えば、貢献者はプロジェクト全体ではなく、変更を加える必要のあるファイルだけをダウンロードすることができる。より速く、より安全だが、本当に効果的であるためには、全員が同じ方法でファイルを整理していることを確認しなければならない。

バージョン管理ソリューションを選択する際には、前もって考えておくと、後で多くの頭痛の種を避けることができる。ゲームの規模は大きく、複雑になっている。適切なバージョン管理システムを早く導入すればするほど、永続的な成功のための準備が整う。

Sycoforge社の『Return to Nangrim』における反復開発へのアプローチと、Unityのバージョン管理がプロジェクトの規模拡大にどのように対応したかをご紹介します。

ゲーム開発のためのUnityバージョン管理

バージョン管理はDevOpsの基礎となるものだが、ゲームスタジオにとっては対立の中心的な原因でもあり、すべての貢献者に真に有効なソリューションは多くない。Unity DevOpsのバージョン管理は、まさにこのような時間を浪費する問題を解決するため、ゲーム開発者をサポートするユニークな立場にあります。競合との比較は以下の通り。

ジャングルに佇む赤毛の短髪の選手

パラレル開発

並行開発を効果的に進めることは必須であり、チームの各メンバーはそれぞれ異なる好みを持つかもしれない。GitHub、GitLab、BitBucketなどのGitベースのツールは、特に開発者に人気のあるバージョン管理システムです。Gitの人気により、ユーザーは大量のユーザー拡張、統合、相互運用性を利用できるようになる。しかし、チームやプロジェクトの規模が大きくなるにつれて、多くの大規模なゲームスタジオやAAAゲームスタジオでは、Perforceのような集中型ワークフロー・ソリューションを使用して、大規模なバイナリ資産を扱いながら、アーティストや非技術系ユーザーによりよく対応できるようにしています。

開発者のための強固なブランチとマージ機能、アーティストのための集中作業とファイルのロック機能により、Unityバージョン管理のようなシステムが役立ちます。Unityエディタで作業している場合、バージョンコントロールはUnity UIとシームレスに統合されているため、コラボレーションが促進されます。

冗長なツールとサイロ

アーティストとプログラマーでは、バージョン管理の使い方に一般的に異なる好みがあるかもしれないが、どちらの方向にも過剰に修正することの長所と短所を知っておくことは重要だ。特にリモートで仕事をする場合、単一のバージョン管理システムと「真実の情報源」を持つことで、複数の異なるパイプラインを維持することによる多くの不満や時間の浪費を解消することができる。

さまざまな長所や短所があるにせよ、GitHubやPerforce、あるいはDropboxやGoogle Driveといった多くのシステムは、ワークフローに合わせて設定することができる。コラボレーションの問題を軽減するための統合や拡張機能を探すか、すべての関係者のために設計された単一のシステムを選択する。

Unityバージョン管理は、単一のリポジトリをさまざまなモードで操作することをサポートしています。この機能により、2つの異なるシステムを維持・接続する手間をかけることなく、複数のワークフローのパワーを得ることができます。

Unityバージョン管理では、アーティストはGluon UIを使用して集中モードでリポジトリを操作することができ、それによってPerforceのようなソリューションで作業するのと同じスタイルをシミュレートすることができます。開発者は、デフォルトのUIを使って分散モードと同じようにリポジトリを操作し、GitHubやGitLabのようなGitベースのソリューションと同じワークフローをシミュレートすることができる。

水たまりの横に小さな生き物

コミットするには大きすぎる

ゲーム開発とは、大規模なプロジェクトを扱うことだ。スタジオの規模が拡大するにつれて、ソース管理システムも同様に拡大できるようにする必要がある。

Gitの分散モデルはゲーム開発のユースケースのために設計されたものではありませんが、Gitがより簡単にバイナリファイルを扱えるように設計された拡張機能がいくつかあり、Git-LFSが最も広く使われています。それでも、Gitはアート資産を管理することを念頭に置いて設計されたわけではない。だからこそ、Perforceのような他のソリューションが大規模なスタジオで導入されることが多いのだ。

Unityバージョン管理は、ゲーム開発に理想的な大容量ファイルの処理に関して、市場で最もパフォーマンスの高いソリューションです。ファイルの読み込み待ちのダウンタイムを大幅に短縮します。Unityバージョン管理は、他のソリューションよりも最大5~8倍高速です。同じコンテンツを扱うことに変わりはないが、1日に何度も5分間のダウンロードを待つ必要はなくなった。その代わり、必要なものを数秒で手に入れることができる。

妥協することなく制作

Unityバージョン管理は、ゲーム開発のために特別に設計されており、あらゆる規模のスタジオのアーティストや開発者をサポートします。ファイルベースのワークフローと直感的なUIでアーティストを支援するだけでなく、プログラマーのための堅牢なブランチとマージを含めることで、すべてのユーザーがコラボレーションと反復の俊敏性を向上させることができます。

Unityバージョン管理は、クローンリポジトリなしで作業を一元化し、WANに最適化された高速なデータ転送で巨大なファイルやリポジトリをサポートします。同社のワークフローツールGluonを使えば、技術的な素養のないチームメンバーでも、あらゆるバージョン管理プロトコルを簡単に適用することができる。

Unity DevOpsでワークフローをスピードアップし、DevOpsツールチェーンを構築しましょう。妥協することなく制作し、効率的に作業することで、期待通りのクオリティで、納期通りに市場に送り出す。今日から無料で始めましょう。

e ブックを入手する

このフォームにご記入いただくと、業界のエキスパートによる最先端の洞察やソリューションを入手できます