ゲームプログラミングにおけるモジュール分割

プログラミングを行う上で、処理をある単位で分割してプログラムを組むということが行われます。これはよく「モジュール分割」と呼ばれます。ゲームプログラミングにおいても、このモジュール分割はしばしば行われます。では、ゲームプログラミングする上でどのような内容のモジュールが作られることがあるのかご紹介します。

コアシステムモジュール

コアシステムモジュールは、プラットフォームAPIを直接使うような"システム"に近い位置に居るモジュールです。主に以下のようなモジュールがあります。

  • ファイルI/O
  • リソース管理
  • グラフィクス
  • サウンド

この「コアシステム」系のモジュールは、ライブラリやミドルウェアなどによって提供されることが多いです。それぞれの具体的な仕様については、設計毎に異なりますし、「どういう仕様であるべきだ」という話(例:「サウンド管理はリソースレベルで管理すべきか?」など)はについてはここでは触れません。

ゲームモジュール

対してこちらは、ゲームシステムやゲームロジックに近い位置にあるモジュールです。ゲームシステム上で必要になる仕組みや、ゲーム仕様を実現する処理単位などがこれにあたります。例として、以下のようなものが挙げられます。

  • タスクシステム
  • ゲームモード/シーン管理
  • マップ/イベント管理
  • スプライト
  • キャラクター管理

これら以外にも、ゲームジャンルによっては様々なモジュールが必要になってきます。

【注意】ここでは「コアシステムモジュール」「ゲームモジュール」という呼び方をしていますが、これはあくまで私個人が定義した名称であって、すでに誰かが似た概念を提唱していた場合、それと異なる名称である可能性があります

ゲームの企画書を書く"伝える"以外の目的

ゲームの企画書を書く目的としてまず一番に思いつくのが「ゲーム開発に携わる人に対して企画の意図と内容を伝えるため」というのがあります。確かに、その企画の意図と内容を伝えるためには、それをまとめた資料というのがあったほうが良く、それが「企画書」という事になると思います。では、もし企画に携わる人間が「自分たった一人」であった場合、企画書を書く必要は無いのでしょうか?

私が考える、意図と内容を人に伝える以外の「企画書を書く目的」としては「企画内容を自ら参照・記憶し、改良を重ねる土台とするため」というのがあります。

参照する

人の記憶というのはとても儚く、それを思い出さない限り、そもそもそんな記憶があったのかどうかすら証明することができません。今あなたが思いついたアイディアを、ぜひ書き留めて下さい。あなたは記憶を失うことはないでしょう。

記憶する

アイディアというのは、記憶してある点と点を結びつけた時に生まれるものです。あなたは、あなた自信が考えたアイディアを忘れることは無いだろうと考えるでしょう。しかし、先程も申し上げましたように、自然の流れに沿うと、その記憶は失われることになります。新しく考えたアイディアを記憶するために、そのアイディアを何度も参照しましょう。そして、そのために記録し、まとめるのです。

改良する

プログラマの間で言われていることで「自分が書いた3日前のコードは他人のコードのように見える」というのがあります。これはプログラミングだけに言えることではなく、自らが考えたこと全般で言えることのように思います。同様に「企画内容」についても、数日経てば「どうしてこんなことを考えたんだろう?」と、自分で考えた企画にもかかわらず、あとになって疑問を抱くことがあります。この疑問抱くこと自体には問題は無く、むしろそうやって疑問を持つことが、企画の改良に繋がっていくと思います。

また、企画の意図と内容を企画書としてまとめておくことで、それを他人に評価してもらうことが可能になります。ぜひ、レビューを受けましょう。そして意見をもらい、さらなる改良へとつなげるきっかけとしましょう。このとき注意していただきたいのは、企画の主軸となる意図を明確にしておくということです。意図が不明な場合、レビュー者は無責任な提案を声高々と繰り返すでしょう。また、意見や提案とも言えないただの非難や不毛と感じる的はずれな意見は、基本的には聞いてるふりをして無視しましょう。


以上のように「ゲームの企画書を書く」ということは、それを伝える以外にも、自分の中で考えをまとめ、記憶し、改良へとつなげるツールとなるのです。ぜひ、アイディアを記録し、記憶し、企画レベルでの品質向上を目指しましょう。