【Watch記事検索】
最新ニュース
【11月30日】
【11月29日】
【11月28日】
【11月27日】
【11月26日】

3Dゲームファンのための「バーチャファイター5」グラフィックス講座
PCベースのアーケードシステムで実現される至極のリアルタイム3Dグラフィックスの秘密


「リンドバーグ」の基板。背面にはPCで見慣れた端子が並ぶ
 今回は、本連載初となるアーケードゲームを取り扱う。アーケードゲームのシステム基板はPC化の風が吹き込んでおり、先頃行なわれた第44回アミューズメントマシンショーではタイトーが最新PCシステムであるCore 2 Duo+Intel Q965(PCI-Express)ベースの「TAITO Type X2」を発表するなど、この流れは進行の一途をたどっている。

 今回取りあげるセガの大ヒット3D格闘ゲーム「バーチャファイター5(VF5)」も、昨年発表されたセガのPCベースシステム基板「LINDBERGH(リンドバーグ)」ベースで動作している。リンドバーグのタイトルとしては、第1弾のガンシューティングゲーム「ハウス・オブ・ザ・デッド4(HOD4)」、テニスゲーム「パワースマッシュ3(パワスマ3)」などがある。

 アーケードゲームのシステム基板がPCアーキテクチャに移行してきた理由はいくつかある。1つは汎用部品としてPCパーツを利用でき、システム価格を下げられるということ。2つ目は熟成されたPCハードウェアの知識や開発環境を利用することで、ソフトウェア開発が行ないやすいという点だ。また、プレイステーション 3やXbox 360といった次世代ゲーム機がPCの遺伝子を継承したプログラマブルシェーダアーキテクチャを採用してきた事を踏まえれば、(CPUの違いはあるものの)グラフィックス面に関しては相互移植性が高いという点もメリットとして挙げられるかもしれない。

 「リンドバーグ」のスペックだが、Pentium 4(3GHz)、メインメモリ1GBといったスペックは、パソコンとしてみると「超ハイエンド」というわけでもないが、Windowsのような大規模汎用OSを動かさずにゲームコンテンツにのみにほぼフルパワーを割けるアーケードシステムということを考慮すれば、性能的には妥当なセンだろう。使用OSについては非公開。GPUについては「SM3.0世代のNVIDIA製GPU」ということになる。

 いずれにせよ、公表されているリンドバーグのスペックは2006年時点での仕様であり、タイトーの「Type X2」のように、リンドバーグも自在に仕様拡張可能なPCシステムの優位性を活かし、Core 2 Duo+PCI-Expressシステムに移行する可能性は否定できない。

■ 60fps維持が絶対条件だったVF5のグラフィックス

 VF5のグラフィックステクノロジの詳細に触れる前に、VF5のグラフィックス仕様についてまずは見ていくことにしよう。大胆に例えて言えば、「VF」シリーズに限らず、格闘ゲームは1/60秒単位でじゃんけんを行ない続けるゲームだ。このため、フレームレートが一定でないと、行動条件に不均衡が生まれ、フェアでなくなってしまう。そこで、フレームレート維持を徹底してゲームを設計するのが常。

 VF5では、PCベースのシステム基板でグラフィックスを実装する都合上、OpenGLベースで作り込まれている。APIを介してでしかハードウェアの状態を知ることができない、いわば直接ゲームアプリ側が管理できないようなシステム上でフレームレートの維持は易しいことではないように思える。

パフォーマンス測定用のGUI画面。VERTEXがキャラ1体で9万5千にもなっているが、これはセルフシャドウ用に2回描画される(通常レンダリングも含め3倍になる)ため
山之内 毅氏「60fps維持は最重要課題として取り組みました。グラフィックスにボトルネックが出た場合、それがどこにあるのかわからないという問題に悩みました。NVIDIAさんからOpenGLベースのパフォーマンスアナライザが提供される前にプロジェクトがスタートしてしまったので、これを我々で自作して使いました」

加東 崇氏「OpenGLに命令コマンドを与えてから実際にGPUが描き出すまでのタイミングがAPIレベルで把握できないので、最初は苦労しましたね。最終的には60fps維持を実現しています。60fps維持できなかったら“ヒドイ目にあわすぞ”と上から言われてましたし(笑)」

 VF5では、レンダリング解像度を1,280×768ドットとしており、これをリアル720p相当のハイビジョンモニタに出力している。筐体に採用されているディスプレイパネルは画面サイズや消費電力等の要因から液晶となり、その中から最速の液晶パネルを選択したという。残像が少なく、プレーヤーからの評判も上々で、パネル解像度は1,366×768ドット。レンダリング解像度と表示解像度が違うが、これはどういう事なのだろうか?

山之内氏「レンダリング解像度は1,280×768ドットなので、1,366×768ドット表示時には数十ドットの非表示エリアが左右に付きます。なぜ1,280×768ドットなのかといいますと、開発機材を1,280×768ドットのものにあわせて揃えており、もし横幅が1,366ドットになって、両横43ドットずつ非表示になっても問題ないと判断されていたからです」

 1,280×768ドットの画面で60fpsを維持し、しかも複数のシェーダを稼動させながらのレンダリングというと生やさしいものでは無いイメージがある。前述したようにリンドバーグはAGPシステムなので、かなりギリギリという感じがする。

加東氏「ボトルネックは(GPUの)バスよりも、ピクセル負荷の方によく見られました。これをあらゆる条件下で60fpsが維持できるようにチューニングしていきました」

山之内毅氏(セガ、AMソフト開発本部、第二AM研究開発部、プログラマ)。グラフィックス担当のプログラマ。「開発最初期はGeForce FX 5900を与えられて、あれにはかなり苦労しましたね(笑)。最終的にSM3.0になって良かった。ターゲットプラットフォームは単一なので移植のことなんか考えず(笑)、スペックを使い切る感じで製作してます」 加東崇氏(CRIミドルウェア、研究開発部、グラフィックスプログラマ)。「CRIミドルウェアからセガに出向しているグラフィックスプログラマです。VF5はOpenGL2.0ベースで開発されています。現在はPS3版VF5の開発に携わっています」

■ 3D格闘ゲームだからこそできた人間LODシステム?

処理速度を考えずにアイテム装着しまくった画面
 VF5では3D格闘ゲームではあるのだが、帽子や衣装、アクセサリといったアイテムを手に入れることで、プレーヤーは任意の組み合わせでキャラクタをデコレートできる。たくさんのアイテムを身につけたキャラクタは、当然描画負荷が増え、ピクセル負荷が高くなる。

