こんにちは。ヤマヤタケシです。横浜はオシャレタウンですね。
さて昨日に引き続きCEDEC2014に行ってきました!
アサイチの講演は寝過ごしたため見逃してしまいました。しょうがないので4FのRed Bullを飲みながらRed Bullラウンジで8bitゲームサウンドの動画を見てました。短い動画でしたけどめちゃめちゃおもしろかったです。音楽はいいね・・・。
ということで、2日目のぐちゃぐちゃなメモを大公開します!聞き違い、書き間違い、思い違い、勘違いが多分に含まれていることが予想されます。雰囲気とか、なんかのきっかけになったらいいなぐらいな気分で眺めて下さい。
「AV機器だけが要因ではない?!今改めて見直したいゲームの遅延対策」
これは最高の講演でした。こういう地味ながらクオリティを下支えする調査結果はよだれが止まらないほど欲しいものです。ほとんどの講演はいつか役に立つかも??なものが多いのですが、この講演はリッチ系ゲーム業界の人なら絶対に役立ちます。これだけでもCEDECの参加費30,000円の価値があります!ありがとうございました!
太鼓の達人、エースコンバット、鉄拳の3タイトルで使用されている遅延対策の手法が大公開です。
まずは、基礎知識です。インタラクションループは、人間の脳、手、入力装置、ゲーム機、モニタ、目、脳を繋ぐループです。脳も含めたループの時間が「遅延」の要素です。
まず、脳はそんなに反応時間が短くありません。そのため工夫次第で遅延を「感じなく」なります!なんだってー!
太鼓の達人は、液晶モニタの動画補間機能をONにすることでスムーズな映像になっています。その分、映像が遅れます。そのままでは、◯の位置で叩くと判定がミスになります。音ゲーで、そのズレは致命的です。しかし、遅れ方は一定なのでプログラム側で、未来の画像を送って、音と判定と絵を一致させています。液晶モニタのゲームモードに頼らない、クオリティと遅延無しを両立しています。やるなあ。
遅延の測定には、ハイスピードカメラを使用し、ボタンを押してから、絵が出るまでをコマ送りで数えたとのことです秒間480コマで撮影らしいです。昔は業務用しか撮影できなかったのが最近では数万円のデジカメでもできます。
マジですか?
HS 1000 (224×64 1000fps) / HS 480 (224×160 480fps) / HS 240 (512×384 240fps) / HS 120 (640×480 120fps) (先のリンクから引用)
マジでした。解像度を犠牲にすれば秒間1000コマまでいけますね。
エースコンバットは、全世界多人数大戦で、遅延時間が大きいのが問題でした。ゲームとして面白くなるように位置を予測し、予測位置とのズレを飛行機の動きとして補間したそうです。
鉄拳はズレが許されないゲームなので遅延対策はまた別の手法です。鉄拳の遅延対策のものすげーところは、人間の脳の錯覚を利用しているところです。人間の脳の時間感覚の特性を利用したその手法は、感動しました。なんかもったいないのでここには書きません。メモを解読してください。
アンリアル・エンジン4を技術者が活用するための最新ノウハウ
アンリアルエンジン4が月額19ドルなのでUnityとよく比較されるし、比較したいので見てきました。Unityとはゲーム作りの大衆化を目指していますが、それとは違って引き締まったプロツールの雰囲気を感じました。C++のソースにアクセスできるのが売りなのでコードをバリバリ書く必要があるのかと思っていましたが、ドラッグアンドドロップでオブジェクトを置いて、色々設定するのはUnityっぽい感じでした。先入観はよくないですね。
物理ベースレンダラー+GIの使い方とパフォーマンスの改善方法を紹介していました。それらってUnityは5で入る機能なのですが、アンリアルエンジン4はもう使えます。一歩先に行っていますね。
ライトのパラメータは、単位がルーメンの照明器メーカーの仕様の値をそのまま使えるし、IESプロファイルとやらもそのまま使えるらしいです。でも、マテリアルの設定であるベースカラーとかラフネスとかメタリックとかスペキュラーはアーティストが調整しやすいように、破綻した絵にならないように0から1にしたってさ!
最適化はプロファイラを使って確認します。
GPUが多くの場合に重く、対策としてはライトの調整が効きます。
ライトの影響範囲を狭くします。
ライトの種類をムーバブルよりステーショナリー、ステーショナリーよりスタティックが軽いので変更を検討します。ムーバブルは動けるライト。ステーショナリーはON,OFFができるライト。スタティックはなにも操作できない焼きこまれたライトです。
シャドウマップの生成が重いのですが、デフォルトではオブジェクトごとに生成されるのでオブジェクトを親子関係にできればします。そうするとまとめてシャドウマップが生成されます。
Position Based Dynamics Omelette コンピュータグラフィックス関連の最新論文紹介
物理運動が簡単に実装できそうな夢を抱くに十分な講演でした。たぶん、簡単じゃないけど。
剛体のシミュレーションであるPBDからはじまり、流体のシミュレーションのSPHに触れて、それらを組み合わせていい感じの海のデモンストレーションにつながりました。速くてシンプルらしいので、煙とか液体とかをゲームに組み込める技術だそうです。
CGにおける運動や変形の記述とその数理
いやー、これもまた数学の世界でした。いつCGに繋がるのかと思っていたら、ちゃんとつながって良かったです。「リー群」を使います。
リー群とリー環の関係は、半球とそれに接する面みたいなものらしいです。
で、指数写像で行列を向こう側に送り込んだり持ってきたりします。
行列はそのままは送れないから対角化するらしいです。
らしいとしか言えない!
具体例としては、三角形ポリゴンで作られた「N」から「V」へ補間するときに、「いい感じ」にする方法です。
こっち側で頂点を線形補間するとぐちゃぐちゃになります。そこで、あっち側に変換してこっち側補間して戻すと形が維持されます。三角形としての形が維持されたまま補間できます。これだけでは三角形がバラバラになるので、拘束条件をエネルギー関数で定義して向こう側で使うことで、三角形がつながったまま感じに補間できます。
まったくもって半信半疑でよくわかっていなかったのですが、デモンストレーションでは確かにいい感じで補間されたので素直にすげーです。
この技術の3Dへの応用例では、ボーンの入っていないウエイトが付いていない恐竜がスキンアニメっぽく動いていました。
一言でいうと、「行列を分解して指数写像して線形補間して指数写像して合成する」って話です。
正直なところ、ギリギリアウトー!わからーん。1時間という限られた時間ですし、さらーっとなでていただきました。まー、そういう分野や成果があるのを知ったので、必要があれば深めようと思います。
以上、数学とか物理とかアルゴリズムな一日でした。脳から煙でちゃう。
そんじゃまた。