2018年12月3日9 分

「有翼のフロイライン」とUE4

最終更新: 2019年1月30日

◆Unreal Engine 4 (UE4) Advent Calendar 2018

Epic Games Japanのおかず様主催のアドベントカレンダー(その1)企画の記事です。

https://qiita.com/advent-calendar/2018/ue4

4日目となる今回の記事はProduction Exabilitiesの一柳よりお送り致します。

◆免責

内容には一部誤りや足りない箇所があるかもしれません。

間違いがあれば一柳宛てにこっそりお知らせください。

各内容に深く触れない予定です。

◆この投稿は何?

タイトルハイスピードフライトシューティングと銘打っている

「有翼のフロイライン」で使用、運用しているソフトを紹介していく記事になります。

・UE4

・TrueSky

・World Machine

↓今回は触れません

・Amazon Web Service EC2(SVNサーバー)

・Multi Lockon System(Marketplace)

・Screen Indicator(Marketplace)

・Radar Minimap(Marketplace)

・Substance Painter

今回はアドベントカレンダー企画の一環としてまずはUE4、そしてTrueSkyWorld Machineの3点をピックアップします。

他、Maya、Adobe CreativeCloud、ZBrushもありますが、

フロイラインではごくベーシックな運用をしているので端折ります。

定期的投稿は確約しませんが、以後各ソフトにフォーカスした内容を予定しております。

◆何故UE4?

デジゲー博版で(少し)更新しましたが、下図中央に現在のコアメンバーを記載しております。

Production Exabilities+協力者+声優さん込みで10人超えと少し人数は増えました。

そのうちUE4上での実装、システム構築は一柳のところで行っています。

ゲームエンジンも様々な物が存在しますが、

UE4を選択した理由を"3つの楽"としてご紹介します。

まず、第一の"楽"としてにUE4は「かつてプログラマーがやるべきことを誰でもできるようにした」という大きなアドバンテージがあります。

マテリアルは言わずもがな、プログラム自体もノードの配置+接続で行えるBlueprintの存在には大いに助けられています。

個人的にはこれが無ければこのプロジェクトは存在しなかったか、

別の形で陳腐な物が出来上がっていたと思います。

(ただ重い処理も簡単に作れてしまうという事で、TickイベントやFor Each Loopに悩まされた話は別の機会に…)

そして第二は業界標準となりつつあるエンジンが(ある程度)低コストで使えることです。 少し前とは一転してゲームエンジンの導入コストは(一部条件を伴えど)大分下がりました。

時間も人員も限られている身としてはUE4も含め多くのAAAタイトルで採用されているソフトを扱えるアドバンテージは大きいです。

最後に第三は活発なコミュニティの存在です。

UE4関連の著名な方やEpicGamesの方々はいい意味でオープンです。

その為、英語、日本語問わずやりたい事の情報へのアクセスが容易です。

現時点でやるべき事を見失う事は無いですし、おそらく今後も無いでしょう。

UE4を選んだ理由は以上の通りです。

専任プログラマー参入の話がなくなったので1番目は特に大きいです。

◆ビジュアル面から見るUE4

幸いなことに、有翼のフロイラインはビジュアル面で幾つかお褒めのお言葉を頂いておりますが、私個人としてはそこまでビジュアル面に力を注いでいる訳ではありません。

(と言うと怒られるかもしれませんが…)

本作のポスターアート学校時代の先輩のさんに(無理やり)描き下ろして頂いてます。

物理レンダリングのやり方に逆らってトゥーン調に走る選択肢もありましたが、 残念ながら走り始めに存在するモデラーは私一人だけでしたので早々に選択から外しました。

現状突飛な事はしていないので、実際ビジュアル面であまり言うことが無いです。

トゥーン調に走らなかった理由にはもう一つあり、Marketplaceのアセット、TrueSkyとの親和性を利用する為です。

大半のアセットはPBRに則ったいわゆる”普遍的”ながらも良質な物がそろってますし、 リアルな空がウリのTrueSkyを導入しているのに”異物”を混ぜるのは有る種の賭けです。

「当たり前じゃんか!」といえばそこまでですが、