山之内氏「開発段階では、アイテム一杯付けているキャラ同士が戦うとフレームレートが落ちたりしてもう大変(笑)」

 VF5では投げ技が決まると「投げカメラ」と呼ばれるシネマティックなカメラワークで技のアニメーションが入り、演出でキャラクタがアップになることがある。この場合、キャラクタが大きく描かれ、シェーダが多くのピクセルに適用されることで負荷が高くなる。このように、状況によって負荷が変わりやすいグラフィックスでは、パフォーマンスを平均化するために通常LOD(Level of detail)システムを導入することが多い。

 さらに、最近の3Dゲームグラフィックスでは、描画するオブジェクトが視点から近いか遠いかで、シェーダの精度を切り換える「シェーダLOD」というテクニックも採用されつつある。これは、つまり、視点から近く大きく見えるキャラクタには、リッチなシェーダを動かすが、遠いキャラクタには低負荷な簡易シェーダを動かすというようなものだ。

 しかし、VF5では、フレームレート至上主義で作られたとはいえ、その60fps維持のために動的なLODシステムを導入していない。VF5のような3D格闘ゲームは基本的にカメラが2人のプレーヤーキャラクタを捉え続け、普段はそれほどシーン上にキャラクタの増減がない。遠くの背景はいつまでも遠くのままだ。そこで、遠くの背景にはそれなりのポリゴン数予算で、シェーダもそれなりの品質に留め、近くの背景やキャラクタには多くのポリゴンを割き、シェーダは高度なものを動かす……というような実装にしている。

山之内氏「ある意味、事前に人間がLODをやっておくという感じですかね」

 前述のように負荷が変わる状況はあるにはあるが、「装着アイテムが増えたとき」、「投げ技でカメラが寄ったとき」などなど、高負荷になる状況は予測、想定できるため、そうしたケースで60fpsが破綻しないように調整すれば、本来は難しい最高品位のビジュアルとフレームレート維持の両立の糸口も見えて来るというわけだ。

■ VF5のポリゴン予算はVF4の3倍!

 VF5のグラフィックスはプログラミングAPIとしてはOpenGLを採用しているが、シェーダのプログラミングはOpenGLベースのシェーダアセンブラ言語「ARBアセンブラ」を使用。OpenGLで賄えない特殊な直接的なGPU制御のためにOpenGL上のNVIDIA拡張命令(NV EXTENSION)も駆使している。

 リンドバーグの開発では必ずこうなっているというわけではなく、「HOD4」ではOpenGL Shader Language(GLSL)を用いていたり、「パワスマ3」では、NVIDIAの高級シェーダ言語「Cg」を使っていたりする。PS3では、OpenGL/ESを採用しつつも標準シェーダ言語には「Cg」を採用しているので、VF5のPS3への移植においては少々苦労した……という情報も筆者の耳に届いている。なお、逆に同様の理屈で、PS3版の「パワスマ3」ではその部分は楽になったと聞いている。現時点では、シェーダ設計の言語が異なる点と、それほど大規模なシェーダを作成していないこともあって、各開発チーム同士のシェーダの共有は行なわれていないそうだ。

山之内氏「とはいえ、他チームのグラフィックスで凄そうなシェーダが動いていると、パワスマ3チームのところに出向いて『これ、どうやってんの』と聞きに行ったりはしましたよ(笑)」

 ポリゴン数が全てではないが、VF4とVF5では使用ポリゴン数などはどうなっているのだろうか?

牧野宗和氏「VF4のときが1キャラおよそ1万2,000ポリゴンくらいでしたね。VF5は1キャラおよそ4万ポリゴンくらいに増加しています」

村井里会氏「背景ですと、VF4で大体5万ポリゴン前後、VF5では大体10万〜30万ポリゴンくらいです。ステージによって結構違うんです」

キャラとステージのシーン キャラワイヤーフレーム。顔や手は多数のポリゴンを割いていることがよくわかる ステージワイヤーフレーム

村井里会氏(セガ、AM研究開発本部、第二AM研究開発部、デザイナー)。「VF5では主に背景、ステージのデザインを担当しました。背景は法線マップとか贅沢に使えなかったんですけど(笑)、クオリティは絶対に落としたくなかったので使える機能と技術を全部盛り込んで頑張りました。木の1本1本も手作りです。背景もよく見て欲しいですね」 牧野宗和氏(セガ、AM研究開発本部、第二AM研究開発部、アシスタントマネージャー)「VF5ではキャラクタのデザインを担当しました。質感とか、かなりこだわって作り込んでいますので、プレイ中にもその辺りを気にして見て頂ければ嬉しいです」

 VF4はドリームキャストのアーキテクチャの最終形といわれる「NAOMI2」上で動作していた作品だ。ハードウェアベースのジオメトリエンジンを積んでいたので当時としては群を抜いたポリゴン性能だったが、時代が進みGPUが進化したことで3倍程度のポリゴン予算が持てるようになった。というより、実際のところ、VF5では、ポリゴン数を気にしてのデザイン開発はやっていないという。確かに、平均的な最近のPCゲームと比較しても、VF5のポリゴン数はかなり多く感じる。

 PCゲームでは、NVIDIAのSM3.0対応GPUに限定してもGeForce 6200から7950GX2に至るまでターゲットGPUに幅がある。ターゲットハードウェアごとに最適な3Dモデルを複数持つのは開発コストやデータの冗長性に繋がるので、大体その時代のミドルクラスで処理できる程度のポリゴン数の3Dモデル設計をすることが多い。そして実行時に、比較的スケーラブルにコントロールが可能なテクスチャ適用数、シェーダ適用数、影生成精度、レンダリング解像度、ポストプロセス段数などで、クオリティとパフォーマンスのバランスを取るようにした設計が多い。

 VF5では、ターゲットGPUがハイエンドクラスのものに固定された仕様であるため、比較的リッチなジオメトリデザインが実現できた。なお、PS3やXbox 360のタイトル群のグラフィックスもポリゴンモデルが平均的なPCゲームより高めと感じるのは同様の理由からだ。

牧野氏「ポリゴン数よりはテクスチャのメモリ容量とか、シェーダをどのくらい適用するとどのくらい負荷がかかるのか……とか、そのあたりの方に気を配る方が多かったですね」

