連載
西川善司の「試験に出るゲームグラフィックス」(9)「ストリートファイターV」における高密度なノンフォトリアル表現,そのレシピを探る・前編
第2世代の「3Dグラフィックスを採用した2D格闘ゲーム」
ストリートファイターII |
ストリートファイターIV(のシリーズ集大成版と位置づけられる「ウルトラストリートファイターIV」 |
その後,格闘ゲームバブルは弾けたが,2008年には,「ストリートファイターIV」(以下,ストIV)がアーケードに登場。ほどなくしてPlayStation 3版とXbox 360版もリリースされ,合計300万本を超える大ヒット作となった。
ストIVは,日本において「3Dグラフィックスを採用した2D格闘ゲーム」の代名詞的作品となり,広く業界に影響を与えたとされる。実際,本連載で以前取り上げた「「GUILTY GEAR Xrd -SIGN-」の開発メンバーも,「ストIVを参考にした」と言っていたほどである。
「3Dグラフィックスを採用した2D格闘ゲーム」の第2世代モデルでは,さまざまな独自技術が盛り込まれているはず。今回は,「ストリートファイターV アーケードエディション」(PC / PlayStation 4,以下 ストVAE)が登場したこのタイミングで,カプコンの綾野智章氏と亀井敏征氏に話を聞くことができたので,前後編に分け,独自技術周りを掘り下げていきたい。
西川善司の「試験に出るゲームグラフィックス」(10)「ストリートファイターV」における高密度なノンフォトリアル表現,そのレシピを探る・中編
前編の掲載から長らくお待たせしてしまって申し訳ないが,連載「西川善司の『試験に出るゲームグラフィックス』」第10回は,「ストリートファイターV」を扱う中編としてお届けしたい。今回は「2D格闘ゲーム」を3Dグラフィックスで実現する,カプコンなりの手法に迫ってみたいと思う。
西川善司の「試験に出るゲームグラフィックス」(11)「ストリートファイターV」における高密度なノンフォトリアル表現,そのレシピを探る・後編
連載「西川善司の『試験に出るゲームグラフィックス』」第11回は,「ストリートファイターV」がテーマの後編だ。最後は,独特のアートスタイルを実現するシェーダメカニズムや色調整システム,背景の作り込みといったところを詳らかにしていきたい。
ストVはなぜUE4を選択したのか
2018年現在,Epic Gamesの「Unreal Engine 4」(以下,UE4)を格闘ゲームで採用することは「半ば当たり前」という状況だ。ただ,2014年のストV発表当時は,かなりの驚きをもって迎えられたことを憶えている。
「UE4を採用してよかったこと」はどんなところにあるのだろう。ストVでアート監修の立場から開発に携わった,第2開発部 第一開発室 アートディレクターの亀井敏征(かめいとしゆき)氏からは,次のような回答が得られている。
とにかくアーティスト主体で制作や提案ができることですね。「作りたいビジュアルを自分達の手ですぐに作れる」ことが大きかったです。
たとえば制作担当が「ネカリの髪を揺らしたい」と考えたときに,従来の制作スタイルではプログラマーに「こういうふうに揺らしたい」と説明したり,仕様書を作ったりする必要があったわけです。それがUE4だと「こういう感じで」というプロトタイプを,アーティストが自分ですぐに作れるんです。
もちろん,最終的にそのプロトタイプをそのまま製品版で採用することになるケースはまれですが,エンジニアは,アーティストの作ったプロトタイプをベースに最適化したり改良したりして開発できるんですね。グラフィックス面の開発速度が圧倒的に上がったのは,明らかなメリットでした。
また,開発コミュニティが充実していて,それこそUE4は以前から独立系開発者向けに安価で出ていたりして,結果,幅広い知見に容易にアクセスできることも大きかったと,亀井氏は振り返っている。
亀井敏征氏:
たとえばテクスチャ模様を水流のように流すエフェクト表現の「Flow Map」を使おうとしてやり方が分からないときに「UE4 Flow Map」と検索するだけですぐに調べられるんです。
「習得コストが安価」というのはUE4のメリットですね。
逆に「使いにくかった」部分はあるのだろうか,聞いてみると,次のような回答が得られた。
亀井敏征氏:
スケールのアニメーションはやりにくかったです。特定の部位を巨大化させるとしますよね。そのとき,ボーンの末端などはある程度うまくいくんです。しかし,それ以外の部位を巨大化しようとすると,うまくいきません。
結局,こうした表現は,形状の変更――実質的には,3Dモデルの置き換え―で対処しています。
実のところこれはストII時代からの伝統なのだが,ストリートファイターシリーズでは,繰り出した攻撃部位――「格ゲー用語」で,攻撃を行う身体の部位――をプレイヤーに伝えやすくする目的と,アクション的な演出も兼ねて,拳など特定の部位をあえて若干巨大化させるデフォルメ表現を導入している。
こうしたデフォルメ表現は,リアル志向のUnreal Engine系は不得意だったようで,冒頭でその名を挙げたGUILTY GEAR Xrd -SIGN-では,「Unreal Engine 3」を採用しつつ,エンジンを改造して,デフォルメ表現を実装していた。
カプコンの開発チームも,UE4の改造は検討したそうだ。ただし,追加でかかる開発コストや,改造によって生じうるエンジンの安定性への影響を考慮して,そこは踏みとどまり,シンプルに「モーフターゲットを用意して『部位を巨大化した3Dモデル』に変形させる」という代案を採用したとのことである。
「この代案」を採用した表現としてはダルシムのクリティカルアーツ(※超必殺技)でお腹を膨らませる表現や,F.A.N.GのVトリガーIIにおける腕まくりをする表現などが該当するという。
亀井敏征氏:
あとは「物理シミュレーション」ですね。UE4では(物理シミュレーションエンジンとして)NVIDIAの「PhysX」を採用しているのですが,これの制御がなかなか難しく,現在進行形で取り扱いには苦労していて,UE4に対して改善を望むポイントになっています。
一部の物理挙動は,ストIVと比べても満足できていない部分がありますね。
ストVでは一部キャラクターの付帯物の挙動をUE4側のPhysXで演算している。しかし,その挙動が安定しない事象がよく発生していたようだ。
ストIVだと,開発元であるディンプス独自のゲームエンジンに統合された物理シミュレーション機能で実現していたため,そうした問題は出ていなかった。
ちなみに,ストVで採用しているUE4のバージョンは4.7.6とのこと。
2018年2月時点の最新版はバージョン4.18.2だが,ストVは,古いバージョンで固定してある。これは,不用意にバージョンアップを行うと動作の安定性が損なわれる可能性を排除できないためだそうだ。
こういう対応はほかのゲームタイトルでもよくある判断であり,ストV特有のものではない。
ストV開発プロジェクトの経緯と開発体制
綾野智章氏:
若干の例外はありますが,ストリートファイターシリーズは基本的に,ナンバリングが1つ上がるごとに,新しいハードへ提供されています。そしてそのたびに,ゲーム体験だけでなく,ビジュアル面においても「次世代感を具現化させる」という目標を掲げるんです。
長い開発期間を経て,最終的に製品版として仕上がるわけですけれども,そういった目標の実現に向けて,当然今回も,さまざまな要素をプロトタイプとして実装し,検討しています。
もちろん,この「リアル版ストVプロトタイプ」が最終的な製品で採用されることはあり得ないと,開発チームの全員が理解はしていたが,「急がば回れ」的な感覚でフォトリアル版ストVのプロトタイプ制作に取り組んだのだそうだ。
亀井敏征氏:
ストリートファイターの世界観は,アーティスティック寄りな,いわばNPR(Non Photo Realistic,非リアル。広義では「絵画的な」の意もある)になっていますが,NPR表現を行うには,「フォトリアルへの理解」が必須なんです。
それに向けて最初に思いついたのは,ストIIの「テレッテー♪」のBGMとともに表示されるゲームオーバー画面の「負けたほうがケガをしてボコボコになっている」表現をリアルタイム3Dグラフィックスで実現するというものでしたね。
開発最初期のプロトタイプでは,それこそ流血や流れる汗,筋肉のリアルな動きなどを表現して,リアルタイムにケガをしていくシステムを実装したのだそうだ。
これは技術的にはうまくまとまったそうなのだが,最終的な製品化にあたっては,このケガ表現要素はまるごとカットすることになった。
亀井敏征氏:
もちろん,デフォルメは最大限に入れていたんですが,それでも,どうやっても残酷に見えてしまうんです(笑)。漫画的な「たんこぶ表現」では済んでいないというか,どうしても痛そうに見えてしまって,レーティング的な落としどころも見極めにくいということで,泣く泣くカットした経緯があります。
ストリートファイターシリーズって,暴力的な表現があっても,最終的には「笑える」表現にしたいんですね。だからこそ「痛くない」と感じられるわけで。
たとえばアレックスのCA(クリティカルアーツ,超必殺技)フィニッシュでは相手が床や地面に頭から突き刺さって終わりますが,あれ,現実だったら死んでます(笑)。でもバカバカしいくらい非現実的なので痛く感じられないし笑えちゃうんですよ。でも,いま亀井のお話ししたリアルタイム怪我表現だとそうはならなかったということです。
亀井敏征氏:
その中から,最終的な製品版に残った表現としては「ドラマチック表現要素」があります。バトルフィールドの両端付近で相手をKOしたときのフィニッシュ演出ですね。ロンドンのステージでトイレの壁に刺さったり,敗者が座席に押し込まれてそのまま2階建てバスが発進してしまったり……というアレです。
あれはストIVの開発初期において,実装予定の表現要素として挙がっていたものの,開発期間やコスト的な理由で実現ができなかったものでした。それが今作ではついに念願叶って実現したという経緯があります。
ロンドンステージでは,負けた側が近衛兵の帽子を被らされる |
こちらもロンドンステージ。トイレの壁を突き破ったフィニッシュだ |
ストV制作にあたっては,子会社のCAPCOM U.S.A.とゲームメカニクスデザインにおいて意見を出し合いつつ,メインの制作は日本側主導で進めたそうだ。
ストVのグラフィックススペック
続いて,グラフィックススペックを見ていくことにしよう。
PS4版のレンダリング最大解像度はフルHDの1920×1080ピクセルとなっており,これは最新版であるストVAEでも変わらない。PlayStation 4 Pro(以下,PS4 Pro)で動作させた場合も4Kレンダリングにはならず,フルHDとなる。
言い換えると,ストVの開発にあたってバージョンを4.7.6に固定したUE4はPS4 Proが登場する前のものなので,PS4 Pro固有機能への対応が難しかったということである。
一方でPC版は柔軟な作りになっており,GPU性能の許す限り,フルHDを超えた解像度を選択できるようになっている。
フレームレートは60fps。これはPS4版もPC版も同じだ。詳しくは後編で触れるが,ストVの2D格闘ゲームメカニクスが60fps基準で設計されているので,ストV世代においてここが倍速化されることはない。
視点からの距離に応じて3Dモデルの精細度を切り換えるLoD(Level of Detail)システムは非採用。格闘ゲームという性質上,メインキャラクターが遠方に行く表現がないためである。亀井氏も,次のように述べていた。
亀井敏征氏:
顔面が大写しになるようなイベントシーンでもゲーム中でも,常に最上位品質の3Dモデルを選択して描画しています。
キャミィ。ここまで大写しになってもポリゴン密度が高いのがよく分かる。ストVではゲームプレイ中もこのレベルのモデルをそのまま動かしているわけだ | |
ザンギエフ。ワイヤーフレームを見ると,顔面と指先のポリゴン密度がすごい |
背景のポリゴン数は40万から50万ポリゴンくらい。シーン全体ではトータル70万から90万ポリゴンくらいとなっている。
バトルステージによってGPUに対する負荷に多少の開きがあるため,やや負荷の高いステージでは,格闘ゲームの命ともいうべき「60fps死守」のために,プレイヤーが気付かない範囲でグラフィックス要素の削減などを行っているそうだ。
たとえば,背景側に観衆が多いシーンではプレイヤーキャラクターの足が巻き上げる土煙が少なめだったり,遠方の影生成が省略してあったり,腕を振り上げて応援している観衆一人一人のアニメーション更新間隔を30fps相当に下げてあったりしているとのこと。これはなかなか興味深いポイントである。
亀井敏征氏:
意外に思えるかもしれませんが,アニメーション処理や,(PhysXによる)物理シミュレーション処理はかなりCPU負荷が高めになっています。ですので処理の最適化は,キャラクターごとに綿密な計画を立てて行っていますね。
テクスチャ周りだと,1キャラクターあたり,まずベースカラー(Albedo,拡散反射項。UE4はこれをベースカラーと呼ぶ)と法線マップ(Normal Map),マテリアルパラメータ(Material Parameter)テクスチャの3要素が4096
なお,マテリアルパラメータテクスチャは,UE4の物理ベースレンダリングで利用される,スペキュラ(specular,鏡面反射強度)およびラフネス(roughness,面の粗さ),メタル(metal,金属材質のハイライトが光学現象によって特定の色にシフトする度合い),アンビエントオクルージョン(ambient occlusion,環境光による自己遮蔽率)をワンパック化したものになっているとのことだ。
バーディで見ていこう。こちらはカラーテクスチャだ |
カラーマスクテクスチャ。RGBがそれぞれ1色めと2色め,3色めのマスクに相当する。テクスチャのα部はネカリの自発光要素といった特別なマテリアル表現で使う |
1ポリゴン未満の微細な凹凸表現を行うために用意された法線マップテクスチャ |
物理ベースシェーダ用テクスチャ。RGBαの要素はそれぞれ,スペキュラ,ラフネス,メタル,アンビエントオクルージョンに対応する |
表面下散乱に用いるテクスチャ。浸透した光が出射してくるときにどんな色や強度なのかを示したものになる。主に肌の皮膚などの表現に用いられるが,幅広い半透明材質の表現にも応用できるようになっている |
各テクスチャをUE4で利用するにあたってのインポート設定 |
すべて材質表現はUE4上で制作されており,そのマテリアル総数はキャラクターのみで約3000個。ただし,基本(ベース)となるマテリアル「マスターマテリアル」は約10種類程度で,このマスターマテリアルからコスチュームごとに派生のマテリアルを作成する仕様だ。
1コスチュームあたりのそうした派生マテリアルは10〜20個で,コスチュームごとに使用マテリアル数は異なる。
ボーン数は身体が200から300本程度で,顔面は150本程度。顔面のボーン数は格闘ゲームとしてはもちろん,一般的なゲームグラフィックスとして見てもかなり多めだが,これは,顔が大きく歪むくらいの豊かな顔面アニメーションを実現するためだ。
ストVにおけるライティングと影生成
シーンあたりの光源数は3つ。この3つは,いずれも,UE4の「Stationary Light」(ステーショナリーライト)――位置は固定ながら色や輝度は可変でリアルタイムライティングを行える,UE4特有の“半”動的ライト――に相当するものとなる。
3つあるStationary Lightライトのうち,1つは影生成を行うものだ。ゲーム中,キャラクターが波動拳などの発光体を発射することがあるが,これらは可動ライトとして取り扱われ,周囲の他者をもその光で照らす。ただし,この光が影を生成することはない。
影生成には,デプスシャドウ(Depth Shadow)技法を採用している。
デプスシャドウ技法では,「光源位置から見たシーンのオブジェクトまでの距離情報を,デプスバッファ(Depth Buffer)やテクスチャなどへレンダリングしたシャドウマップ」を生成することから,シャドウマップ(Shadow Maps)技法とも呼ばれる。
さて,実際にピクセルを描画するときは,着目しているピクセル位置から光源までの距離と,前出のシャドウマップから読み出した「当該ピクセル位置に対応する深度値」を比較して,「影か否か」の判定を行う。このあたりの仕組みを図解したのが下の図だ。
ストVでは,ゲームシーンが基本固定で,大きく光源が動く状況が少ない。そのため背景側の影は,事前生成したシャドウマップを用いて描画している。つまり,ランタイムにおけるシャドウマップ生成のGPU負荷はやや低めということになる。
もっとも,事前生成のシャドウマップが含むのは「光源位置から見たシーンのオブジェクトまでの距離情報」のみ。背景側のテクスチャに影そのものを焼き付けているわけではなく,影自体はリアルタイムで生成するので,「背景の影が闘い合うキャラクターに投射される」表現にも対応できる。
ちなみに,シャドウマップを事前生成することによる負荷低減テクニックは,PS4用タイトル「人喰いの大鷲トリコ」の開発チームも採用していた(関連記事)。
シャドウマップの解像度は1024×1024テクセルで,キャラクターごとに作成してライティングしている。遠景と近景で複数枚のシャドウマップを生成するようなカスケード拡張などはとくに行っていないとのことだ。
デプスシャドウ技法のため,よく観察するとセルフシャドウ表現もちゃんと行われているのが分かる。
これは,シーンを描画したあとに残る深度バッファ(=Zバッファ)を探査して,「凹んでいる」と判断できる場所に淡い陰色を付けていくような疑似陰影生成テクニックだ。2016年2月の発売時点では,チラチラとして粗い表現だったのだが,2017年のアップデートにより,負荷を低減させつつ品質を引き上げることに成功したそうだ。
亀井敏征氏:
これは,弊社のグラフィックスプログラマーが「品質を上げつつ,負荷も低減させられるよ」と言って,実際に実装してくれたものです。
ストVは,一連のアップデートによりいろいろと改善が進んでいますが,社内にあるほかの開発チームのノウハウを,積極的に投入していたりします。たとえば,ストVは最近になって読み出し速度が改善したと気付いた方もいると思いますが,あれは別のタイトルに関わっているエンジニアの技術を反映したものになっています。
間接照明にはミドルウェア「Enlighten」を採用
ストVのグラフィックスにおいて,重要な役割を果たしているライティング要素としては,間接照明(Global Illumunation,グローバルイルミネーション,大局照明や大域照明ともいう)がある。
キャラクターに対するライティング適用前 |
直接光によるライティングのみを適用したもの |
Lightmassによる間接照明のみを適用したもの |
Enlightenによる間接照明のみを適用したもの |
すべてのライティング要素を適用したもの |
デプスシャドウ技法による影も追加した,最終製品版 |
間接照明には,UE4標準搭載の「Lightmass」と,シリコンスタジオ製ミドルウェア「Enlighten」を組み合わせているが,これは少々ユニークなアプローチだと言えるだろう。UE4をよく知る人ほど「Lighmassだけでよくない?」と思うかもしれない。
Lightmassは,Valveが2004年の「Half-Life 2」で採用したことがよく知られる,事前計算ベースの間接照明テクニック「Irradiance Volume」(イレイディアンスボリューム,リンクをクリックするとpdfファイルのダウンロードが始まります)に近いものだ。
もう少し具体的に紹介しておくと,まず,背景オブジェクトや静的な光源をシーン内に設置したうえで,シーンをボリューム(=直方体)で分割し,そのボリュームの頂点単位に,当該シーンに対する光の相互反射を事前計算して,「全方位に照射される間接光の放射輝度(=Irradiance)」をデータ化する。そして,ランタイムではシーン内を動き回るキャラクターなどに対し,そのキャラクターを取り囲む放射輝度ボリュームのうち,最も近いところからの間接光――実際には8頂点からの放射輝度情報――でライティングを行う。
最近の実装例だと,放射輝度を球面調和関数で表現することによってデータ量を削減するケースが多いようだ。
そもそもストVのグラフィックスはフォトリアルを指向していないため,鮮明な鏡像(=リフレクション)は不要だ。拡散反射主体の間接光表現であれば確かにLightmassで必要十分な気がする。ではなぜEnlightenを採用したのだろうか?
我々も最初はLightmassだけで十分かなと思っていたんです。ただ,やはりLightmassはフォトリアル系用途のためか,効果が淡いんですね。
もちろんこれにバイアスを掛けて強調して適用すれば濃くはできますけれども,それをやろうとすると,ステージの構成要素を変更するたびに再計算が必要で,けっこう時間が掛かる。
さらに,非リアル系の,「まともに計算しただけだと出ない間接光」までを出したいということになると,Lightmassだけでは都合が悪くなってきまして,それでEnlightenを使うことにしたんです。
Enlightenは,間接照明実現の考え方がLightmassとは少し違っていて,当該シーンにおける光の伝搬ネットワークを計算する。「もし,この部屋に光を置いたとしたら,光はこの部屋の中をどう広がっていくか」の構造を計算するイメージだ。
そしてこの計算は,「間接光はどうせ大ざっぱなもの」という仮定の下,部屋に置いてある小道具大道具の3Dモデルを,それこそ積み木で作ったレベルの簡略化モデルにしたうえで行うことになる。
間接光をすべて無効化した,直接光によるライティングのみの画面ショット |
こちらはLightmassによる間接光を付加した画面ショット |
ランタイムでは,この部屋の任意の場所に光源を置くと,事前計算した光のネットワークに従う光伝搬を計算することで間接光の効果をリアルタイムで得ることができる。
GamesIndustry.biz Japan Edition 2017年11月8日の記事で,EnlightenのエンジニアであるWilliam Joseph氏は「EnlightenはPRTではない」と述べている。しかし,原理の説明を読む限り,広義のPRT(Precomputed Radiance Transfer,プリコンピューテドレイディアンストランスファー,事前計算放射輝度伝搬)そのものだ。
ちなみに,PRTは光源とキャラクターの両方が動く局面でも,比較的正確な間接光表現が得られるテクニックとして現在は注目されている。最新の採用例だと,「FINAL FANTASY XV」(PC / PlayStation 4 / Xbox One)の間接光照明がそうだ。
ストVでは,Lightmassによる間接照明に加え,Enlightenによる間接光もライティング要素に加えている。おそらく,エネルギー保存の法則的な観点から見て,物理的には正しくないはずだが,ストVで目指しているグラフィックスはノンフォトリアル(Non-Photo Real,NPR)だから,これでいいのである。
亀井敏征氏:
実のところ,「Enlightenによる間接光にだけ影響を与える専用の光源」も設定できるようにしてあります。たとえば,「あるシーンにはそんな色の光源も照り返しもないけれども,どうしても紫の照り返しが欲しい」という場合には,物理的にはあり得ない間接光を演出することができるわけです。
この効果の分かりやすい事例としてはロシアや中国のステージが挙げられますね。
……といったところで,前編はここまで。
後編では,ストリートファイターシリーズ特有のグラフィックス表現と,「3Dグラフィックスを用いつつもゲームメカニクスが2D」を実現するレシピ,そしてキャラクターの表情やアニメーションといった話題をお届けするつもりだ。
西川善司の「試験に出るゲームグラフィックス」(10)「ストリートファイターV」における高密度なノンフォトリアル表現,そのレシピを探る・中編
前編の掲載から長らくお待たせしてしまって申し訳ないが,連載「西川善司の『試験に出るゲームグラフィックス』」第10回は,「ストリートファイターV」を扱う中編としてお届けしたい。今回は「2D格闘ゲーム」を3Dグラフィックスで実現する,カプコンなりの手法に迫ってみたいと思う。
西川善司の「試験に出るゲームグラフィックス」(11)「ストリートファイターV」における高密度なノンフォトリアル表現,そのレシピを探る・後編
連載「西川善司の『試験に出るゲームグラフィックス』」第11回は,「ストリートファイターV」がテーマの後編だ。最後は,独特のアートスタイルを実現するシェーダメカニズムや色調整システム,背景の作り込みといったところを詳らかにしていきたい。
カプコンのストVAE製品情報ページ
- 関連タイトル:
ストリートファイターV
- 関連タイトル:
ストリートファイターV
- 関連タイトル:
ストリートファイターV アーケードエディション
- 関連タイトル:
ストリートファイターV アーケードエディション
- この記事のURL:
キーワード
(C)CAPCOM U.S.A., INC. 2016 ALL RIGHTS RESERVED.
(C)CAPCOM U.S.A., INC. 2016 ALL RIGHTS RESERVED.
©CAPCOM U.S.A., INC. 2016, 2018 ALL RIGHTS RESERVED.
©CAPCOM U.S.A., INC. 2016, 2018 ALL RIGHTS RESERVED.