【SIGGRAPH ASIA 2009】ゲームを作ってみよう!テニスゲームで考えるゲーム作りの歴史

『電脳戦機バーチャロン マーズ』『パワースマッシュ3』などでプログラマを務めたセガの平山尚氏は、横浜パシフィコで開催中のSIGGRAPH ASIA2009で16日、講演「テニスゲームを作ってみよう! ゲームプログラミングひとめぐり」を行いました。

ゲームビジネス 開発
【SIGGRAPH ASIA 2009】ゲームを作ってみよう!テニスゲーム考えるゲーム作りの歴史
【SIGGRAPH ASIA 2009】ゲームを作ってみよう!テニスゲーム考えるゲーム作りの歴史 全 16 枚 拡大写真
『電脳戦機バーチャロン マーズ』『パワースマッシュ3』などでプログラマを務めたセガの平山尚氏は、横浜パシフィコで開催中のSIGGRAPH ASIA2009で16日、講演「テニスゲームを作ってみよう! ゲームプログラミングひとめぐり」を行いました。

講演は学生や教育関係者向けに、「ポン」レベルのものからシェーダを実装した3Dテニスゲームまで、段階的に技術ポイントを解説していくというもの。最新テニスゲームに携わったプログラマーが、同じテニスゲームを題材にゲームプログラミングのツボを解説するという、非常にユニークかつ実践的な内容となりました。平山氏は著書「ゲームプログラマになる前に覚えておきたい技術」(秀和システム)でCEDEC AWARDS2009の著述賞も受賞しています。