■ 影生成はデプスシャドウ技法+スクリーンスペースフィルタ処理を組み合わせた秘伝の技法で

 VF5ではシリーズ初となる、セルフシャドウ付き影生成を採用している。動きが激しいゲームなのでわかりにくいが、じっくり目を凝らしてみよう。首から頭までの影が肩に落ちるし、顔の凹凸においても影が出る場合がある。振り上げた腕の影が自分自身のボディに投射されるし、それらの影が相手キャラクタや背景にも投射され、また、着ている衣装の影がキャラクタの地肌にも投射される。いわゆる簡易影生成ではなく、かなり力の入った影生成が行なわれていることが伝わってくるはずだ。また、今流行りのソフトシャドウ(半影)処理も適用されており、現実世界の影に近い輪郭の淡い半影を伴っている。VF5の影生成の基本メソッドとしては「シャドウマップ技法」(デプスシャドウ技法)を採用している。

【デプスシャドウ技法の概念図】
デプスシャドウ技法ではシャドウマップの解像度を無限大にしないとシャドウマップの解像度に依存したこうしたジャギー(エイリアシング)が出てしまう。無限大にするのは無理なので必然的に出ることになる。特に視点に近い位置の影にジャギーが出やすい

セルフシャドウの例。ジェフリーの首の影が肩に落ち、さらに、持ち上げられたウルフの影もジェフリーに落ちている事がわかる
 ただ、この技法には弱点がある。それは、視点に近ければ近くなるほどシャドウマップ解像度に依存したジャギー(エイリアシング)が出てしまうという点だ。

 この弱点を克服するためにデプスシャドウ技法にはこれまでに様々な改良が施されている。3DMark05ではPerspective Shadow Maps(PSM)技法、イニス社のXbox 360テクニカルデモではLight-Space Perspective Shadow Maps(LSPSM)技法、3DMark06ではCascaded Shadow Maps(CSM)技法が実装され、それぞれユニークな工夫で弱点の克服に挑んでいる。また、今年のSIGGRAPH2006では、ノースカロライナ大学が対数系デプスシャドウ(LOGSM)技法を発表して話題を呼んだ。VF5の影を見ると、それほど目立ったエイリアシングは見えないが、一体どのような工夫をしたのだろうか?

牧野氏「VF4の時は低ポリゴンモデルを別に用意してステンシルシャドウボリューム技法での影生成を行なっていましたが、VF5ではデプスシャドウ技法に切り換えました。シャドウマップの解像度は1,024×1,024テクセルです」

加東氏「この程度のシャドウマップ1枚では到底エイリアシングは回避できないので、我々は、ちょっと一風変わったテクニックを開発して実装し、そのデプスシャドウ技法の弱点をごまかしているんです」

 デプスシャドウ技法自体はセオリー通りそのまま実装しているが、まず、デプスシャドウによるジャギーを含んだ影付きのフレームを生成し、このフレームを元に2Dベース(スクリーン座標系)のぼかしマスクフレームを生成する。喩えると「影と日向」からなる型抜きフレームを作って、これをぼやかしてマスクとする。そして最終的にシェーダやテクスチャを適用したリッチなフレームと影フレームと影のぼやかしマスクを合成して、「セルフシャドウ付きソフトシャドウ」を作り上げるのだ。

フィルタ前のシャドウマスク画面 フィルタ前のシャドウマスクを使用した画面。シャドウマップ特有の「毛羽立ち」ジャギーが胸に目立つ
フィルタ後のシャドウマスク画面 フィルタ後のシャドウマスクを使用した画面。ジャギーが解消し、エッジがぼけた影になっている

 この技法の特徴は、デプスシャドウ技法のエイリアシングを「2D画像処理」で消してしまうというアプローチだ。SM3.0世代のGeForce系ソフトシャドウといえば、「スプリンターセル3:カオスシオリー」で実装されたピクセルシェーダの条件分岐命令を駆使した適応型マルチサンプル技法の方が技法としてスマートのようにも思えるのだが……。

山之内氏「我々もその技法は実は開発初期段階では実装して試してみたんです。ですが、負荷がちょっと高めで、シーンの影生成状況に応じて負荷が変わりますし、60fps死守というテーマの前にはちょっと適さなかったんです」

加東氏「我々のこの方法だとコンスタントに大体1msの時間がこれにかかってしまいますが、負荷は基本的に常に一定にできます」

 ただ、「投げカメラ」演出時や、オープニングデモなどにおけるキャラクタのアップショット時には、ジャギーが出ている瞬間を目にすることがある。さすがに、あまりにも視点が近くなり、ジャギーが大きくなった場合には、このVF5マスク式デプスシャドウ技法でも消しきれない。

このマスク技法でも消しきれない影のエイリアシング。肩の部分のシャドウにエイリアシングが出ている なお、リンドバーグはNVIDIA製GPUベースなので、VF5でもデプスシャドウ技法による影生成時のシャドウマップ参照にはNVIDIA SHADOW機能(ハードウェアPCF:Percentage Closer Filter)を活用している

■ 影生成は実は二段構えの方式

 VF5における影生成は、実はこれだけではない。画面を見ただけでその違いを判別するのは難しいが、各キャラクタの地面に落ちている影は、実はデプスシャドウ技法で生成されているものではない。地面に落ちる最も目立つ影は、昔ながらの簡易影生成方式であるシルエット投射テクスチャマッピングを採用しているのだ。

 シルエット投射テクスチャマッピングは、デプスシャドウの原型ともいえるもので、影生成元の光源位置から見たキャラクタのシルエット(外郭像)をテクスチャに生成し、これを光源からプロジェクタからの映像投影のようにテクスチャマッピング(投射テクスチャマッピング)することで実現する。低負荷であるため、PS2のゲームでは広く活用されており、PCゲームなどでもRPGやRTSなどでは未だに採用例が多い技法だ。ただし、その投射するシルエットには、投射距離が長くなる頭部に行けば行くほど強いぼかし(半影加工)を施しており、リアルな半影になっている。

投射テクスチャマッピングの概念図(NVIDIA提供) 足元から遠くなるにつれ輪郭がぼやけるシャドウの画面

