

Unity開発の時短テクニック/ゲーム開発効率術とは? 「Unity 2021入門」から学ぶ
書籍「作って学べる Unity本格入門[Unity 2021対応版]」(賀好昭仁著/技術評論社)から、Unity開発のエッセンスを学ぶ本連載。
今回はUnity開発の効率を上げるためのTipsを、書籍の中から一部抜粋して紹介する。
開発の効率を上げよう
ゲーム開発では、開発効率の向上を図ることはたいへん重要です。こだわりの機能や 演出にかける時間を少しでも増やせるよう、開発の時短テクニックを把握しておきましょう。
バージョン管理を利用する
「スクリプトを変更していたら、ゲームが動かなくなってしまった……」ゲームを開発していると、このようなトラブルにしばしば出くわします。トラブルが発生し てしまうと元の状態に戻すのにも一苦労です。
最も原始的な対策は、定期的にプロジェクトのすべてのファイルをコピーして保存すること です。保存した時点からやり直せるようになりますが、その都度ファイルをコピーするのはとても面倒で、管理もしづらいためオススメできません。
そんなときに役立つのがバージョン管理システムです。バージョン管理システムとは、ゲー ムのプロジェクトに含まれる各ファイルの変更履歴を管理するしくみのことです。
バージョン管理システムの代表的なものとしてGitがあります。
ファイルの変更を任意のタイミングで保存でき、いつでもファイルを前の状態に戻すことが可能になります。複数人数での開発をサポートしてくれる機能が多く、チームで開発する場合などは特に有効です。
個人でもメリットは非常に大きいため、開発人数に関わらず必ず導入することをオススメします。
Giはコマンドラインから利用しますが、SourceTreeなどのツールを使えばGUIで操作することも可能です。
また、Gitを使うべき理由は他にもあります。それは、Gitと連携できるオンラインのバージョン管理サービスの存在です。
Github、GitLab、Bitbucketなどのバージョン管理サービスにプロジェクトを丸ごと保存しておけば、もしパソコンが壊れてもいつでもデータを復元できます。
これらのバージョン管理サービスは、無料で使えるプランも用意されています。苦労して作ったゲームが消えてしまったら、悔やんでも悔やみきれません。悲劇が起こる前に対策しておきましょう。

自動ビルドを実行する
Unityでゲームを開発していると、ビルドにかかる時間が悩みのタネになります。
ちょっとしたゲームでもビルドにかかる時間は結構長く、ビルド中はエディタ操作もできないため、何度もビルドしているとかなりの時間を無駄にしてしまうわけです。
そんなとき活用できるのが、Cloud Buildという サービスです。
Cloud Buildは、前述のバージョン管理サービスとの連携が可能で、ファイルをバージョン 管理サービスにPUSH(アップロード)したとき、Cloud Buildが勝手にビルドをしてくれます。
そして、ビルドしたゲームはスマホで直接ダウンロード・インストールできます。もちろん、各種ストアにアップロードすることも可能です。
利用するためには、Unity Team Advancedのライセンス(執筆時点で月9ドル)が必要になりますが、手元でビルドしなくて良くなるのは非常に効果的です。
ちなみに、Cloud BuildはiOSのビルドでトラブルが起こりがちです。iOSビルドはmacOSとXcodeのバージョンの縛りが強いのに加えてアップデートもひんぱんなため、Cloud Build側での対応が間に合わないためです。
もしmacOSやXcodeのバージョンに依存するトラブルが起きた場合は、手元でビルドするしか手がありません。Cloud Buildを利用する際は、心の片隅に置いておいてください。
その他の開発効率化
開発効率の向上に役立つものは、他にもいろいろとあります。
Unityのエディタ上で開発していると、「こんな機能があったら便利なのに」と思うことがあります。
そのようなときエディタ拡張(https://docs.unity3d.com/jp/current/Manual/ExtendingTheEditor.html)を行うことで、自分好みの機能をUnityエディタに追加することができます。
Asset Storeには、強力な機能を備えたエディタ拡張Assetが多数存在します。

UniRxやUniTaskスクリプトを書くのに慣れてきたら、UniRxやUniTaskを使ってみるのもオススメです。どちらもGitHubからダウンロード可能です。
UniRxを使うと、値の変更を検知する処理を簡単に実装することができます。たとえば、所持コイン数が変わったらコインのUIをアップデートする、などの処理が非常にシンプルに記述できます。
UniTaskは、ハイパフォーマンスな非同期処理ライブラリです。Unityでの非同期処理はCoroutineでも実装できますが、UniTaskの方が高機能です。
たとえば、メインスレッド以外で処理を実行したり、非同期処理を実行したあとレスポンスを返したりすることが可能です(他にもいろいろな機能がありますが、ここでは割愛します)。
Tips:サーバーでデータを管理してみよう
プレイヤー同士でコミュニケーションを行うゲームの場合は、サーバー側にデータを保存する必要が出てきます。プレイヤー名や使用キャラクターなどのさまざまな情報をサーバー側に保存し、他のプレイヤーがそれを読み取ることでプレイヤー同士がつながります。
サーバーは自分で構築することも可能ですが、手っ取り早く準備する場合は、既存のBaaS(Backend as a service)を利用することをオススメします。
以下のBaaSではBaaSはUnity用のSDKが提供されていて、比較的簡単にゲームに組み込むことができます。
•Playfab
•GameSparks
•Firebase
•NCMB
•GS2
これらのBaaSはそれぞれ特徴があり、利用料金もさまざまで機能制限はありますが、無料プランも用意されています。
なお、これらのBaaSを使うとオンラインゲームを制作することはできますが、協力・対戦型のFPSやアクションなどのリアルタイム性が求められるゲームには向いていません(構造的にどうしても遅延が発生してしまいます)。
Unityでリアルタイムのオンラインゲームを開発する場合は、Unity公式のマルチプレイ向けサービスがあります。
また、公式以外にもマルチプレイ向けサービスはさまざまなものが存在しています。たとえばPhotonは2013年からサービスを提供しており、情報も豊富です。
詳しくはぜひ、書籍を参考にしてみてくださいね。
書籍情報

本書はUnityでゲーム開発を行いたい人を対象に、一つのゲームを制作する流れを通してUnity 2021の操作が学べる入門解説本。本書内で武器などを調達し、食べ物を求めながら冒険し、武器でモンスターと戦う3Dアクションゲームを制作していきます。
本格的なゲームを実際に制作しながらUnityの使い方を楽しみながら学び、実践的なテクニックも身に付けることができます。
RELATED関連記事
RANKING人気記事ランキング

NEW!
AI全盛期にオンプレミス回帰が加速? クラウドファースト見直しで問われるインフラエンジニアの役割

早期退職の嵐、予兆はどこに出る?「ネットで“自分”を公開」がパニック回避に

生成AI時代におけるデータサイエンティストの価値とは? 今後求められる三つのスキル

「ただ作る」だけでは足りない。ビジネス価値の最大化に挑む“攻めのシステム開発”の実態

大AI時代、FF14・吉田直樹がエンジニアの“手”に託す希望とは?【聞き手/今井翔太】
JOB BOARD編集部オススメ求人特集
タグ