ゲーム開発は、業務用のアプリ等を開発するのとは、ちょっと違います。
業務アプリは、ユーザーの生活の利便性を上げることが主な目的ですが、ゲームの目的は、ユーザーを楽しませる事です。
楽しんでもらえるコンテンツを作るために、どういった事に気をつけるべきなのでしょうか? 筆者の経験から、チームでゲーム開発をする際に気をつけたい事をまとめました。
※筆者はオンラインゲームの開発経験しかないので、コンシューマ系とは事情がことなるかも知れません。
その1:渡された仕様書はふわっとしたガイドくらいに考える
仕様書はプランナーさんが作ってくれますが、人によってはびっくりするくらいいい加減です。いい加減な仕様書を見たとき、「こんな仕様じゃ(プログラムを)書けないよ!」と怒ったりしないようにしましょう。
いい加減な仕様書が来たら、プログラマーである自分が、自分で仕様を決められるチャンスです。プランナーの意図をうまく読み取りつつ、自分としてはどういう仕様が良いと思うのかを検討し、ユーザー視点から見ても、プランナー視点から見ても、プログラマ視点から見ても、わかりやすいエレガントなソフトウェア設計を考えましょう。
そして、仕様変更は必ず起こると思ってください。どういう変更がありそうか、プランナーと相談しながら、可能性を探り、柔軟に対応できる準備をしておく必要があります。
また、いい加減な仕様をそのまま鵜呑みにして、プログラム設計をすることは、とても危険です。
少し知識のあるプランナーなら、フローチャートを書く人もいます。でもそのフローチャートをそのままプログラムに落とし込むのは絶対にやめましょう。多くの場合、プランナーの書くフローチャートは、「こんな時はこう動いてほしい」ということを表現しているだけで、プログラムの処理を書いている訳ではありません。
そこに書かれてある事と、そこには書かれていないあらゆる例外的なケースが正しく動くことを実現するために、どのようなデータと処理フローが必要かは、自分で考える必要があります。
その2:プランナーと上手にコミュニケーションする術を身につける
ある機能を実装するのに、いくつかの方法が考えられ、それぞれメリットデメリットがある、という状況が発生することがあります。
そういう時は、そのメリットデメリットをプランナーに伝え、どの方法を採用するか、判断してもらう必要がありますが、プログラムの具体的な中身の話をしても、プランナーにはわかりません。
よって、「この方法だと、今後こういう事には対応しやすいけど、こういうバグが発生しやすくなるかも」とか、「この方法だと、ごく少ない工数で実装できるけど、今後の仕様変更はしにくくなる」とか、そういった説明をしなければなりません。
なぜ?と聞かれたら、できるだけプログラム内部の話をせずに、うまく理由を説明する必要があります。(プランナーも素人ではないので、ある程度のコンピュータ用語は使って大丈夫です)
この連携がうまくいくかどうかは、自分のコミュニケーション能力にかかってきます。 コミュニケーション能力を磨くというのはなかなか難しいのですが、例えば周りの人でコミュニケーション上手な人がいたら、その人の振る舞いや、言葉の使い方を真似するのも、一つの手です。
その3:試行錯誤をいかに早く回せるかが、ゲームのクオリティを決める
ゲームづくりは、陶芸家がなんども作品を作っては壊すのに似ています。
作ってみて、遊んでみて、「これじゃない!」と言って壊し、作り直し・・・を繰り返すなかで、良い作品が生まれます。
陶芸なら、作業は一人で完結しますが、チーム開発ではそうは行きません。プランナーが「作り直したい!」と思ったら、実際に作り直すのはプログラマーです。
ただ、プランナーはプログラムを書き換えることはできませんが、データを修正することはできます。ゲームの挙動を変えるのに、データの修正だけで終わるのであれば、プログラマーの手を煩わす事なく、プランナーの作業だけで完結します。
よって、プランナーが作業しやすいデータ設計をして、その編集ツールを用意することは、面倒に思うことも多いかもしれませんが、おろそかにしてはいけません。
プランナーの利便性を上げることは、試行錯誤のスピードを上げることになり、そのままゲームのクオリティに直結すると思いましょう。
その4:自分の技術はまだまだだと思っておく
技術に関して自信過剰な人は、自分にしかわからないプログラムを書く傾向があります。チーム開発を行う場合、その人にしかわからないプログラムというのは、とても危険です。
本当に技術力の高いプログラマは、他の人にもわかりやすいプログラムを書きます。自分がいつまでもそのチームにいるという事はまずないし、もし自分がいない時に何か問題が起こった場合、他の人が調査しやすくするためです。
チーム全体の技術力をあげたいと思うなら、他の人の半歩先のプログラムを書いて、それを共有するようにしましょう。
また、常に技術力を向上させるためにも、「自分の技術力は高い」などと思っているのは良くありません。「まだまだ学べることがたくさんある」と思っている人の方が、成長するし、他の人にも好かれます。
まとめ
以上、筆者が考える、ゲームプログラマーなら気をつけたい事を紹介させて頂きました。
ゲームプログラマーを目指す方、ゲームプログラマーとしてステップアップしたいという方の参考になれば幸いです。