Unityでゲームを開発する前提として、対象となる言語が使えることとUnityの基本知識があることは当然です。ゲーム開発にはそれ以外にも技術的な知識が必要となってきます。
スマートフォンゲームの構成
スマートフォン向けゲームの構成は、大きく分けるとインゲームと呼ばれるゲームそのものの部分とアウトゲームと呼ばれるゲームの設定をする部分に分けられます。たとえば育てたキャラクターを使ってパズルをクリアしていくゲームがあるとします。その場合、インゲームがパズルで、アウトゲームがキャラクターを育てたり、新しいキャラクターを手に入れたり、パズルで使うキャラクターを選んだりする部分です。
どちらの構成をとっても、ユーザの入力を受けて画面の裏側でデータをロードしたり、サーバと通信を行ったりと、見えないところでもいろいろな技術要素を用いています。ここでゲーム開発に必要な知識をまとめてみます。
クリエイティブの知識
画面に見える技術要素は、ユーザの入力を受け付けるUIとキャラクターのようなゲームの状態の一部を表す要素の2つに大別できます。UI要素はUIデザイナーが作成したグラフィックに、Unityエンジニアがプログラムを実装して、ボタンやスクロールバーといった機能を付与します。ゲームの状態を表す要素は、その画面において必要なメインキャラクターや敵キャラクター、マップやエフェクトなど、ゲーム内での状態の変化を視覚的に表すのが目的です。プログラムを実装するのはUnityエンジニアの役割ですが、クリエイティブを生成する知識はもちろん、ゲームの演出効果を高めるパーティクルエフェクトの知識なども身につけた方が良いでしょう。
通信、ネットワークの知識
画面に見えない技術要素として、オンライン機能が挙げられます。たとえば、チャットやメールのようなコミュニケーション機能や、対戦型のゲームにおいては世界中のユーザといつでもリアルタイムに遊べる通信機能です。これらの機能を実装するには、通信、ネットワークについて理解しなくてはなりません。近年リリースされるゲームではマルチプレイ機能が当たり前になっています。マルチプレイにおける通信処理や実装の方法も押さえてください。
開発効率化の知識
ゲーム開発の現場では限られた時間と予算で進める必要があります。リリースフローを考えてみると、アップデートのたびに同じビルド、テストなどの作業が必要になります。ヒューマンエラーを防ぐためにもCIツールなどを利用して自動化できる手順は自動化してください。また、ゲーム開発にはソフトウェア開発のMVCパターンのようにMVVMパターンと呼ばれる開発手法があります。これによりプレゼンテーションロジックとビジネスロジックを分離でき、チームでの開発が効率化されます。そのほかにもゲーム開発を最適化するためにスクリプトを用いてエディタを拡張し、独自の開発環境を用意することが必須です。たくさんのオブジェクトを用意することになるので、アセットバンドルを用いた効率的なリソース管理も必要です。
ゲームシステムの知識
せっかく作成されたゲームですから少しでも長く運用したいと考えるでしょう。ユーザが離脱しないために、常に新しい機能を追加できる運用を計画しましょう。
おわりに
そのほかにもスマートフォンゲームの開発にはOS特有の問題が発生したり、プラットフォームのレギュレーションに引っかかって配信できないなどの問題も出ます。このように、ゲームを開発するには幅広い知識が必要になることが分かります。本誌ではこれらの項目をなるべくカバーするように構成しています。本格的なゲームを開発するのであればぜひ手にとってみてください。