全ては少人数であることを隠蔽する為です。

回りくどくなりましたが、UE4にはリッチなグラフィックを実現する機能、手段のほとんどにインストールした直後からアクセスが可能です。

逆に機能もアセットもたくさんあり過ぎて…という気もしなくもないですが、

これでもか!というぐらいに用意されているので、化学反応に期待しつつ走り続けることを可能にしてくれてます。

◆UE4はどこから手を付ける?

個人的には下記2冊でゲーム制作に必要な情報が揃うと思います。
 
Unreal Engine 4で極めるゲーム開発:

サンプルデータと動画で学ぶUE4ゲーム制作プロジェクト

Unreal Engine 4 ブループリント逆引きリファレンス

ゲーム・映像制作現場で役立つビジュアルスクリプトガイド

個人的な始めの流れとしては、Third Person Shootingテンプレート(またはそれ以外のテンプレート)を読み解く所からでした。

プレイヤーのインプットがどのようにして対象となるキャラクターに反映させられるか、キャラクターのアニメーションの決定をどのように行っているかさえ理解できればひとまずゲームとしての"体"は出来上がると思います。

あとは各Blueprint間の"やり取りの仕組み"を知ってからは学習がスムーズに進んだ気がします。

序盤はキャストやインターフェイスの理解に苦戦し大きくつまづいた記憶があります。

このあたり既にUE4公式であったり、alweiさんの記事、書籍等で再三取り上げられていますが、つまづいた絡みの話は機会があれば記事化するかもしれません。

また、Epic Games Japanの方々が多くのスライド資料をネットに公開しています。

余談ですが私自身は本業はモデラーなので、プログラミングのいろはをすっ飛ばしてフロイラインの開発に参入しております。

来年開発完了(予定)をもってUE4の何につまづいたか、何をやらかしたか等の事例を紹介できればと思っております。

という事で、早足気味ですがUE4の話は以上です。

◆TrueSky

ミドルウェアを導入した事始めは、実はステージの"境界"の隠蔽です。

高度3〜5kmがプレイヤーにとっての平均的な舞台のため上手いこと処理したいところです。

山メッシュを延々と配置して空に何も手を加えなかった映像です、1年以上前です。

TrueSkyは最近だと"Ace Combat 7"での採用で有名ですが、

過去様々な海外タイトルで採用されている文字通り"空"に特化したミドルウェアです。

AAAタイトルで導入されるならさぞかし値段は… となりますが調べてみるものです、

インディー向けのライセンスもあります。

(現状だとインディー向けに買いきりor月額プランのどちらかが提供されています。)

特徴としては、ライティングと空+雲+大気の描写をまるごと受け持ってもらえる上、見た目の割にとにかく軽量という所です。

試しに"Contents Examples"にあるパーティクルで辺り一面を埋めた事がありますが…結果は想像どおりです。

空だけならば、Marketplaceの"Ultra Dynamic Sky"も綺麗で個人的にはおすすめですが、パフォーマンスに響いたのと、天球と地面の交錯部分で境界はバレてしまいます。

UE4勉強初期はとにかく雲をどうしよう(+ワールドの境界をどうやって誤魔化そう)かと考えてましたが、TrueSkyの採用で全て解決しました。

インゲームの大気+雲+空はアレコレ悩むよりミドルウェアにお任せしています。

雨や雪も降らせることもできますし、雲の中に突入できるのはやはりインパクトがあります。

◆TrueSkyで出来るけどやらなかった事

・時間経過

TrueSkyにはUE4と同様にシーケンサーが存在します。
 
(空の情報をTrueSkySequenceAssetとして個別に管理が可能です。)

ですので時間変移を利用したゲームも制作可能です。

一日の中での雲の量、霧の度合い、天候の大半はパラメータとして調整が可能です。

フロイラインでは昼晩と長時間連続して戦う事はないので、

時間を固定し、各レベルごとにTrueSky用のデータを用意して切り替えてます。

・雲から落ちるシャドウ

雲から落ちる影はTrueSky側で用意されているLight Function Materialが使えます。

指向性ライトにマテリアルをアサインするだけです。

