アンリアル日記 ― 第 11 日目 (2015/3/12)
UE4 4.7.2 (7 時間)
依然として、Content Examples プロジェクトの内部にあるレベルに磨きをかけています。
■Dynamic Scene Shadows (ダイナミック シーン シャドウ) : 動的なシャドウとベイクされたシャドウ マップ間の遷移を可能にするクールな機能です。本質的には、動的シャドウが表示される、カメラからの範囲を設定します。こんな機能が Unity にあったかどうかは分かりません。今やっているような体系的な探究をしたことがなかったので。やるべきだったかしら…
■Reflections (反射) : UE4 の反射を初めて見た時度肝を抜かれました。それは、ポストプロセス エフェクトの Screen Space Reflections (スクリーン空間の反射) によるものでした。低負荷でリアルタイムのシャドウを Unity 4.x までで実現することは非常に難しいことでした。実際、Alloy を使っても、それほど思ったようにはいきませんでした。しかし、UE4 のリフレクション キャプチャ アクタなら、SSR と結合することによって、Substance による物理ベースのマテリアルのレンダリングが簡単に機能するようになります。
繰り返しになりますが、このエフェクトの実装について悩む必要がなくなったということは大いなる喜びです。また、ゲーム開発におけるグラフィックスの立場に関する議論において、強力な援軍を得ることになります。もちろん、最終的にはゲームプレイが王様です。でも、ゲーム世界において美的快感をもたらすビジュアル表現を作り出せるということは、開発者の気持ち/生産過程から極めて大きな心配事を除去できることになるのです。
ビジュアルを調整するために数百時間も費やすことを想像してみてください (特に、ソロのデベロッパーがそうしなければならないことを)。そのような時間が少なくなればなるほど、ゲームプレイに磨きをかける時間が多くなります。「でもね Jack、グラフィックスのことなんか気にしなければいいじゃない」というのは、「息なんか止めてしまえばいいんじゃない」というのと同じことです。僕は、プレイヤーが楽しんでもらうために、ハイクオリティの表現を追究しています。自分の開発環境から出来上がるものが、単に面白いだけではなく、美しくなるように心がけることが、僕の責任だと思っています。
■Static Meshes (スタティック メッシュ): ここ 2 年間は 3ds Max のスキルを身に付けるために頑張ってきたので、この分野は得意です。UE4 にはメッシュ ペイント関数、UV およびコリジョン生成が備わっているのですが、僕は長いことこのような作業は Substance Painter と Max に任せてきました。Socket (内部のピボットを使ってメッシュを合体させる機能) は、便利なものになるでしょう。コンポーネント メッシュを分解してエンジンで扱いやすくするためには、Max から UE4 のパイプラインを調整する必要があるかもしれません。
■Level Design – Workflow (レベル デザイン ― ワークフロー): Content Example は、初心者にはものすごく役立ちます。適切な開発ワークフローのために最も重要な要素である「イテラティブな設計」に焦点を当てているからです。完璧な仕事を成し遂げるためにはものすごい量の仕事をこなさなければなりませんが、たいがいの創造的な努力と同じように、それに圧倒されないようにするためには、物事を要素に分解して、できるだけ一気に仕上げるべきです。
下地に満足できたら、ディテールを磨き上げていきます。容認できるレベルのクオリティに達するまで (あるいは、時間/お金/忍耐が尽きるまで)。ここでの設計は、プロトタイプ (別名、white/grey boxing。BSP を使ってレベルのおよそを組み立てます) → メッシュ作成 (BSP を洗練されたスタティックメッシュおよびマテリアルで置き換えます) → ライティング (ライトとポストプロセス エフェクトでレンダリングを改善します) → 仕上げ (追加エフェクト。たとえば、パーティクル、オーディオ、ディテールおよび最終的なアセット)
自分のプロジェクトにこのワークフローを使った時のことはあまり正確には覚えていませんが、かなり前のことです。ゲーム開発の世界に入るよりも前、ビジュアルアートに取り組んでいた時のことだと思います。いずれにしても、このやり方は機能するし、ハイクオリティの成果をもたらします。メモ。ゲームプレイの設計の大半は、第 1 段階で行われるべきです。また、次の段階に進む前にほぼ完成の域に達していなければなりません。
■Geometry Editing (ジオメトリの編集) : これこそ、VFS Game Design 学校の UDK 入門で集中的に取り組んだことです。刺激を求めて、記憶を頼りに『Child』のレベルをもう一度作ろうとしてみましたが、すぐに、BSP では 3ds Max ほど概略をうまく作れないことに気がつきました。1 Unreal Unit (アンリアル単位) は cm なのですが (これは、何年も僕がやってきたことなのでものすごく素晴らしいことなのですが)、プリミティブを改変してスケーリングすることはとても難しいのです。
BSP オブジェクト (ブラシと呼ばれています) の表面と頂点を編集することはできますが、[詳細] で更新されません。このことは、より複雑な (箱型ではない) ブラシの性質を引き継いでいるためだと思われますが、これが不可避である限り、僕は Max で組み立てて、単にプリミティブをインポートしたいと思います。確かに、余計な手順ですが、Max のツールがもつ柔軟性はこの努力に値すると思います。
このオブジェクトは、もう 200×200×200 ではないので、スケーリングが若干難しくなります。
■FBX Import Options (FBX のインポート オプション) : サンプル レベル全体は、モデルをエンジンに取り込むことだけのために作られています。この便利さは軽んじるべきではありません。モデリング パッケージからエンジンへの 1:1 ワークフローは、一種の聖杯です (より短いステップ、少ない頭痛、WYSIWYG のアセット パイプライン)。ここにあるものはみな単純明快です。同時に UE4 ではモーフターゲットがサポートされていることも思い出させてくれます。
■Navmesh (ナビメッシュ) : この分野も Unity でやったことがない分野です。AI パス機能をもつプロジェクトは数回しか扱ったことがなく、何年も作ったり壊したりしています。この機能については一般的な理解はありましたが、細部に入り込んでいくことはありませんでした。現在は、『The Child』のために Navmesh による移動を実装しようかと検討しているところです。ただし、この設計は僕が長年やりたかったこととは反対のことなのですが。いずれにしても、この機能のドキュメンテーションはとても素晴らしいです。
■Math Hall (計算のホール) : この Content Example のレベルには、Vector Math の 21 個のサンプルと、Math 関数の 15 個のインタラクティブなサンプルが含まれています。そのほとんどは僕にとって親しみのあるものです (5 年間に及ぶ試行錯誤によるゲーム開発からほとんど独力で身に付けたものです)。ただし、見慣れないものもありました。『long walk of mathematics』などは便利な参考書となってくれるでしょう。また、アンリアル内でユニークな機能を作る時にはインスピレーションを与えてくれることでしょう (あるいは、他のゲーム エンジンででも)。
この向こうにはもっと長い 2 つ目の部屋があります。みなさんが大好きな計算をしっかりチェックしてください。
僕のように、ドキュメンテーションの順番に沿って Content Examples を見ていっている人なら、説明が付されていないレベルがプロジェクトにいくつかあることに気がついていることでしょう。これは独力で調べていく必要があります。
■Level Scripting (レベル スクリプティング) : あらゆるブループリントをレベル ブループリント (エディタの上部の中間のバー → [ブループリント] → [レベル ブループリントを開く] から開けることができます) に入れるため注目に値します。僕は、このレベル ブループリントのコンセプトは、グローバルな Game State クラスと同様のものだと理解しています。アクタ上で個々のブループリントを使用すると、包括的な「マスター」ブループリントが 1 つ必要になるという事態を回避できるように思えます。だから、Examples の並びには含まれていないのでしょうか。それでも、ドアを開くためのトリガーを作成する方法について一新したいのであれば、さらに 3 つのサンプルが参考になります (スポーンされた物を回収することによって引き起こされるものも含まれています)。
■Level Streaming (レベル ストリーミング) : 大きなレベルを作っておき、ゲートをロードすることによって分割するという考え方は新しいものではありません。僕が個人的にこれを使用したことがないのは、非常にタイトで小さいエクスペリエンスを設計するからです。Content Examples に含まれているこのレベルは、UE4 で適用され、見事にこの原理をデモンストレーションしています。これがなぜ注釈で扱われていないのか分かりません。公式のドキュメンテーションで初めてちょっとしたギャップを感じました。レベル ストリーミングのカテゴリは、中にストリーミングが存在する極めて広大なワールド コンポジションにリンクされています。とにかく、サンプル レベルは完璧なものであり、ストリーミングを使いたいと思っている方は研究してみるべきです。
■Experimental Materials (実験的マテリアル) : このシーンには、DitherTemporalAA マテリアル関数の使い方が含まれています。この関数は、半透明および異方性反射のつや消し金属のエフェクトを作成するためのものです。面白いエフェクトなのですが、自分の開発では安定していない (訳注: 「実験的な」) ツールは使わないようにしています。
■Media (メディア): 埋め込まれたムービー アセットを再生する機能は、UE4 では初めてらしいですね。UMG (UI システムのことです) やレベルのテクスチャで再生することが可能になります。ただし、まだ生産段階で使えるものではありません。この機能は、簡単に言うと、ロード画面の外でインゲームでムービーを再生することが 100% 可能になります。ターゲットのプラットフォームに配置できない可能性があるとの警告が出されますが。堅牢なものになるのは、おそらく 4.8 になってからではないでしょうか。
■Physics-based Animation (物理ベースのアニメーション): キャラクターやスケルタルメッシュ上で物理を有効化して、物理的なヒットをシミュレートしたりラグドール計算が可能になります。Unity ではこのような機能を深く学んだことがなかったので、自分にとってはまったく新しい機能です。幾分高度な機能ですが、圧倒的というほどでもありません。これまでどおり、ドキュメンテーションは分かりやすく親切です。
■Skin Rendering (スキンのレンダリング): サブサーフェス スキャタリング関係で、著しい進歩があったように思われます (サブサーフェス スキャタリングとは、半透明な物質において光のバウンドを適切に実現できる機能のことです)。このシステムは Subsurface Profile (サブサーフェス プロファイル) と呼ばれています。スキャタリングする物質に付属しています。アクタのマテリアル アセットで正しく調節する必要があります。
リアルになればなるほど、素敵になるのが常です。肌だけではなく、サーフェスを光が通過すべきもの (ロウ、ある種の石など) すべてに応用が効きます。このような機能が UE4 で同梱されていて、無料で使えることに感謝したいです。サンプルを通じてこの機能を使えば使うほど (ある種の機能には試行錯誤しながら)、「おいおい、有料のプレミアム プラグインとして販売できるのに、タダだと!」と思うのでした。
見栄えを良くするために何かをグレードアップすることを恐れるな。その後に恐れよ。
今日の アンリアル・エンジン ライブストリームを見ました。毎週 60分間エピックの本部から配信される番組です。このような番組を視聴できることはとても素晴らしいことです。一人で開発していると無音で単調な環境が続くのが普通ですが、それを打破できます。それだけではなく、コミュニティの一部になっているという感覚も得られます。
明日は、Content Examples プロジェクトの残り 2 つのレベルを絶対に終わらせること (UMG と VR。ちゃんとした装置がなくてこの VR のレベルからどの程度の恩恵が得られるかは不明ですが)。そして、Gameplay Concept Examples を研究する前に、Engine Feature Samples の残りをざっと見ること (できれば)。その後は、このページにあることは何でも見て試してみようと思います。これで UE4 を使って何かを作れるようになるでしょう。今度のジャムの到来前にそのような感じになれるかどうかは別としても。