米国と日本では,ゲーム開発に対する意識がまるで異なるのではないか---。以前から気になっていたことだが,東京ゲームショウ2006における米Epic GamesのCEO(最高経営責任者) Tim Sweeney氏とビジネスディベロップメント担当副社長Jay Wilbur氏の講演を聞いて改めてそう感じた(参考記事「『良いツールは2倍の人数の開発者に勝る』---Unreal Engineの開発者が語る次世代ゲーム開発」)。米国では,プレイステーション2(PS2)などのコンシューマ機向けゲームの開発を,パソコン用ソフト開発の延長と考えている。対して日本の場合,ゲーム開発はむしろ組み込みソフトの開発に近いといってもいいような位置付けだ。

 こうした位置付けの違いは,歴史的な背景によるものだろう。米国でゲーム開発と言えば,Apple II,VGA/SVGAを搭載したIBM PC/AT互換機,そしてWindowsと,一貫してパソコン用ゲームの開発のことを指していた。先のEpic Gamesもパソコン用ゲーム・ベンダーとして出発した企業だ。

 対して日本の場合,多くの国産ゲームがパソコン用に新規開発されていたのはNEC PC-9800シリーズの全盛期だけである。その前にはタイトーのスペースインベーダーをはじめとするアーケード・ゲームがあり,また同時期に任天堂のファミリーコンピュータやスーパーファミコン向けのゲームがあった。Epic GamesのCEO Tim Sweeney氏も「日本のゲーム開発は,アーケード・ゲームなども含めて長い歴史を持つ」とその特異性を指摘していた。

 もちろん,数十KバイトしかないROMに焼き付けることを前提とした家電向けなどの組み込みソフト開発と,数十MバイトのRAMを利用できる現在のコンシューマ機向けのゲーム開発を一緒にするのは乱暴過ぎるとも言える。ただ,仮想記憶機構がなかったり,ハードウエアが同一であることを前提に開発できたりといった点は,Windowsアプリケーション開発とはかなり異なる点である。

メモリー不足は許されない

 WindowsにせよUnixにせよ,アプリケーションが使うメモリーは必要に応じて動的に割り当てるようにプログラミングするのが一般的だ。このとき,プログラマは一応エラー処理を記述するものの,「メモリーが足りなくなる可能性がある」と本気で考えることはあまりない。仮想記憶のおかげで,スワップが発生して遅くなることはあっても,メモリー不足が致命的な問題になることはまずないからだ。

 しかし,仮想記憶を持たないゲーム機では,メモリー不足に陥っても致命的な問題が発生しないようにしなければならない。しかも,パソコンと違って搭載メモリー量は事前に分かっているのだから,メモリー不足を回避するのは完全に開発者の責任だ。出現する敵キャラクタが1つ2つ減ってもプレーヤは気づかないかもしれないが,ボタンを押してもメニューが出ないといった事態は絶対に避ける必要がある。ましてハングアップしたりするのは論外だ。

 こうした事情で,ゲーム中常に表示される可能性があるメニュー画面などはコード,データともメモリー上に置いておくことが多い。メモリーに常駐させるとなると,“コンパクト”なつくりにする必要がある。 メニュー画面のデザインがゲーム画面に比べて妙に寂しかったりするのは,これが理由の一つだ。

 ちなみに,本当にメモリーが足りなくなる場合に備えて,メモリーをあらかじめ確保しておく(もしくは静的に割り当てておく)というテクニックは,Windowsでも使われている。例えばWindowsのメッセージ・ボックスは,メモリーを動的に確保することなく表示できるようになっている。さもないと,「メモリーが足りないというエラーをユーザーに通知しようにも,通知するためのメッセージ・ボックスを表示できない」といった事態に陥りかねないからだ。同様に,Windowsアプリケーション開発用のC++クラスライブラリMFC(Microsoft Foundation Classes)も,メモリーに例外オブジェクト(エラー通知用のオブジェクト)を静的に割り当てている。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら