モリカトロン株式会社運営「エンターテインメント×AI」の最新情報をお届けするサイトです。

TAG LIST
機械学習ディープラーニングCGCGへの扉GANニューラルネットワークモリカトロンAIラボインタビュー強化学習三宅陽一郎CEDEC2019QAスクウェア・エニックス音楽CEDEC2020ゲームAIデバッグ深層学習シナリオGDC 2019不完全情報ゲームボードゲームAIと倫理VFX映画SIGGRAPH遺伝的アルゴリズムVRメタAIキャラクターAIロボットファッションルールベースビヘイビア・ツリーグーグルNVIDIADeepMind月刊エンタメAIニュースJSAI2020人工知能学会イベントレポートOpenAI敵対的生成ネットワークガイスター畳み込みニューラルネットワークtoioGDC SummerモリカトロンマルチエージェントナビゲーションAI小説AlphaZeroマイクロソフト中島秀之アートGoogle自動生成研究ディープフェイクDARPACNNメタデータTensorFlow本間翔太CM倫理Amadeus Code音声認識eSports眞鍋和子シーマン齊藤陽介お知らせ水野勇太サルでもわかる人工知能ワークショップ知識表現IGDAどうぶつしょうぎマシンラーニングクラウド完全情報ゲーム藤澤仁長谷洋平宮路洋一HTN階層型タスクネットワークソニーStyleGANプロシージャルスポーツフェイクニュースGPUALife人工生命オルタナティヴ・マシンサウンドスケープASBSぱいどんTEZUKA2020AI美空ひばり手塚治虫汎用人工知能Electronic ArtsFacebookマーケティングApex LegendsNinjaゲームTENTUPLAYMARVEL Future Fightタイムラプスバスキアブロックチェーン通しプレイ階層型強化学習WANNOpenAI Five竹内将馬淵浩希岡島学映像セリア・ホデントUXピクサー認知科学ゲームデザインAdobeLUMINOUS ENGINELuminous Productionsパターン・ランゲージ作曲ちょまどビッグデータ中嶋謙互MicrosoftMicrosoft Azureアストロノーカキャリア模倣学習テストプレイナラティブFPSマルコフ決定過程eスポーツスタンフォード大学パラメータ設計テニスバランス調整レコメンドシステム対話型エージェント協調フィルタリング人狼知能Amazon軍事AlphaDogfight TrialsエージェントシミュレーションゲームプレイAIStarCraft IIFuture of Life InstituteIntelロボティクスLAIKARotomationPyTorchドラゴンクエストライバルズ不確定ゲームDota 2モンテカルロ木探索DQNソーシャルゲームEmbeddingGTC2020NVIDIA MAXINE淡路滋ビデオ会議グリムノーツバンダイナムコスタジオゴティエ・ボエダBLUE PROTOCOLGautier Boeda階層的クラスタリングaiboJuliusSIETPRGUnityバーチャル・ヒューマン・エージェントtoio SDK for Unityクーガー田中章愛石井敦銭起揚茂谷保伯森川幸人成沢理恵マジック・リープMagic Leap Oneノンファンジブルトークン里井大輝GEMS COMPANY初音ミク転移学習デバッギングアニメーションリップシンキングUbisoftUbisoft La Forge北尾まどか将棋ナップサック問題ジェイ・コウガミ音楽ストリーミングSpotifyReplica Studioamuse5Gクラウドゲーミング和田洋一Stadia対話エンジン斎藤由多加シーマン人工知能研究所ゴブレット・ゴブラーズSIGGRAPH 2019ARAIりんなアップルiPhoneカメラAIGraph環世界予期知能ウェイポイントパス検索ドラゴンクエストPAIR画像認識アルスエレクトロニカ2019DeNA逆転オセロニア奥村エルネスト純齋藤精一高橋智隆ロボユニ泉幸典ロボコレ2019ぎゅわんぶらあ自己中心派意思決定モデルウロチョロス理化学研究所教育SIGGRAPH ASIALEFT ALIVE長谷川誠Baby Xロバート・ダウニー・Jr.YouTubeSFThe Age of A.I.レコメンデーションテンセントMOBA人事研修mynet.ai人工音声プレイ動画NBAドローン群知能ウィル・ライトシムシティシムピープルレベルデザインSporeデノイズ画像処理CPUGMAITRPGウィザードリィAI Dungeon西川善司サムライスピリッツゼビウスストリートファイター栗原聡山野辺一記大里飛鳥マンガ13フェイズ構造手塚眞不気味の谷Oculus Quest生体情報写真照明山崎陽斗立木創太松井俊浩スパーシャルAIGPT-3GameGANパックマンソサエティ5.0SIGGRAPH 2020DIB-R3D広告