【投射距離によって半影のブレ具合の違いがよくわかるショット】
壁が近く、シャドウの輪郭がはっきりしている画面 シルエットテクスチャのミップマップレベルを色で表示した画面
壁が遠く、シャドウの輪郭がぼやけている画面 シルエットテクスチャのミップマップレベルを色で表示した画面。背景モデルの頂点毎にキャラクタモデルからの距離を求めて、ミップマップレベルを計算し、トライリニアで合成している
シルエットテクスチャのミップマップに対して、シルエットを徐々にぼかして格納している画面。白は近い距離用、青は遠い距離用(色がつけてあるのはデバッグ用のため)

 まとめると、VF5ではマスク付きデプスシャドウ技法とシルエット投射テクスチャマッピング技法の2つの影生成技法を組み合わせていることになる。

加東氏「地面に落ちる影というのは存在感があるものなので、これを別途生成するようにしました。デプスシャドウによるものだとちょっと汚くなってしまうので」

村井氏「遠くの背景の影などは、リアルタイム生成しない、プリレンダな焼き込みの影ですし。影生成は適材適所で使い分けています」

シャドウ無しの画面 デプスシャドウ(セルフシャドウ+建物のシャドウ)の画面 シルエット投射テクスチャのみの画面 全てのシャドウが適用された画面

 なお、背景オブジェクトの影などでも、壁や柵、存在感のある大道具オブジェクトの影などは前出のデプスシャドウ技法によって生成し、対戦している2体のキャラクタにちゃんと投射されるようにしているという。1つのユニバーサルメソッドではなく、理想の映像に仕上げていくために複数技法を組み合わせて使うというのは、日本の職人技的なアプローチだと言えよう。

シルクロードステージの背景。壁のでこぼこの影はすべて焼きこみ(事前処理生成の影)となっている デュラルステージに使われている柱のディティールの影、地面に落ちている影も同様に焼きこみだ

■ 匠の技。人間シェーダとプロシージャルテクスチャ

 VF5では、VF4よりもポリゴン数が多く、影生成もしっかりしているが、それだけではなく、1つ1つの細かい材質の質感にパワーがあってとてもリアルに見えると思う。これは、プログラマブルシェーダを駆使した、特殊なシェーダを実装して実現されているように見えるが、実際はどうなのだろうか。

牧野氏「基本的には拡散反射(デフューズ)、鏡面反射(スペキュラ)、それと法線マップによるバンプマッピングですね」

山之内氏「肌、髪、服といったものについてはデザイナーさんのセンスでそうした要素を調整してもらって、それっぽく見せているという感じです。よく見えたというのであれば、デザイナーさんの力量の勝利という感じですか(笑)」

 基本は、「デフューズ、スペキュラ、法線マップ」の3要素で構成されるが、確かにスペシャルカスタマイズされたシェーダもあるという。例えば、アキラの道着。ボツボツとしたエンボスは法線マップによるバンプマッピングで表現されているが、肩の部分の“ほつれ”の部分は法線マップ+α値を読んでの透明/不透明合成を行なっている。また、水面が登場するシーンでは、服が濡れると、濡れた事を表現するためのパラメータを拾ってそれっぽく見せる工夫もしている。

布のシェーダは、ほつれ部分用αテクスチャに対応 もうひとつシェーダ毎の特殊機能の例。髪のシェーダは単純な異方性反射に対応
乾燥時の布 水濡れ時の布

 ユニークなのがパイのチャイナドレスのような、テカテカした独特な異方性反射(見る角度によってテカリや色が変わって見える)を伴った質感のサテン(Satin)生地についての表現方法。これは、環境マップ側に周囲の情景だけではなく、布の素材模様も埋め込むようにして、これを環境マップとして適用しつつ、デフューズ、スペキュラを調整するという、かなり変わった実装で表現している。

牧野氏「物理的に正しい処理なのかはよくわからないのですが、それっぽく見えるんです。普段とか、ツールとかで実験していると時々、何かに使えそうなものが偶然できる。それを取っておいて、実際に使ってみたらこうなったというわけです」

パイのサテン生地ベースの衣装 サテン生地の表現を実現するためのテクスチャ一覧。左が実際のテクスチャ、右がわかりやすいように拡大したもの。上からカラーマップ(デカール)、スペキュラ・マップ、環境マップのマスク(スペキュラマップのα部に格納)、法線マップ。「環境マップのマスク」が、きらきらと糸が光る表現を実現するポイントとなっている

 VF5の開発では、特にシェーダのオーサリングツールのようなものは用いず、パイのチャイナドレスのように、基本シェーダの適用具合と、それに与えるデータをデザイナーが工夫して作成することで、様々な質感を作り出しているわけだ。ディズニーアニメで骨が折れた時の効果音をセロリの折った音で代用した方がリアルに聞こえるというエピソードをメイキング映像で見たことがあるが、まさにそれに近い、独自のアイディアと工夫で“リアル”を作り出しているわけだ。いうなれば「人間シェーダ」といったところか。

特に男性キャラでその効果がわかりやすい
 さて、人間キャラクタが主体の格闘ゲームなので、気になるのが肌の陰影処理だ。肌に特化したシェーダを「スキンシェーダ」などともてはやしたりするが、意外にも、VF5ではスペシャルなスキンシェーダは用いていない。基本はスペキュラ(光沢)の調整で、肌のみずみずしさや汗の感じを表現しており、いわゆる表面下散乱シェーダ的な特殊処理は実装していない。肌も、他の素材と同じく基本シェーダの調整でそれっぽく見せているのだ。

山之内氏「いろいろやろうとは思いましたけど、まっとうなスキンシェーダの実装は現状のハードではパフォーマンス的に厳しいですね」

牧野氏「でも、女性キャラ限定で特別な処理系が入っていますよ。女性キャラには見えないレフ版がついて回っているんですよ(笑)」

 女性キャラは、陰影が際立ったり、セルフシャドウが強く出たりすると美人度が下がってしまう(?)ため、見えないレフ版(光源)を設定することで、顔の陰影が出にくくさせ、ライティングで調整しているのだという。逆に男性は陰影が濃く出た方がかっこよく見えるため、そうした工夫は特に行なっていないという。VF5においても、女性キャラクタは「女優扱い」であり、システムレベルでライティングには気を使っているのだ。

レフ板あり。製品版はこの状態 レフ板なし。陰影が出過ぎて美人度が下がる(?)

 VF5のキャラクタ描写を注意深く見ていると、光源がこちらに向いている、逆光気味のシーンでは、本来ならば影となるはずのところで、肌の輪郭付近や、衣服の輪郭から光が漏れてくるような表現が見られる。HDRレンダリングの光あふれ出し(ブルーム)とは違う、まるで表面下散乱シミュレーションの結果のような表現のようにも見て取れる。