なお本講演は平山氏が自作した専用ライブラリを用いて制作された、サンプルプログラムを例に行われました。こちらは講演内容をさらに詳しく解説したドキュメントと共に、ネット上でフリーウェアとして公開されています。(http://www.page.sannet.ne.jp/hirasho/siggraph.zip)

セガ平山尚氏


はじめに平山氏は、ゲームプログラムとは入力と内部処理と出力を繰り返す「無限ループ」構造が特徴だと説明しました。この1回のループ構造のことを、いわゆる「フレーム」と呼び、60フレームのゲームの場合は16.6ミリ秒です。つまり60フレームにこだわるなら、すべての内部処理を16.6ミリ秒以内で行う必要があります。

これらを背景に紹介されたのが「バージョン010」です。上下にパドルを動かして球を撃ち返す、いわゆる「ポン」タイプのゲームで、画面は40x30ピクセルでデザインされています。映像的には8ビット時代のパソコンゲームといったところでしょうか。ただし平山氏は「これだけでもゲームは作れるし、このレベルでおもしろいゲームが作れなければ、この先が辛い」と釘を刺しました。

ポンタイプのゲーム。左右に分かれて打ち合う表示にGPUが用いられ、ラケットが円形になったテクスチャの使用で、さらにカラフルになった


もっとも「010」は講演のネタという意味合いもあり、これだけではすぐに飽きられる「くそゲー」になっています。大きな理由にあげられるのが、ボールの反射角度が一定で、腕前を競う余地がない点です(余談ですが世界初のコンソールゲーム機「オデッセイ」に収録されたテニスゲームも、これと同じように球の反射角が一定でした)。サーブ機能もなく、COMのAIアルゴリズムもおそまつ。さらに、いくらこれだけでもゲームは作れるといっても、画面の表現力が寂しすぎます。

そこで平山氏は「CPUだけでなく、GPUも使ってみよう」と切り出しました。その結果、改良されたのが「バージョン020」です。GPUを用いたことで、画像解像度は一気に640x480ピクセルになりました。画像も三角形(ポリゴン)を組みあわせることで、一気にグラフィカルなものに。パドルも円形となったことで、ボールの入射角によって微細な反射角が調整可能になりました。なおボールの反射角度を求める上で、ベクトルの計算が必要になることは、言うまでもありません。

さらに重要なことが、ここでいわゆる「ゲーム性」の概念が生まれたことです。パドルの操作でボールの反射角度が変わるということは、上手いプレイヤーが勝ちやすくなることを意味しています。

これに加えて「パドルを動かさない時間が長いほど、打ち返す球が速くなる」というルールも加わえられました。これを表現するため、パドルを一定時間動かさないでいると、色が赤く変わるという仕様も加わっています。これはグラフィックによるゲームルールの自然な提示の好例です。これにより「パドルを正確に操作する」「球の軌跡を早く読むと有利になる」という、さらなる遊びの要素が加わりました。

もっとも、良いことだけではありません。この改良によって、操作によってはボールが真上近くに跳ね返るようになりました。相手が非常に打ち返しにくくなるだけでなく、ゲームのテンポも悪化してしまいます。1つルールを加えると、それによって思わぬ「抜け道」ができるのです。また、まだまだ画面が寂しいのも事実です。

そこで「バージョン030」では「打ち返した球が縦に3回バウンドするとミスになる」というルールが加わると共に、「テクスチャ」が使用可能になりました。ポリゴンの表示とテクスチャの貼り付けはGPUの主要な機能で、テクスチャを描いて対応する頂点座標を指定すれば、画面に表示させられます。応用技として、複数のテクスチャを重ね合わせて、パドルや球を光らせる(光って見えるように錯覚させる)ことも可能になりました。もっとも、ルールの複雑化はさらなる「抜け道」を生む恐れもあります。これをいかにシンプルに保ちつつ、公平なルールを作るかが非常に重要です。

続いての改良がタイトル画面やゲームオーバー画面など、フロントエンドの追加(バージョン040)です。平山氏は、このフロントエンドは商業タイトルでは非常に重要だと釘を刺しました。いまや家庭用では多彩なゲームモードが必要で、結果としてフロントエンドが数十種類に及ぶことも珍しくありません。これらは適切にデザインされ、構築される必要があります。CGなら多少見栄えが悪くても発売できますが、フロントエンドに欠陥があるとフリーズなどのバグに直結しやすく、商品にならないからです。

画面遷移の実装でポーズ画面なども追加された疑似3D化。スーパーファミコンでよく見られた形
形状が3D化され、完全3Dゲームとなった3Dにマッチするように、コートが縦向きに


続いていよいよ3D化への取り組みです。前段階として画面全体が斜めに配置される「疑似3D化」が行われました(バージョン045)。かつてスーパーファミコンで良く見られた画面スタイルです。ちなみに、こうしたビュー変換を行うには、高校数学の行列が必要になります。そこから本格的な3D画面「バージョン050」へと進みました。三角形の組み合わせで球を描くには三角関数の応用が必要です。このように、ゲームプログラミングに数学の知識が必須であることが、具体的な例をもとに示されていきます。

ただし、もともと2Dゲームだったものを、映像だけ3D化しても、単に遊びにくいゲームになってしまいます。3Dゲームの黎明期には、こうした駄作が数多く発売されましたのも事実です。そこで「バージョン060」では、3Dにあわせてゲームデザインも大きく変更されました。

最大の変化はコートが横向きから縦向きになったことです。また3D化に伴い厳密な操作が難しくなったことから、ボールの反射角度が自動で調整されるようになりました。具体的にはパドルを操作せずに、止まっている時間が長いほど、相手の位置から遠い場所に球が打ち返されるようになったのです。これにより、これまでの「厳密な操作」は必要なくなり、「読みあい」がゲーム性の重要な要素となりました。これは「パワースマッシュ」シリーズにも共通して見られるものです。また「3回壁にバウンドしたらミス」という例外的なルールも不要になりました。

もっとも、コートが縦向きになったことで、手前に比べて奥側のプレーヤーが決定的に不利になってしまう弊害が生まれました。そのため対戦プレー時には手前と奥を適時交代させるなどの配慮が新たに必要になっています。これも「パワースマッシュ」シリーズで見られる仕様です。平山氏も「コンセプトが対戦メインなら、フィールドは横向きにすべき」だと指摘しました。このように画面デザインはゲームの遊び方に密接な影響をもたらすのです。

カメラの実装でカメラワークが重要になった照明計算の実装で、拡散反射シェーダを搭載鏡面反射の実装で、画面に質感が生まれた
リアルな影が計算で表示できるようになったポストプロセス。キャラの周りが発光している


このように次第に、今のテニスゲームに近づいてきました。ここで足りないのが画面の躍動感です。そこで「バージョン070」ではカメラワークが加わりました。しかし、カメラワークがおそまつだと、とたんにストレスがたまってしまいます。3Dゲームで最も難しい課題の一つが、このカメラワークだともいえます。サンプルではいくつかのアルゴリズムが試された結果、最終的に「パワースマッシュ3」でも用いられている、物理エンジンを組み込んだカメラワークとなりました。

2Dゲームから3Dゲームへの進化、そしてカメラワークの追加。これ以後は、いかに見栄えを良くするか、という仕上げの話に移っていきます。照明効果や鏡面反射の追加(バージョン075、080)。単に黒丸でしかなかったプレーヤーの影を、パドルの形状にあわせて変化するようにする(バージョン090)。そしてパドルやボールに動的なエフェクトを追加(バージョン100)。これらはシェーダーをはじめとした、現世代機で用いられている最新の映像テクニックです。

ただし、単にこれらの技術を盛り込むだけでは、システムの負荷が大変なものになってしまいます。平山氏は状況に応じて適切な技術を取捨選択することが必要だと指摘しました。実際に「バーチャテニス3」でもテクスチャに直接影を書き込んだり、プレーヤーの影を計算ではなく直接コートに表示するなど、従来のテクニックを随所に盛り込みつつ、バランスのとれた開発を行っているとのことです。その上で「今回は飾り付けしか行っておらず、(おもしろいゲームを作る、ゲームをおもしろくするという)本当のゲーム作りはこの先にある」と締めくくりました。

ポストプロセスとビルボード(板ポリゴン)との比較おもしろさ重視で、適切な取捨選択が必要だ最新ゲームにも枯れた技術と最新技術が混在している


講演で平山氏が何度も指摘したのは、単に技術やテクニックを覚えて良しとするのではなく、常に原点に立ち返り、メタな視点で技術を捕らえ直す必要性です。歴史を振り返ればGPUがない時代からプログラマーはCPUだけで3D描画を行ってきました。GPUに頼り切った今日のプログラマーは、ある意味で技術力が低下しているとも言えます。一方で平山氏は「シェーダーの時代も終わりつつある」と指摘しました。必要なのはシェーダーが書けることではなく、その意味を理解して使いこなす力だと言うことなのでしょう。

そしてもう1つが、技術とゲームデザインは密接に関係しているということです。2Dから3Dへの進化で、ゲームデザインが変化した、などはその好例でしょう。ゲームデザイン側が新しい技術を必要とすることもあれば、技術が新しいゲームデザインを生み出すこともあります。これはグラフィックにも言えますし、今回は割愛されましたが、サウンドについても同様です。ゲームは総合芸術で、これを一人で感覚的に習得できる点が、インディペンデントなゲーム作りの醍醐味です。

平山氏も「アマチュアのうちに、一人でゲームを完成させた経験がないと、いざプロになっても、この先に生き残っていけないかも」と釘を刺していました。技術は常に変遷していきますが、それを使いこなすのは開発者の姿勢は普遍です。読者諸兄もネットのリンクをたどって平山氏の自作ライブラリをダウンロードし、テニスゲームの歴史を体験してみてはいかがでしょうか。

《小野憲史》

この記事の写真

/
【注目の記事】[PR]

関連ニュース