【CEDEC2020】柔軟な自動化を実現したLUMINOUS ENGINEはどのように進化したのか

2020.9.17ゲーム

【CEDEC2020】柔軟な自動化を実現したLUMINOUS ENGINEはどのように進化したのか

日本のゲーム業界関係者が集うカンファレンスCEDECの2020年大会において、9月2日、「オープンワールドを、自然に意思を持って埋める。 LUMINOUS ENGINEのプロシージャルへの取り組み」というセッションが開催されました。この記事では、「ミクロからマクロまで」「拡張、応用しやすく」「毎回同じ結果」「結果をリアルタイムに確認」という目標を掲げて改良されたLUMINOUS ENGINEの概要を、セッションの内容に即してまとめていきます。

描画の単位となるプロシージャルの作成

スクウェア・エニックスの完全子会社である株式会社Luminous Productionsが開発するゲームエンジンLUMINOUS ENGINEにおけるゲームワールドの描画は、アーティストが直接ペイントするのではなく、プロシージャルと呼ばれる描画処理の単位を作成した上で進められます。

プロシージャルは、描画のパターンや塗りむらを定めたノイズマスクと土の地面や花畑のような描画対象を定めた地形テクスチャを合成して作成されます。このプロシージャルをゲームワールドに配置してくことによって、草原や森といったゲーム環境を作成してくのです。森や草花を表現しているプロシージャルは、「プロシージャル植生」と呼ばれます。

プロシージャル植生を使って木や森を表現する時に重要となるのが、描画の密度です。現実の自然では木が密集している所が森になるように、描画の密度によって木から森の描画に移行させる必要があります。こうした描画密度を測る単位がポイントマスクです。具体的には、木の根元に一定範囲の矩形を設定して、その矩形の密集度で描画密度を測定します。木のポイントマスクが多数重なり合うような場所は、森となるのです。森においては、木の根元に落ち葉を描画したり、ブラー(ぼかし処理)を設定したりして鬱蒼とした雰囲気を作り上げます。

「たんぽぽが咲く花畑の一部に白いコスモスを置きたい」というようなプロシージャル植生の一部を変更する時に活用されるのが、下記の図のように複数のプロシージャル植生が組み合わさった「ネットワーク」です。ネットワークにふくまれたプロシージャル植生の設定を変更したり、新規のプロシージャル植生を追加したりすることによって、部分的な描画変更が容易に実行できます。

プロシージャル植生の上に岩や建造物といったアセットを配置した場合、アセットにプロシージャル植生の描画属性が継承されます。例えば、草原の上に岩を配置した場合、岩に草原のマテリアルが継承された結果、岩の上面に草が生えるというリアルな表現が可能となります。また、「岩のまわりに小石を配置」というようなアセットに特有な特別処理を付加することで、描画のリアリティがさらに増します。

以上のようなプロシージャル植生を描画の基本単位とすることによって、LUMINOUS ENGINEは少ない作業手順でリアリティのあるゲームワールドを表現することができるのです。

柔軟に調整できるレベルデザイン

前節でまとめたプロシージャル植生は、ゲームのレベルの上に配置されて初めてゲームワールドが作られます。レベルが作成されるまでには、「プロシージャル定義「レベル上にゲームオブジェクトとして配置」「パラメータ編集」「出力ファイル更新」という手順が実行されます。

レベル上にゲームオブジェクトを配置するコマンドには、地形を上げ下げしたり削ったりする「Sculpt(スクラプト)」、プロシージャル植生を塗っていく「Paint(ペイント)」、道や川といった曲線的なオブジェクトを配置する「Curve(カーブ)」の3つがあります。また、出力ファイル更新は専用サーバで定期的に実行され、複数のレベルデザイナーの作業が矛盾なく出力に反映されるようにコンフリクト回避のチェックも行われます。

レベルに配置した(プロシージャル植生の複合体である)ネットワークの一部の設定を変更するためには、Exposeパラメータを編集します。このパラメータは、レベルデザイナーがネットワークの設定の一部を直接編集できるように「外出し」されたものです。同パラメータがあることによって、ネットワークを新規作成することなく、柔軟に設定を変更できるのです。