ジャッキーの髪や肌から光が透過しているように見える アキラの衣服や腕にも同様の疑似表面下散乱的な効果が見える

NVIDIAの「Luna」デモでは3Dオブジェクトの厚みに配慮した疑似表面下散乱を実装していた
ハゲキャラにご注目

 この「逆光テカリ表現」は、「光源位置が逆光気味」なおかつ「その面の法線の向きから判断してその逆光光源を掠めていると判断できる」という一定条件を満たす箇所が、「視線に対して輪郭として光が溢れ出るはず」と判断され、そこを光源色をブレンドして描くということで実現している。平たく言えば、光源がこちらに向かって輪郭を掠めるときは、その輪郭を光源色で塗って光が溢れているようにするということだ。NVIDIAがGeForce 7800シリーズ発表時に公開した「Luna」デモで実装した疑似的な表面下散乱では対象物の厚みに配慮した光の溢れ出しを実装していたが、VF5では、そうした複雑な処理はしていない。

 VF5のこの「逆光におけるテカリ」は、実質、簡易的な処理なので、イレギュラーなケースではセルフシャドウとして影である部分から光が出てきてしまったり……というエラーがあったという。しかし、これもデザイナー側のパラメータ調整で不自然にならない程度に抑えてしまったとのこと。

 超簡略版の疑似表面下散乱処理だが、シーン全体としてみるとかなりいい仕上がりになっている。頭、頬、手や首筋といった肌の透き通った感じはもちろん、衣服にも同様の処理が適用されるので、「布がそれほど厚くない」→「柔らかいものなのだろう」というようなイメージとして伝わってくる。

山之内氏「この“光の掠め”を味わいたい人はシュンやレイフェイなどのハゲキャラにご注目下さい。とっても綺麗にハゲが光りますので(笑)」

 液体金属的な質感を持った最後の敵、デュラルについてはやや例外的にスペシャルなシェーダが動いているという。4体いるデュラル・バリエーションの中で出現条件の厳しい2体にそのスペシャルシェーダが使われている。


左から、昔ながらの反射デュラル、薄膜デュラル、屈折デュラル、石デュラル

 1つは薄膜干渉シェーダのデュラル。視線角度や周りの情景によって不思議な異方性の虹色光沢をする質感になっており、この質感表現には描ききりのテクスチャを用いていない。頂点シェーダを用いて光の回折(Diffraction)シミュレーションを実行して、この虹色を算出している。光は色によって波長が違うが、その異なる波長の光同士の干渉をピクセル単位で計算し、その結果から最終的な色を決定している。現在、3Dゲームでの実用に向けて研究が進められている、「計算でテクスチャを生成する新しいメソッド」である「プロシージャルテクスチャ」(Procedural Texture)の手法を、ある意味、先取りして実装した例といえなくもない。

薄膜干渉シェーダ・デュラル登場シーン

山之内氏「この光の回折計算には屈折ベクトルの計算も行なうんですが、せっかく屈折ベクトル計算しているんだから、光が屈折するデュラルも作ってしまえ……という形でできたのが屈折デュラルです」

 屈折デュラルは、求めた屈折ベクトルに基づいてデュラル以外のレンダリングされているそのフレームからサンプルしてくるだけで実現できてしまっているというわけだ。ちなみに、この2体のデュラルは一定条件を満たさないと見られないようなので、頑張ってプレイしてみて頂きたい。

屈折デュラル登場シーン

■ 業界初!? 水面の表現に頂点テクスチャリング(VTF)によるディスプレースメントマッピングを使用

 VF5のグラフィックスで目を惹く要素の1つに水面がある。VF5における水面は大別して2つ。1つは水位の浅い「水たまり」、もう1つは比較的水かさの高い「水辺」だ。水位の低い水たまりについての水面表現は比較的オーソドックスなアプローチになっている。水面への映り込みは、予め用意した低精度の背景を適当な解像度でテクスチャにレンダリングして「反射マップ」(≒環境マップ)を生成。これを適用することで実現している。

反射マップに反射モデルを描画した画面。ここへ映り込ませるキャラの描画には簡易なシェーダを使用して負荷を軽減 最終画面。地面テクスチャのα部に、水溜りか水溜りでないかのマスク情報を格納してある

左が法線マップ、右がハイトマップ。キャラが発生させる波紋と、雨による波紋が見て取れる
 この水たまりの水面には、ただ周囲の背景やキャラクタが映り込んでいるだけでなく、揺れ動く波紋も描かれる。この波紋は、水位の凹凸を表すハイトマップを波動シミュレーションを行なって動的に生成し、ここから法線マップを生成して、これと先ほどの反射マップを両方使って最終的に環境バンプマッピングを実行して実現している。

 波動シミュレーションというとなにやら難しい響きがあるが、やっていることは基本的にシンプル。具体的にはその時点での水の高さ、速度、力といった要素をテクスチャに格納し、これらの情報から次の状態の水面の高さを計算したテクスチャを生成。この処理はピクセルシェーダにて実行されるのでCPUは介さない。算出された水面の高さの値は凹凸を表したハイトマップテクスチャとして扱い、これを法線マップへと変換して環境バンプマッピングを行なうわけだ。

 プレイに夢中だとわからないかもしれないが、キャラクタが水面に足を乗せると、その振動で波紋が広がるという演出が凝っている。これはその波動シミュレーション用のテクスチャに対し、そのキャラクタの足跡の形でハンコを押す感じで更新することで影響を与えている。


サラのブーツが水面に着いて波紋が出ている この時の法線マップとハイトマップの状態。2体のキャラの足跡と、雨による波紋が見て取れる

VTF水面ステージ
 そして水かさの高い「水辺」では、さらに頂点レベルで水面が上下する波のアニメーションが加わる。

加東氏「この水面のメッシュ形状が変わる波動アニメーションは、NVIDIAのGeForce6/7系にのみ搭載されている頂点テクスチャリング(VTF:Vertex Texture Fetching)を使って実現しています」

 これにはちょっと驚かされた。そう、VTFは現時点ではほとんど使われていない、いわば盲腸的な機能だからだ。VTFとは頂点シェーダからテクスチャを参照できるようにした機能のこと。テクスチャというと画像というイメージがあるが、プログラマブルシェーダ時代に突入してからはテクスチャの使われ方に革新がもたらされ、用途によっては(シェーダプログラムの設計によっては)汎用のベクトルデータ配列として活用されることも多くなってきているのだ。であれば、汎用記憶領域としてピクセルシェーダからだけではなく、頂点シェーダからもテクスチャアクセスを行ないたいという要望が出てくるのも自然な流れ。この要望を具現化したのがVTF機能だ。


