
まずは、厚氏が登壇。『龍が如く』シリーズは、2005年のPS2『龍が如く』を皮切りに、2016年発売予定の最新作『龍が如く6 命の詩。』まで合計11作品が発表されています。ほぼ毎年リリースしているシリーズですがプログラムチームは同一であることが特徴となっており、技術的な側面からシリーズを振り返ります。


2008年発売のPS3『龍が如く見参!』では解像度が1280×720、法線マップを始めて利用し、影の描画にシャドウボリュームを使っていました。また、シリーズで唯一物理エンジンの外部ミドルウェアを採用。2009年発売のPS3『龍が如く3』では、前作のエッジフィルタが不評だったため外し、点光源をピクセルセーダ処理に移しています。合わせて、内製の物理エンジンが使われはじめました。


2010年発売のPS3『龍が如く4 伝説を継ぐもの』では、MSAAを適応し前作で目立っていたジャギーを緩和しています。スクリーンスペースのリフレクションも雨の反射表現だけではありましたが利用しています。2011年発売のPS3『龍が如くOF THE END』ではSDKとしてMLAAが提供され採用したため、マルチパスレンダリングと相性が良く開発はスムーズだったそうです。
2012年発売のPS3『龍が如く5 夢、叶えし者』では、ライティング計算が刷新されたのが特徴です。光源はこれまで点光源2つで開発したいたものを、擬似光源を利用するように変更。車のヘッドライトなど簡易的な表現として適応しています。また、本作からマルチスレッドのフレームワークを導入しました。


初のPS4/PS3対応タイトルとしてリリースされた2014年発売の『龍が如く 維新!』では解像度に変更があり、速度的負荷をかけていたシャドウボリュームからカスケードシャドウマップに移行しています。前作は固定フレームレートでの開発に苦戦をしていましたが可変フレームレートに変更となり、SSAOが実用化されました。2015年発売のPS4/PS3『龍が如く0 誓いの場所』では、スクリーンスペースのリフレクションを再び導入。ここで技術的には一旦区切りとなり、2016年発売のPS4/PS3『龍が如く極』ではこれらの技術を利用して初代『龍が如く』をリメイクしています。


2016年発売予定のPS4『龍が如く6 命の詩。』ではPBRが導入され、タイルベースのリアルタイム光源が扱える、マルチスレッドジョブフレームワークを刷新し利用効率をあげる、Compute Shaderによるプロシージャルエフェクトの割合が増える、といったフルリファインが行われました。タイルベースライティングについては、タイルサイズを32×32で、Compute Shaderでタイルごとに有効ライトリストを生成。半透明はオブジェクト別に生成しています。ライトで特徴的なのは、光源の多い繁華街に合わせて線分上にスポットライトを並べた「tube」、指定領域の明るさを落とす「dark light」です。

続いて、高木氏によってプロシージャルな特殊エフェクトについてのプレゼンテーションが行われました。方針として負荷コストを低く見た目を重視しており、物理的に正しい実装ではないと伝えています。



雲や太陽の光球、月を描画する「SkyCloud」はノイズテクスチャを天球にステレオ投影し、ノイズの値によって雲の内部散乱を擬似的に表現しています。コインが大量に飛び散る「Dropping Coin」は、コインのメッシュ形状をボックスにし、レイトレースで円柱に投影することで近距離でもクオリティを保っています。容器に液体を入れる「GlassWater」は、水面のパレメータのみを制御して揺らすことで容器内の液体の挙動を表現しています。空気中を漂う微粒子を表現する「FlowDust」は、3D乱流ベクトルによる粒子移動で行っています。



最新作に登場する「海」の表現は、使用できるリソースに制限があるため無限に広い海をすべて作るのではなく、カメラで見える描画される範囲の投影空間におき、ハイトマップなどを更新してリソースを抑えるようにしています。メッシュはカメラに近いほうが密に、遠くになるほど粗くなっています。そこに波の高さ、水面上の波の動き、泡の発生条件のテクスチャをレンダリングして海を描画。メッシュ投影の利点は、カメラの画角によるズームに対しても適切な解像度が割り当てられるため、イベントシーンで望遠レンズを多用する『龍が如く』シリーズにおいては有効に働くとのことです。


次に、藁間氏による『龍が如く』シリーズにおける物理エンジンへの取り組みについてのプレゼンテーションが行われました。シリーズでは『龍が如く3』から内製の物理エンジンを使っており、以後実績を重ねています。『龍が如く6 命の詩。』においては、物理エンジンをより積極的に利用し、柔体シミュレーションでもコリジョンコールバックを多用、物理シミュレーションを補佐する物理演算処理も行っています。



最新作では配置オブジェクトがすべて物理形状で構成されるため、インタラクションが発生します。キャラクターコントロールにも物理エンジンを利用しているので、配置オブジェクトの上にも乗れるようになりました。コリジョンコールバックを利用した地形センサーの仕組みもあるため、壁・階段・障害物とその高低差を動的に検出が可能。たとえば、脚を引いて体を傾けて片足浮き状態を回避したり、小段差や溝をまたぐようになりました。


キャラクターには、四肢や体幹を制御する部位単位のコリジョンが設定されています。はみ出す部位の補助や腕をたたむ、伸ばす、脚を引くとった挙動を行えます。運搬物を持っている際は、物の重さや加重、重心のバランスを考慮した持ち方となっており、投擲時の物体の挙動にも物理エンジンを利用し的確な動きになっているとのことです。倒れた敵はラグドールっぽく見せない工夫を持たせ、脱力や痛覚の表現を加えました。藁間氏は、「ゲームロジックと物理の折り合いを付けるのは難しいので、より自然に、より普通にというのを意識してデザインしています」と伝え、キーフレームアニメーションとプロジャーナル処理の融合は不十分であり、モーションキャプチャーデータとの相性の改善などまだまだ研究の余地があるとしました。
最後に、藁間氏から剛体シミュレータによる浮力の表現についてのプレゼンテーションが行われました。軽いものは水面で浮き、重いものは沈む「浮力」を、水面の高さに合わせて制御点を移動させる主砲ではなく、空中・水中・水上と状態別に異なる物理演算をすることで実装しました。


空中では剛体シミュレーション、水中では浮力と粘性抵抗を検討。水上には浮心という、水中部分の重心と浮力が作用する位置を考え、左右にぷかぷか動く挙動を、剛体をパーティクルに分割し水中と空中それぞれの問題として解決しました。


しかし、質量に対して体積が大きいという密度が低いことによる問題が発生。そこで、剛体形状から計算された物理的密度と、剛体の代表的な材質を基準に設定された論理的密度の差を計算し、 その比率から水を軽くして浮力を小さくするという流体の密度を補正することで解決しました。その結果、物体による浮き沈みが実装可能となりました。終わりにこの浮力に関するデモンストレーションが行われ、講演は終了しました。