レベルにはしばしば似たような設定のネットワークが多数配置されることがあります。このように類似したネットワーク群を効率的に編集するために導入されたのが、レイヤーデータとメタデータという概念です。レイヤーデータとは、ネットワーク群の共通点をひとつのネットワークとしてまとめたものです。メタデータとは、レイヤーデータでまとめることができなかったネットワークごとに固有な設定をExposeパラメータとして外出ししたものです。こうしたメタデータの設定変更はレイヤーデータ全体に反映されるので、効率的なレベル編集が可能となります。

以上のようなレベルデザインが可能なLUMINOUS ENGINEの利点は、プロシージャル植生の作成を担当しているグラフィックアーティストに追加の業務を依頼することなく、レベルデザイナーが単独でグラフィックを調整しながらレベルを作れるところにあると言えるでしょう。

シンプルを目指した内部処理

リアルな自然を表現できるLUMINOUS ENGINEは、ソフトウェアエンジニアリングの観点に立てば、さまざまな処理を実行するプログラムの集合体と見ることができます。同ゲームエンジンの内部処理をせんじ詰めれば、プログラムに何らかの値やオブジェクトを渡す「入力」、入力に対して何らかのプログラムを実行する「演算」、演算結果を返す「出力」、そして入力・演算・出力の間を流れる「データ」から構成されていると言えます。構成要素のうち「入力」「演算」「出力」が多様であるほど、豊かな表現が可能となります。こうしたなか、この3つの構成要素の間を流れている「データ」をシンプルにすれば、同ゲームエンジンの処理全体がシンプルになります。

LUMINOUS ENGINE内を流れるデータは、現状では「マスク」と「ポイントクラウド」の2種類のみとシンプルなものとなっています。マスクとは、何らかの座標データを処理に渡す時のデータ構造のことです。マスクは、プロシージャル植生をペイントしたり、地形をスクラプトしたりする時に使われています。ポイントクラウドは、何らかのインデックスデータ(順番が設定されたデータ群)を処理に渡す時に使われるデータ構造です。ポイントクラウドの使用例として、川を描くときに使われるカーブの編集があります。川の曲線を設定する場合、内部的にはベジェ曲線を描画しているのですが、この曲線を設定するには4つの座標のセットにして渡しているのです。

LUMINOUS ENGINE内で生じるデータ演算は、マスクとポイントクラウドの演算で表現できます。こうしたデータ演算の基本ルールは、「主となる入力データと出力データのデータの種類は一致する」というシンプルなものです。例えば、主となる入力データがマスクの場合、出力データもマスクとなります。

以上の基本ルールにもとづいて、マスク同士の演算ではマスクデータが出力され、ポイントクラウド同士の演算ではポイントクラウドデータが出力されます。そして、主たる入力データがポイントクラウド、従となる入力データがマスクの場合は、出力は主たる入力データと同じポイントクラウドとなります。例外は、主たる入力データがマスク、従となる入力データがポイントクラウドの時です。このデータ演算は禁止されています。というのも、マスクからは正確なインデックスデータを生成できないからです。

データ演算のなかには、「岩アセットを配置してから、草のプロシージャル植生を岩の上に置く」といった処理の順序が重要となるものがあります。LUMINOUS ENGINEでは、こうしたデータ演算の順序を「Phase(フェーズ)」という概念を導入して実行しています。具体的には岩アセットの配置を「Phase1」、岩アセットの上に草のプロシージャル植生を配置する処理を「Phase2」と設定したうえで、Phaseの番号順に演算を実行していくのです。

以上に解説した描画の基本単位であるプロシージャル、プロシージャルを配置するレベルデザイン、そして内部処理に共通していることは、「作業や処理をシンプルにしながらも多様な出力を得られるようにする」設計思想です。この設計思想を徹底することによって、「ミクロからマクロまで」「拡張、応用しやすく」「毎回同じ結果」「結果をリアルタイムに確認」というLUMINOUS ENGINEの当初の改良目標は達成されたと言えるでしょう。

Writer:吉本幸記

RELATED ARTICLE関連記事

【GDC 2019】ソーシャルゲームのバランス調整に遺伝的アルゴリズムを応用する

2019.4.17ゲーム

【GDC 2019】ソーシャルゲームのバランス調整に遺伝的アルゴリズムを応用する

【CEDEC2019】1キロ四方のマップを舞台に地形表現の工夫で新しいゲーム体験を作る

2019.9.26ゲーム

【CEDEC2019】1キロ四方のマップを舞台に地形表現の工夫で新しいゲーム体験...

パックマンだけではない。GANを使ったゲーム開発事例を紹介

2020.6.26ゲーム

パックマンだけではない。GANを使ったゲーム開発事例を紹介

RANKING注目の記事はこちら