高低を記録したハイトマップ・テクスチャをVTF機能にて頂点シェーダで読み出し、この値を元にして実際にジオメトリを変移させる処理をディスプレースメントマッピングという NVIDIA制作によるVTFによるディスプレースメントマッピングのデモ。見た目はかなりショボいが、この超発展形がある意味VF5の水面の処理

 業界初のSM3.0対応GPUとしてGeForce 6800シリーズが発表された当時、VTFは「SM3.0ならではの待望の機能」として鳴り物入りで紹介された。ところが、その後、競合のATIのRADEON X1000シリーズがVTF未サポートで登場。ATI対NVIDIAの戦いの果てに、VTFは盲腸機能となってしまったのだ。補足しておくと、ATIはVTF実装を別に拒絶しているわけではない。ATI設計のXbox 360 GPUではVTFがサポートされているし、次世代DirectX 10世代SM4.0対応GPUではATIもVTFをサポートする事が確実視されている。さらに補足すると、もちろんPS3のGPU「RSX」はGeForce 7800GTXベースなのでVTFはサポートされている。

山之内氏「我々にとってターゲットハードウェアはリンドバーグ1本ですから。そのハードウェアをフルに活用すればいい。VTF便利ですよ〜。むしろないと泣きます(笑)。CPUに戻さずに、基本的なジオメトリプロセッシングがGPUだけで完結できるというのは美味しいんですよ」

 波動シミュレーションは、32ビット浮動小数点(FP32)テクスチャ上にてピクセルシェーダで行なう。先ほどの「水たまり」では整数テクスチャで波動シミュレーションをやっていたが、水辺の方でFP32テクスチャを用いる。この理由は単純明解で、VTFではFP32テクスチャに限定されているためだ。

左が法線マップ、右がハイトマップ VTFを適用して生成した水面のワイヤーフレーム 最終画面

水面のモデルをワイヤフレーム表示したMaya画面。水面が100×100であることがわかる
 FP32テクスチャ上に生成したハイトマップをVTFで頂点シェーダで読み込み水面の頂点を変移させるディスプレースメントマッピング(Displacement Mapping)を実行。さらにこのFP32波動ハイトマップを法線マップ化して、これを用いてピクセルシェーダで陰影処理を実行。この時にもう一工夫、アイディアが思いついたのだという。

加東氏「近所で弁当を買うと味噌汁が付いてくるんですが、その味噌汁の入ったカップを揺らしながら思いついたアイディアがあって(笑)。VTFで使ったFP32の波動ハイトマップには波の高さとか速度と力の情報があるので、せっかくだからピクセル単位のライティング時に、この情報を活用して濃淡を与えて濁りとか透き通っている感じを出しました。VF5での泥水とか汚水の表現はこれで実現しているんです」

山之内氏「チーム内で“味噌汁シェーダ”と命名されて使われました(笑)」

 現状ではポリゴンを自動分割するテッセレータがGPUに実装されていないので(DirectX 11世代以降に実装の可能性有り)、VTFでディスプレースメントマッピングを適用する際には、その3Dモデル側の頂点数(このケースでは水面の頂点数)を予め分割しておく必要がある。ちなみにVF5では、水面の頂点数は、予め100×100との解像度で分割してある。

 この「水辺」でも、やはりキャラクタが動くと、波動シミュレーション用テクスチャを摂動させるので、キャラクタの動きにインタラクトされて波が動くことになる。先ほどの水たまりよりもダイナミックに水面が動くので見た目のインパクトはかなり強い。

加東氏「蹴り上げた足が水を巻き上げるようなときには水しぶきが発生しますが、これに注目して欲しいです。VTFのおかけで水しぶきの衝突をテクスチャを使って頂点シェーダで検出できるんですよ。水しぶきの1つ1つが着水するとそこから波紋が発生するようにしています。多分、気づいている人、凄く少ないと思いますけど(笑)」

 水しぶき自体は1個1個がジオメトリを持ったパーティクルで、着水時の水面へのインタラクトは、前述したキャラクタが足で水面をインタラクトする処理と変わらない。波動シミュレーション用のFP32波動ハイトマップの方に着水したシミュレーション用の初期値(高さ、速度、力)を設定すればいい。加東氏の言うように目立たないことかも知れないが、「何となく全体的にリアル」というような、グローバルなリアリティ感を出す効果としては非常に有用なことだと思う。


蹴りによって水飛沫が飛び始めた画面 遠くまで飛んだ水飛沫が着水し、波紋が発生していく様子がわかる

■ 雪原もVTFでやってます!

 このVTFによるディスプレースメントマッピングは雪原にも応用されている。水面の波のように動きはしないが、雪面をキャラクタの足で踏むと、FP32テクスチャによるハイトマップがキャラクタの足跡形状で押し下げられることになり、結果的に描かれる雪面が足跡の形で凹む……という寸法だ。

新雪状態 踏んだ後

左が擬似表面化散乱させる前のディフューズ&スペキュラ結果。右が擬似表面化散乱させた後
 さらに雪の陰影には簡易的な表面下散乱シミュレーションも適用している。技法としてはATIなどが以前発表していたテクスチャスペースのブラーによるものだ。雪原に照射される光量(実質的にはテカリ、スペキュラ)をテクスチャにレンダリングし、テクスチャ座標系でブラーさせてぼやかす処理を行なう。言い換えると、雪原の凹凸に当たっている光沢を真上から撮影してその画像をぼやかすような処理を行なうイメージだ。

 このブラーさせてできあがったぼやけ光沢テクスチャを普通に適用すれば、スペキュラ部分が、あたかも光が浸透して抜けてきたようなぼやっとした柔らかい陰影になるのだ。


擬似表面化散乱無し 擬似表面化散乱あり

加東氏「VTFで雪原の高さを変移させているわけですが、高い雪面はスペキュラを多くしてキラキラと輝きますが、低い雪面はデフューズの方を多くする陰影処理をしています」

踏み荒らされた後。踏み荒らされてぐっしょりした感じになっているのが伝わってくる
 踏まれていない雪面はキラキラと輝いて新雪な感じを表し、踏まれて低くなった雪面はいわば踏まれて“ぐしゃっ”としたシャーベット状になって汚れている感じを表しているわけだ。