が、手を加えないと空よりも上の物体も影に覆われてしまうため現時点では使用していません。

※今は地面に対してベースカラーでの”嘘”影を仕込んでますが、

 そのうちマテリアルに手を加えてアレコレするかもしれません。

雲の有無がリアルタイムに反映されるため、地に足を付けたタイプのゲームであれば即座に手頃な結果を得られます。

TrueSkyに関しては幾つか掘り下げられる箇所がありますが…

長くなりそうなのと、PC以外での結果も見てからの方が良いだろうとのことで、

今回はここで止めます。

◆WorldMachine(WM)

UE4のLandscapeは編集機能が十分揃ってますが、

反復作業という点をカバーするため、ソフトを用いています。

あとフロイラインで登場する背景は四方約40kmに及んだりするので、

下手に手でやると"ムラ"が発生する上、再現性という点でも宜しくありません。

余談ですが、同等の理由でフォリッジの配置もProcedural Foliage Toolを使用しています。 が、UE4.21現在でもエディタ設定上では実験的機能に分類されているので今後どうなるかは分かりません。

World Machineは広範囲の地形情報をシュミレートしてUE4に持ち込むために使用しています。

デバイス(ノード)で地形を作成するので慣れは必要かも知れませんが、デバイスを追加すれば手軽に川を作ったり、侵食させたりする事が可能です。

UE4に持ち込むデータは、World Machineで生成したマップの一部なので、

地形情報の生成からUE4上でマテリアルの割り当てさえ行ってしまえば、同じ気候帯の違う地形のバリエーションを作ることも可能です。

このソフトはインディーライセンスもあり、

いわゆる"廉価版のような機能制限"が無いので重宝しています。

(シュミレート時にCPUが2コアしか使えない制限はありますが…)

日本語のドキュメントがあまり存在しないという欠点はありますが、

デフォルトのサンプルデータも充実しているので、教材には困らないはずです。

もしくは似た地形をサンプルデータから探してカスタマイズしていくのが一番早いかもしれません。

ちなみにUE4フォーラムにステップバイステップでの解説を上げている投稿があります。

英語ですが、手順を追えばUE4とWorld Machineとの付き合い方が分かるかも知れません。

World Machine to Unreal Engine 4 - In Depth Guide

なお、個人的には難しいこと抜きに地形を生成したい場合はL3DTがおすすめですし、

今年リリースされたInstant Terraが気になってます。

(が、フロイラインのマスタまではWorld Machineを利用する予定です。)

◆余談

テクスチャの入手とLandscapeの勉強のため、"Photorealistic Landscape Pack 4"を購入していますが、このアセットでは「海」を広大な平面プレーン+半透明で表現されています。

情報量も増えますし、半透明は使わずとも平面プレーンで海を”置く”ことも考えましたが、

超遠景(高度1kmを過ぎたあたりから)でメッシュの交差部分がギザギザになるのと、

半透明系のオブジェはTrueSkyに対応させるべくマテリアルを弄るのに時間が要るので使いませんでした。

ギザギザの原因はクリッププレーン絡みだと思いますが、ワールドと各アクタのスケールを小さくすれば?みたいなフォーラムの投稿をどこかで見かけております。

エンジン自体に手を加えるのも一手かと思いますが、

折返し地点の現在では不具合を懸念してやってません。

ので、World Machine上で海面"以下になる場所"をトリミングして

無理やり平面にして海にしてます。

今回のアドベントカレンダー向けの記事は以上となります。

ここまでお読み頂きありがとうございました。

カレンダーの5日目、明日はほげたつさんの投稿となります。

フロイラインでも制作総初期からお世話になっている"Multi Lock-on System"の作者さまです。

UE4への対応は4.13で止まっておりますが、現在でも整備して組み込ませて頂いております。
 
(個人的にはブループリントの教科書代わりとなったシステムです。)

次回投稿日は未定ですが、ようやく運用から1年弱経って料金感が掴めたので、

AWS絡みの内容を予定しております。

(マルチプレイやWeb上のシステム等の話ではなくSVNサーバーとして運用した感触を紹介するつもりです。)