Aksli本記事では、Unityゲームでの継続的インテグレーションとデプロイの必要性が高まっていることについてご説明いたします。技術的な詳細をご説明する前に、CI/CDが提供できる価値が急速に高まっている中で、一般的にDevOpsがビデオゲーム業界で過小評価されていることについてご説明いたします。次に、UnityプロジェクトにおけるCI/CDの具体的なメリット、考慮すべき多くの技術的課題、およびいくつかの解決策についてご説明いたします。本記事のトピックの概要は次のとおりです:Unityとは?Codemagicとは?どんな問題を当社は解決しているのか?Unityクラウドビルドだけでは足りない理由とは?Codemagicがこれらの問題を解決する方法とは?では、その前に、まず基本的なことをいくつかご説明いたします。Unityとは?Unityは、クロスプラットフォームの3D/2Dゲームエンジンとして、広く普及しています。これは、強力なアニメーションツール、内蔵の地形エディタ、サウンドミキシング、モバイル、AR、VR、ゲームコンソールなどのデバイスへの対応など、膨大な機能を備えています。Unityは、趣味の開発者から巨大なAAAスタジオまで幅広く使用されています。Guysなどの人気ゲームの制作に使用されています。Unityには巨大な開発者コミュニティがあり、公式およびユーザーが作成したチュートリアル、ガイド、デモ、アセットなどが無限に提供されています。Overflowでは、新しい開発者を支援したり、質問に答えてくれるエキスパートたちが常にいます。Codemagicとは?Codemagicは、主にモバイルプロジェクト用のCI/CDプラットフォームです。CI/CD(継続的インテグレーション、継続的デリバリー/デプロイ)とは、ソフトウェア開発における一連の原則と実践を表す包括的な用語です。CI/CDを実際に導入するのに役立つ専用ツールやプラットフォームがいくつかあります。これらには通常、ソフトウェアの(頻繁な)テスト、ビルド、デリバリーの自動化が含まれます。これらのツールは、プロジェクトのリポジトリと統合され、重要な変更が発生したときに、この自動プロセスを起動します。DevOps、GitHub、GitLab、Bitbucket、さらに、その他のセルフホスト型またはクラウドベースのGitリポジトリと統合します。Native、Cordova、Ionic、そしてもちろん、Unityにも対応しています。codemagic.yamlを使って、ビルド、テスト、リリースのパイプライン全体を自動化することができ、技術スタック(ご使用のプログラミング言語、フレームワーク、ツールなど)と統合することができます。Codemagicは、macOSとLinuxホストを備えており、iOSとAndroidプロジェクトを簡単に構築、署名、デプロイできます。Storeとシームレスに統合されています。どんな問題を当社は解決しているのか?CI/CDやDevOpsという言葉を聞いたことがない方は、これら2つがどのような関係にあるのか、なぜ学ぶことを検討しなければならないのかと疑問に思われるかもしれません。ゲーム開発者であれば、より良いゲームを作るためではなく、ゲームのマーケティングに貴重な時間を費やすのとまさに同じように、意識高い系のソフトウェア開発手法を導入することに、抵抗を感じるかもしれません。思うのは、珍しいことではありません。スマートに働くのではなく、がむしゃらに働くという文化ビデオゲーム業界は、長時間労働(残業代未払い)など、問題のある開発サイクルが蔓延していることで悪名高いです。これは、期待はずれでバグだらけのゲームが発売されることが多くなったことで、痛感させられる問題となっています。これは、ある程度予想できたことなのかもしれません。ゲーム制作は複雑です。それは、頭が痛くなるほど多くのクリエイティブな分野と、非常に複雑なソフトウェアとの連携が必要な共同作業です。消費者の要求、予算、プロジェクトの規模が大きくなるにつれ、ヒューマンエラーの数が増えているのは不思議ではありません。この業界でもう一つ沸騰しているトレンドによると、恐らく犯人は、「管理の不備」であると指摘しています。私が言及しているトレンドとは、開発者のホラーストーリーが増えているということです。リリース日を急ぎすぎたために、数え切れないほどの延期を余儀なくされたり、途方もなく長い開発サイクルの途中で、主要なチームメンバーがプロジェクトを離れたり、プログラマーが週80時間労働で働いて、発売後すぐに大規模なデイワンパッチをドロップしたりなど...。このようなことが恐ろしく多くなってきました。驚くことではありませんが、適切に実装されたDevOpsの原則は、この業界の主要企業以外ではほとんど見られません。これは確かに、あるべき姿ではありません。ソフトウェア業界以外の場所で働いたことのある人なら、誰でもこう言うでしょう。「どんなに優秀で情熱的な開発者であっても、ゲームは作るのが難しく、ヒューマンエラーは避けられない」、と。リリース前もリリース後も、一貫したビルドとリリースプロセスでゲームの品質を頻繁に検証することがゲームには欠かせません。UnityプロジェクトでCI/CDを活用するメリット本記事では、現代のゲーム開発におけるDevOpsの重要な価値について、あまり深くは掘り下げません。基本的な紹介をしています。少なくとも、CI/CDはますます重要な役割を果たし始めています。CI/CDは、すべてのリリースを滞りなく行うための特効薬ではありませんが、プロジェクトがビルドに成功し、テストに合格し、配布プラットフォームにデプロイされることを**保証します。これにより、より頻繁にQAテストを行うための強固な基盤を作り、最終的にはリリースプロセスや最終製品に対する信頼性を高めることができます。これらを踏まえた上で、ようやく、これらのメリットがUnityプロジェクトでどのように発揮されるのかについてお話することができます。手動でUnityプロジェクトを構築するのは時間の無駄(プロジェクトの規模によっては多大な時間を費やす可能性があります)になるのは言うまでもありませんが、明らかにスムーズな体験とは程遠いものです。プロジェクトが複数のプラットフォームを対象にしているとします。Editorで同じ単調なサイクルを繰り返すという苦痛をすでにご経験されているかもしれません。今までの経緯を考えれば、明らかにもっと良い方法があります。EditorのGUIを開く必要すらなく、ビルドプロセスを自動化したり、テストを実行したりできます(テストの書き方については、まったく別の喜ばれないトピックですが)。その結果、Unityのビルドをスクリプト化して、より効率的に、待ち時間を減らして実行することができます。これらのスクリプトをクラウド型のCI/CDプラットフォームや、Jenkinsを介してローカルの専用マシンにフックすることができます。これには、魅力的な特典が多数ついてきます:プラットフォームの切り替えを忘れられるビルドプロセスの自動化を設定すれば、この光景ともおさらばできます。自動的に構築、パッケージング、配布もう、貴重な開発時間を、手作業で構築し、圧縮し、ターゲットのプラットフォームに配布するのに費やす必要はありません。これらのステップはすべて、ビルドパイプラインのスクリプトによって自動化できます。先にお伝えしましたように、これにより、ゲームの価値を高めるための有益な作業にもっと時間を使えるようになります。Editorの大きな特長の一つは、プレイヤーを作る必要が一切なく、ゲームのかなり初めから最後まで開発できることです。手動でたまに専用のマシンでビルドを実行していると、最悪のタイミングでエラーや配布の問題が発生することがあります。前述しましたように、CI/CDはテストの実行、ビルド、ターゲットプラットフォームやQAテスターへの配布を自動的に、つまり、より頻繁に行うことができます。これは、コミット、タグの作成、プルリクエストの更新などでトリガーできます。自動化されたより頻繁なプロセスに切り替えることで、ソースコード、ビルドパイプライン、配布の統合の健全性を常に監視することができるだけでなく、最初のリリースやその後のパッチの配布準備に自信も持てます。iOSやmacOS用に構築macOSホストにアクセスできる環境があれば、Apple製品でビルド、署名、配布ができるかどうかを心配することなく、最終的にお好みのOSを使ってゲーム開発ができます。これらのホストを使って、ILCPPバックエンドでmacOS用にビルドすることもできます(これはmacOSホストでのみ可能です)。CI/CDの技術的課題そのすべてが素晴らしいと思いますし、実際に最高の結果をもたらすことができます。Unity用に何らかのCI/CDソリューションをセットアップしようとすると、多くのユニークな課題に直面することになります(そのうちの一つは、すでにお伝えしたとおりです)。Unityは、クロスプラットフォームのゲームエンジンです。これは、MacかiOSに向けて構築するという避けられない問題につながります。WindowsやLinuxでは、プレイヤー用のXcodeプロジェクトを構築できますが、コード署名の認証が必要で、配布用の最終アーカイブを生成するためにmacOSホストにアップロードする必要があります。macOSのビルドホストが、これらのターゲットに対して、パイプラインのどこかで必要になるということです。一部の管理されたCIプラットフォームでは、macOSのホストが提供されていますが、問題はそれだけではありません。UnityのSDKやプロジェクトでは、通常必要とされる帯域幅よりも多くの帯域幅が要求されます。SDKだけでも、同等のネイティブモバイルアプリのセットアップよりも、かなり大きなVMイメージが必要になります。必要なストレージ容量は、膨大な数の2D・3Dアセット、オーディオファイルなど、天文学的に大きくなります。VMはより多くのストレージスペースを必要とし、恒久的なストレージの可用性に対してより敏感になるということです。一般的なUnityのCI/CDパイプラインでは、GPUバウンド(負荷がかかる)またはアクセラレート(CPUとともにGPUを使用)されたジョブが多いため、ハードウェアの問題が深刻化します。これには、Playモードのユニットテストや統合テストの実行、ライトマップのベイク、シェーダーバリアントの構築などが含まれます。結果的には、さらに大きな問題を解決するのが先決です。UnityのライセンスシステムCI/CDパイプラインを確立するための技術的な複雑さのほとんどは、Unityライセンスの問題には勝てません。このライセンスの問題は、長い間この試みの主な障害となっています。Editorには登録ライセンスが必要です。IDのメールアドレスとパスワードでサインインするか、ライセンスファイルを提供することを意味します。これは、Editorを使って、選択されたCI/CDプラットフォームの任意のクラウドVM上に、GUIインターフェイスなしでプロジェクトを構築する場合にも適用されます。Editorのライセンスには2つの重要な制限があり、これが、些細な問題から大きな問題へと発展させています。ActionsのようなマネージドCIサービスには非常に不向きです。ビルドごとにライセンスの有効化と無効化を行う必要があるからです。一度に複数のビルドに使用することができないため、1つのライセンスでは拡張できません(1つのライセンスは一人用なため、これはライセンス侵害につながる恐れがあります)。これは、Azureの自動スケールのような機能にも明らかに問題を引き起こします。ローカルの専用ビルドマシンにライセンスを使用したり、ビルド後に自動的にリリースを試みることはできます。チームの規模やコンカレント(同時)の要求が高まると、すぐに柔軟性の問題に直面してしまいます。これらの制限はすでに、開発チームにとって、ライセンス管理によるコストの最適化が根強い課題となっていますが、CI/CDシステムにとってはすぐに、非常に困難な課題となります。Unityビルドサーバーこのような制約に対抗するために、Unityは2020年に待望の更新ライセンス制度を開始しました。ビルドサーバーのライセンスでは、専用のライセンスサーバーを介して、更新されていないライセンスのリース、返却、自動回収などを活用できます。これによってライセンスの価格設定も大幅に安くなっています。ビルドサーバーのライセンスには、独自の一連の大きな制限があります。専用のライセンスサーバーが必要。OSのバージョンで動作しますが、機能させるためには一貫したホスト名、MACアドレス、CPUの数が必要です。(クラウドVMは要注意)。このサーバーはプライベートネットワークのみを想定していますが、SSHトンネルで公開できます。LTS以降でのみ利用可能。Editorはない)。ProかEnterpriseライセンスプランで利用可能。Proビルドサーバーライセンス1件(1ライセンスあたり600ドル)か、Unityエンタープライズビルドサーバーライセンス5件(1ライセンスあたり400ドル)の単位で購入可能。新システムは、WindowsやLinux上で動作するフローティングライセンスサーバーで、SSHトンネルを介してリモートネットワーク内のクライアントや管理されたCIサービスに公開できます。このサーバーにより、ライセンスの使用や拡張が容易になり、もっと安価になります。これは、小規模なチームにとっても、クラウドベースのCI/CDパイプライン用の絶対的に推奨されるライセンス体系です。それでも、動作させるためには、それなりの設定とカスタマイズは絶対に必要です。Editorのライセンスを使用するには、重大な課題が複数あります。一方で、UnityプロジェクトでCI/CDを実行するための方法として、ある特定のオプションが、私たちの取り得る方法に関するリストからはっきりと欠けていました。ライセンスの問題を回避する簡単な方法は、一般的で汎用的なCI/CDツールやプラットフォームの代わりに、Unityクラウドビルドを使用することだと思われます。何が問題なのか?Unityクラウドビルドは、Unity自身が有償サービスとして提供している、初心者に優しいCI/CDソリューションです。これは最小限のセットアップを意味しますが、さらに重要なのは、ライセンスの問題を完全に回避することです。Unityクラウドビルドは、チームメンバー全員分の月額料金を支払う必要があり、ライセンスを追加購入する必要なしに追加料金でコンカレント(同時)ビルド数を増やせます。先にお伝えした山のような問題を解決する、魅力的で頭痛のしないソリューションのように見えるかもしれませんが、悪は細部に宿るものです。Unityクラウドビルドでは、パフォーマンスや各機能を簡単なセットアップと引き換えにしなければなりません。配布の自動化ができない最大の問題は、Unityのサービスでは、本当に配布を自動化できないことです。storeなどのサードパーティ製ストアにのみ接続されています。Store、Steam、itch.ioなどへの配布を自動化する明確な方法がありません。Unityクラウドビルドは、CI/CDソリューションというよりは、ビルドを手動でダウンロードできるマネージドCIサービスということになります。ビルドの遅さと制御の悪さビルド環境はほとんど制御できません。VMの仕様や外部ツールをコントロールすることはできないのです。先にご説明したことを考慮すると、カスタムVMのベースイメージを提供したり、専用ホストを使用したりする機能も明らかに欠けています。このため、Unityクラウドビルドは非常に遅くなり、高速化するためのオプションはありません。診断しにくい問題Unityクラウドビルドは管理されたシステムであり、ほとんどコントロールできないため、特に診断が難しいビルドの問題が発生しやすくなります。ビルドマシンやVMインスタンスに直接アクセスできないため、サポートはフォーラムに頼るしかありません。単独でUnityを使用しているユーザーの中には、このような理由で手動ビルドを選択している人もいます。当社はこの問題点、解決すべき理由、解決する過程で直面する課題などを確認いたしました。表面的には、Unityクラウドビルドはこれらの問題をすべて回避しているように見えますが、独自の頭痛の種を抱えています。そこで、今からようやく、Codemagicがご提供する代替ツールをご紹介させていただきます。コントロールCodemagicをご使用いただくと、CI/CDパイプラインを完全にコントロールできます。これにより、あらゆる規模のチームに付加価値が生まれます。ご趣味でご使用いただく場合、Butlerのような外部ツールと簡単に統合して、itch.ioのリリースを自動化できます。法人のお客様は、専用のマシンにカスタムベースのイメージをご利用いただくことが可能です。VMをご提供することが可能です。それらは専用のmacOSホストを備えており、これは特に、Unityのビルドを高速化する上で重要な役割を果たします。SDKなどを含めることができます。Proのビルドマシンをご選択いただくことも可能です。Playに配布するための統合が簡単です。複雑なGroovyスクリプトを書いたり、認証情報のプライバシーを心配したりする必要はございません。Codemagicには、認証情報を暗号化したり、iOSのビルドに自動的に署名したりするツールが組み込まれています。Codemagicは、Xcodeを搭載したmacOSホストをご提供しており、また、署名や配布用の認証情報を設定するための堅牢で安全なシステムをご提供しております。ポストビルドのスクリプトで他のプラットフォームへの配布を簡単に実現できます。柔軟な価格設定Codemagicは、趣味でご利用になるユーザー様向けに無制限の無料プランをご提供しています。go)プランでは、ご使用になった分のみをお支払いいただくご必要がございます。ビジネスと法人のお客様は、Unityクラウドビルドには全くない、さらに多くの機能をご利用いただけます。これらのオプションの中からご必要なものだけを対象にお支払いいただくことで、費用を最適化することができます。サポートご自分でUnity用Codemagicのセットアップに飛び込むご必要はございません。Kevinにご連絡いただき、デモを受けてみてください。Editorのライセンスを使用することもできますし、Codemagicがビルドサーバーライセンスのセットアップをお手伝いさせていただくことも可能です。稼動後は、Codemagicの情熱的で信頼できるサポートチームがお客様をサポートさせていただきますので、ご安心ください。Codemagicは、Flutterのユーザーアンケートで最高のCI/CDツールに選ばれました。パイプラインのいずれかの部分に問題が発生した場合はいつでも、Codemagicにご連絡ください。迅速に対応させていただきます。結論ゲーム開発におけるCI/CDの必要性は、どんどん明らかになってきました。何か月も放置していた専用のビルドマシンを起動して、さまざまなターゲットプラットフォームにゲームをリリースするのは、もはや合理的ではありません。自宅で仕事をするのが一般的になるにつれて、Unityプロジェクトを構築して配布するための明確で信頼性の高いパスを持つことが、本番環境においてますます重要になってきました。Unityの開発にCI/CDソリューションを導入するには多くの課題があります。パフォーマンスと帯域幅の要求が尋常ではなく、ライセンスシステムが不利に働く場合があり、Unityサービスのソリューションには多くの改善余地があります。Codemagicは、これらの問題に対する強力なソリューションをご提供しており、独自の利点を複数備えております。いずれのソリューションをご選択されるにしても、なぜゲーム開発にCI/CDが不可欠なのか、Unityゲーム用のオプションは何があるのかについて、より深くご理解いただけましたら幸いです。moreContinue。