加東氏「スノボーが好きなんで、去年のシーズン時、ゲレンデとかの写真を撮って研究しました(笑)」


■ セガのVTF活用はせかいいちぃぃ!?

山之内氏「VTFはもう活用しまくりましたね」

フォグステージ
 VTFはフォグ表現にも応用されている。これはちょっとピンとこないかも知れない。最も一般的なフォグは視点から遠くなる情景を曇らせるような距離フォグだろう。これとは別ケースで、“もや”や煙が立ちこめていたり、またそれが風で流れているような表現をする場合には、半透明の“もや”テクスチャや煙テクスチャを貼り付けたパーティクル(スプライト)を重ね描きしたり動かしたりする。この手法だとそれっぽく見えるが、半透明の重ね書き負荷がかかるのと、他3Dモデルと重なったときに鋭く切り取られエッジが露呈してしまう。そこでVF5ではユニークな「VTFフォグ」なるものを考案して実装した。

 水辺の水面処理では、水面の高さをグレースケールで表しハイトマップとして活用されていたFP32テクスチャを、VTFフォグでは、霧の濃淡情報を管理する。つまり、霧の濃淡の分布をFP32テクスチャで表してやるのだ。チーム内ではこれを「フォグマップ」と呼んでいたそうだ。

フォグマップへフォグパーティクルを描画した画面 そのテクスチャをVTFフォグとして適用したファイナルショット

 実際のレンダリングでは、水辺の水面のようにステージフィールドに対して平行で水平に見えない面を配置し、この見えない水面の各頂点から、そのフォグマップに対してVTFを参照し、取り出した値を「フォグの濃さ」として、その頂点カラーを決定してやる。つまり、VTFでフォグマップから取り出した値で高さフォグ(Yフォグ)の処理を頂点単位で実行してやるのだ。

 この方法ならば、求めたフォグ色を最終的なカラー算出時に線形合成を1回やればよく、半透明の重ね描きは全く不要となる。比較的安い処理で、複雑な霧の濃淡をフィールド上に展開できるというわけだ。しかも、このフォグマップをスクロールさせれば、複雑な濃淡の霧が風で流れているように見せられる。

加東氏「それだけじゃないんですよ。例えばウルフのジャイアントスイングなどで、この“もや”が掻き乱されてふわぁっと、押しのけられるような効果までできます」

 理屈はキャラクタが水面に影響を及ぼしたときと同じで、キャラクタの行動に応じてフォグマップを摂動してやるわけだ。これは面白い。

山之内氏「まあ、吹き飛んだ“モヤ”は、また自動的にまた流れて来て補充されるようなフォグマップアニメーションを適用していますけどね」

キャラの周辺のフォグが徐々に晴れていく。ダウンした場所のフォグも吹き飛ぶ。プレイ中に気をつけてみて見るべし

■ VF5はFP16ベースのリアルHDRレンダリングを採用〜トーンマッピングにもVTFを活用!

 最新3Dゲームのグラフィックスでトレンドとなっているのがハイ・ダイナミック・レンジ・レンダリング(High Dynamic Range Rendering)だ。VF5でも、当然HDRレンダリングを実装しており、レンダーターゲットバッファはαRGB各16ビット浮動小数点(FP16)の64ビットバッファ(以下FP16-64ビット)を採用している。

ブルームあり。ブルームにはVP2編の時にも紹介した川瀬氏MGFを使用 ブルームなし。ブルームのかかり具合は、ステージ毎にデザイナーが指定したという

テクスチャは疑似HDR技法による処理になる。床に外の景色や炎が映り込んでいる点に注目。映り込んでも高輝度部分の情報は失われていない事がわかる
 反射マップ/環境マップなどもHDR化しておかないと、HDRシーンが映り込んだときにHDR情報が失われてしまう(RGB各8ビット整数に丸められてしまう)。本来は、レンダーターゲット(フレームバッファ)、テクスチャなどの全てのリソースをFP16-64ビットバッファのようなHDRフォーマットで統一してレンダリングすべきだが、現行GPUではバス帯域の限界、FPテクスチャの高速な圧縮手段がないことからくるビデオメモリの容量的な限界、アンチエイリアスやテクスチャフィルタリングにまつわる仕様制限などからなかなかそうはいかない。VF5ではどういう実装になっているのだろうか。

加東氏「最初、環境マップや反射マップなどのテクスチャもFP16-64ビットバッファとしていたのですが、書き出しはともかく、これらのテクスチャはフェッチ(読み込み)が遅いんです。そこでテクスチャはαRGB各8ビットの通常の整数フォーマットを採用して、HDRレンダリングの結果、高輝度となる場合には、そのα部に追加輝度情報を入れ込むテクニックを使いました」

 VF5開発現場の手応えとしては、FP16-64ビットのレンダリングは半透明書き出しも含め若干遅い手応えもあったが、それよりもFP16-64ビットテクスチャの読みだしが遅く、レンダリングパイプラインのボトルネックになりやすかったと言う。

山之内氏「FPテクスチャのフェッチはたぶんフィルタリングが遅いんだと思います。少々コードのステップ数は食いますが(FP16-64ビットテクスチャをフィルタリング付きで読むよりは)、HDR情報をエンコード、デコードして整数テクスチャを使う方式の方が速かったですね」

 PCゲームなどではHDRなFP16-64ビットテクスチャを使ったタイトルも出てきてはいるが、あれは可変フレームで問題ないPCゲームだからこそやっていける実装で、VF5のような60fps命のゲームでは「フルHDRなパイプライン設計はもう1世代GPUが速くならないと辛い」ということのようだ。

 HDRレンダリングでできあがったHDRフレームはそのままだとFP16-64ビットバッファであり、RGB各8ビット色体系のディスプレイ装置では表示できない。そこでこれをRGB各8ビット色体系に調整するポストプロセスを行なう。この時、HDRフレームの輝度量を算出して、実際にそのHDRシーンに人間やカメラがいたら見ることになるだろう、適正輝度に補正する処理「トーンマッピング」(TONE MAPPING)処理を行なうのが一般的だ。なお、こうしたHDRフレームに対する調光シミュレーション的なポストプロセスまでを含めてHDRレンダリングと呼ぶこともある。

 トーンマッピングで面倒なのは、そのHDRフレームの適正輝度を求める処理だ。HDRフレームをCPUに戻して計算したり、もう一回ピクセルパイプラインに戻してピクセルシェーダで求めたり……とやり方にはいくつかの手法があるが、いずれにせよ少々余計な手間と時間がかかる。そこで、VF5では、このトーンマッピング処理において、ユニークな方法を実装して、その問題の低減を試みている。なんと、ここでもVTFを使って約1パス分処理の短縮を実現しているのだ。

 1x1ピクセルにまで縮小したHDRフレームをテクスチャとし、このテクスチャをVTF機能を使って頂点シェーダ側で読み出し、映像の平均輝度を頂点パイプライン側で計算してしまうのだ。その結果をトーンマッピング用の定数として、続くピクセルパイプライン(ピクセルシェーダ)に渡してしまえば、CPUも使わず、余計なレンダリングパイプラインを回さずにトーンマッピングが実現できる。

 トーンマッピングによって適正輝度に落ち着くまではワザと多少の遅延を設けており、カメラや目の瞳の絞りが動く感じを模倣している。逆光気味のシーンや、屋内の暗めのシーンなどではよく観察すると演出としてわかるので注意深く見て味わって欲しい。


