番外企画・初心者のためのゲームの作り方の巻
ゲーム(に限らず、何かのソフト)を作ってみたいが、どこから手をつけていいか分からない・・・プログラミングを初めて間もない人の多くが抱えるであろうこの悩みを解決しましょう、という講座なのですが、自分がゲームを作るときのやり方を伝授するわけではなく、かなり教科書通りな作り方の紹介をしています。自分は頭の中で十分な構想を練らないうちから制作を始める「行き当たりばったりプログラマー」ですので、それを教えてゲームが作れる人はすでに初心者じゃありません(笑)。あくまで漠然とした状態からエディタを起動させてホイホイとプログラムが組めない人をターゲットにしていることを理解した上で読んで下さい。
1.どんなものを作るか決める
初っぱなからこんなタイトルですが「ボケー」とか言ってよそのページへ飛ばないで下さい(どこかの文章に似てるな)。まずゲーム制作に当たってどのようなジャンルのゲームを作りたくて、どんな内容・・・縦スクロールか横スクロールか、といった程度の簡単な仕様のこと。ストーリーとか、細かい設定ではないので注意・・・にするか、などをおおざっぱに、それでいて漠然としすぎないくらいに決めておくことが大切です(これはゲーム制作やプログラミング全般に限ったことではないが)。つまり、「ゲームデザイン」ですね。画面のイメージなんかを紙に書いておくといいでしょう。ここ以降でもとりあえず紙と鉛筆は用意しておいた方がよいです。いろんなことを記録しておけば、制作が長引いても目標からはずれそうになったときの軌道修正がやりやすくなるので。
2.さらに細かく仕様を決める
続いてゲームのルールやシステム周りを具体的に決めていき、仕様を固めていきます。この段階で仕様を固めれば「行き当たりばったりモード」に突入した時にくちゃくちゃになってしまい、結果はじめに予想したものよりヘボいものができた、なんてことが防げると思います。ただし、前のステップでもそうですがシステム部分が決定した時点で絶対に次のステップへ飛んで下さい。間違ってデータ部分をあれこれ決めてしまうとかえって作りにくくなります。
3.ゲームの流れをフローチャート化する
「どこから作っていけばいいか分からない」という問題を解決するための手段として一番有効な方法ではないでしょうか。フローチャートといってもそんなに凝ったものを作る必要はなく、処理の流れが分かるようにつないだ図を用意すればいいのです。あまりおおざっぱに書きすぎると意味がないので、ある程度細かく記述しなくてはなりません。あと、ここで言う「流れ」というのはプログラムの話です。間違ってもストーリーや面構成などを書かないように。
4.フローチャートにそってプログラムを組む
プログラムを組むための準備が(完全ではないにしろ)整ったので、あとはそれを参考にプログラムを組んで行くだけ! 簡単でしょ? んなワケあるかぁ(自己完結)という話なのですが、以下にちょっとしたテクニックを紹介します。
●どうでもいいところは後に回す
たとえばタイトル画面やデモ、エンディングなど急いで作る必要のない部分はとりあえず簡素なものを用意しておき、メインルーチンが完成してからキチンとしたものを作り直すのです。大事な部分を後に回して力つきてしまい、予想以下の出来(最悪、未完成)に終わってしまったのではここまでやってきた意味がありません。まずはメインルーチンの作成に全力を注いで下さい。
●まずは簡素に作り、徐々に理想に近づける
前のと似ていますが、一気に完成形のプログラムを作るのではなく、「自キャラが動くだけ」から初めて「攻撃させる」「敵が出てくる」「当たり判定をつける」・・・と処理をくっつけていくと作りやすいです。ある程度完成したときに「とりあえずバージョン」としてベータリリースもできますし。これらの処理を全てサブルーチンにしておけば、それぞれの処理を個別に動作チェックを行った後にgosubで順番に実行してやることでメインルーチンができあがるという、後から見てわかりやすい(と思われる)プログラムになりますが、処理が複雑になるとどうしてもネストが深くなってエラーになりやすくなると言うことと、処理速度を要求するリアルタイムゲームでは大きく速度を落とす原因になってしまうという難点があります。
●こまめにデバッグする
ある程度キリのよい処理ができたらすぐにデバッグをしましょう。逆に完成寸前までデバッグしていなかったりするとやたら深いところでバグが潜んでいて、修正できないと言う事態にもなりかねません。それから、また前の記述と重複しますが、処理を細かく分けて作ることで部分的なデバッグがしやすくなります。複雑な内容のプログラムになるほどいちいちデバッグするのがおっくうになりますが、そこは気合いでカバーして下さい(オイ)。
●前に作ったプログラムを使い回す
なんとも中級以上のプログラマーの失笑を買いそうなテクニックですが、ランキングや初期設定など、プログラムごとにさほど大きな変化がなくてしかも以前に作ったことのあるという処理はそこからコピーしてくることで手間を減らせ、開発速度の上昇に役立つことでしょう。特に、同一ジャンルのゲームなら独自ルール以外の部分はほぼ全て流用可能なので、過去のプログラムがわかりやすく、かつ完成度の高い作りになっているならばデータを差し替え、システムを若干変更して完成になります(爆)。自分ではこんなことはしてませんけどね←だったら書くなよ。
5.データを作る
便宜上5番目としましたが、データがないとプログラムが組めない箇所というものが少なからず出てくるので、実際にはプログラムと併行して作成することになります。まあ、普通に作ればいいのですが、マップデータなど専用の作成ツールがないものは多少面倒でもエディタを自作すると楽になります。
6.バランスを調整して、完成
ものによってはプログラム作成より大変な部分ですね。ここで手を抜くと一発でクソゲーになってしまいかねないですから、できるだけ多くの人に遊んでもらって得た意見を参考に調整するのもいいですし、他人の作ったソフトを参考にするのもよいでしょう(どんなバランスにするのがよいかは、初心者向けにするなどの条件によって大きく変わること、かなり個人論が入ることなどから省略)。
とまあ、こんな感じじゃないでしょうか。ポイントは「プログラムとは別の形で流れを把握する」ことです。これが分かれば楽にプログラミングが進むと思います。