動的露出補正あり 動的露出補正なし。全体的に白飛びしてしまう 動的露出補正あり 動的露出補正なし。全体的に暗すぎる

■ 物理シミュレーションエンジンは内製のものを使用

 物理シミュレーションエンジンについてはセガ内製のもので、「VF4」の担当者が引き続き担当しており、基本設計もVF4から継承されたものを使用しているという。衝突判定用の衝突形状の設定は、基本的にローカルな衝突を検出するためのもので、キャラ対キャラでは取っていない。ローカルな衝突というのは、具体的に言えば、衣服、アイテム、髪の毛、はちまきなどのアクセサリが身体にめり込まないようにするための衝突などのこと。

牧野氏「衝突形状は球や円柱なんかで指定していってます。はちまきなんかは複数のジョイント(関節)でできているわけですが、それっぽく見えるように堅さなんかは我々デザインチームで設定、調整しました」

アキラのハチマキにコリジョンを設定している所。緑色の楕円のコリジョンに、白い線で表されている鉢巻のボーンが弾かれている様子が見て取れる 試験的に楕円コリジョンを大きくしてみたところ。ハチマキのボーンの弾かれ度合いが大きくなっている 格子状にラインが引かれている部分が、クロスシミュレーションが適応されている部分 しゃがんだ時。クロスシミュレーションが適用されスカートが自然に変形している様子がわかる

 パンチがどう当たったからどう吹っ飛ぶ、とか、荷重を移動してパンチやキックを打った方がダメージが大きい……というような、物理シミュレーションを格闘システムに盛り込んでいくといった試みは無いのだろうか。

山之内氏「やってできなくはないんです。それで、売れるんならばやりますよ(笑)。ただ、『VF』というシリーズの括りだと難しいと思います。VFシリーズにはこの時にこう入力するとこういうコンボが決まる……という暗黙のゲームルールがありますからね」

 衣服、アイテム、髪の毛、アクセサリは地形や水面に対する衝突は検出しており、例えばダウン時、はちまきは水に浮くし、長い髪の毛が地面に潜ってしまうことはなく、地面に広がるようにはなっている。

不自然に見えないように背景との衝突も処理している。帯が地面にめり込んでいない点に着目 帯が水面に浮くような特別処理もされている

「VF3」ではアンジュレーションがゲーム性に取り入れられたが……(C) SEGA 1996
 VF5では、手付けモーション、あるいはキャプチャしたモーションによるキャラクタアニメーションを、プレーヤーの操作や一定の条件が成立すると再生するような仕組みになっていて、リアルタイムで物理シミュレーションを適用して姿勢制御をするようなことはしていない。このあたりは「VF」シリーズという絶対ルールがあるために、「ゲームとして」の割り切りなのだという。

山之内氏「『VF3』のとき、IK(Inverse Kinematics:逆方向運動学)を活かしたゲーム性を取り込んだんですよ。ステージに段差とかアンジュレーション(Undulation)がある時に、ちゃんとキャラクタが追従するというような事を当時のプログラマが頑張って実装したんです。VF4以降、無くなりましたが」


■ まとめ

 動作対象システムとしてリンドバーグのことだけを考え、そのポテンシャルを120%活かす形でグラフィックスを設計していったという経緯が面白い。特に開発ターゲットGPUがNVIDIA製ということもあって、PCゲーム業界では誰も振り向かなかったVTF機能を斬新なアイディアでフル活用しているのがとてもユニークだ。

 しかし「60fps死守」という命題をクリアするために、シェーダ負荷をあまり高くせずにその設計をシンプルに留めたというのは予想外であった。デフューズ、スペキュラ、法線マップという基本要素だけが与えられたデザイナー陣が、そのセンスとアイディアを駆使して職人芸的に「それっぽく見える質感」を作り上げていった様は「日本ならでは」という感じがする。

 また、「60fps死守」を徹底するならば、むしろ切り捨てるか、簡易的な実装にしても良かったはずの影生成。これを凝りに凝った形で実装してしまうあたりからは、「世界に負けてなるものか」というような、「日本の技術者としての意地」のようなものが感じられる。

 山之内氏は「VF5って全然グラフィックスを前面に押し出した作品じゃないんですけどね(笑)」と謙遜していたが、アーケードゲームのリアルタイム3Dグラフィックスとして、今後間違いなくベンチマーク的な存在としてリファレンスされていくことだろう。

 現在、VF5はアーケードにて稼働中だ。ゲームセンターに立ち寄った際には是非ともその先進グラフィックスを見て欲しい。また、PS3版の移植も進行中で、アーケード版チームとの情報共有を行ないつつ鋭意開発中となっている。東京ゲームショウ2006ではプレイアブルのPS3版VF5が公開されていたが、グラフィックス面においては、解像度が1,280×720ドットになっている以外は影のエイリアシングの出方までコンパチというほどの移植度の高いでき映えとなっていた。こちらも期待したい。


(C)SEGA

□セガのホームページ
http://sega.jp/
□「バーチャファイター5」のページ
http://www.virtuafighter.jp/

(2006年10月25日)

[Reported by トライゼット西川善司]



Q&A、ゲームの攻略などに関する質問はお受けしておりません
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします

ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp

Copyright (c)2006 Impress Watch Corporation, an Impress Group company. All rights reserved.