Epic Games Japanが主催するUnreal Engineの公式大型勉強会「UNREAL FEST EXTREME 2021 WINTER」が、11月1日(月)6日(土)にかけて開催された。本稿では、11月1日(月)のGAME講演、Vallynneによる「少人数と低予算で賢く開発!超野心的なインディーRPGの挑戦」の模様をレポートする。
TEXT_石井勇夫 / Isao Ishii(ねぎぞうデザイン)
EDIT_小村仁美 / Hitomi Komura(CGWORLD)
『Shores Unknown』の成り立ちと制作体制
Vallynneはラドニフ 由子氏とラドニフ イリヤ氏が中心となって活動している小規模なインディーゲーム開発チームであり、独自でターンベースの戦略RPG『Shores Unknown』を開発してSteam Early Accessで現在公開中だ。この講演では彼らがUE4を学びながら小規模チームでプロトタイプを開発し、リリースするまでの道程が語られた。デベロッパー企業に所属していないが、小規模でゲームをつくることを目指している方には注目の内容と言える。
Official Shores Unknown (by Vallynne) Announcement Trailer (Steam/GoG)
登壇したラドニフ 由子氏(以下、由子氏)の本業はWebデザイナーだが、ゲーム好きが高じて『Shores Unknown』の開発に参加した。イメージビジュアルの制作とBlenderを使ったキャラクターモデリング、プランナーなどを担当している。プログラムを担当したラドニフ イリヤ氏(以下、イリヤ氏)はゲームプランナーで、2016年にロシアから来日。現在はUbisoft Osakaにテクニカルデザイナーとして勤めているが、プログラムは未経験だったという。
『Shores Unknown』の基となるプロジェクトは、2017年春にイリヤ氏が1人でホビープロジェクトとしてUE4を学びながらゲームを開発したことから始まった。はじめはマーケットプレイスからSynty StudiosのPOLYGONシリーズのようなアセットを購入してゲームをつくっていたが、その年の冬にストーリーがあればもっと面白くなると思い立ち、シナリオライターの協力を得て『Project Shore』というパブリックアルファを公開した。2018年に、この作品によりパブリッシャーと契約を結ぶことになり、全キャラクターをオリジナルデザインに変更して『Shores Unknown』が生まれた。このとき開発チームの人数は5人となっていた。
Vallynneの開発チームは全員がインディーズ(個人事業)で、4つのタイムゾーンにまたがった多国籍、多文化が特徴だ。レベルデザイン、キャラクターデザイン、ストーリー、音楽、ゲームデザイン/スクリプティングを担当する5名がコアメンバーで、その時々により他のフリーランスが参加している。少人数であることはコミュニケーションがとりやすく、タイムゾーンが分かれていることで生産性も上がるという。メンバーの募集は、知り合いの伝手や、RedditやTwitterといったSNSが使われた。ドキュメントの管理にはGoogleドキュメント、タスク管理はAsana、チャット・通話にはTelegramとDiscordを使用している。インディーズなので、できるだけ無料ツールが選ばれている。
▲チーム構成は少人数かつグローバル。あまりチャットなどのリアルタイムの会話はないという
少人数でゲームを制作するための徹底した効率化
開発はBlueprintとC++が使用された。UEを学び始めた当初はBlueprintのみを使用していたため、最終的に90%はBlueprintで実装されている。途中でC++を導入したが、こちらはParent classesやData Structureなどのゲームのコアに関わる部分に使用されている。C++がBlueprintより優れている点は配列のコントロールの容易さであり、ストラクチャでのデータ検索などが格段に速いという。
少人数で制作するにあたって、限られたリソースで効率していくことが求められる。例えばBlenderを使ったキャラクター制作では、上半身、下半身、頭、ひげ、髪などのモデルを用意して組み合わせてユニークなキャラクターを作成。使い回し用モデルの数を増やすことで、個性的なNPCの量産が可能となった。
その際、BlenderのAuto-Rig ProとVoxel Heat Diffuse Skinningの2つの有償アドオンは効率が良く、モデリングの作業量が大幅に減ったという。
UE内でパーツを組み合わせてキャラクターを生成するBlueprintのツールを用意し、1クリックでパーツをランダムに組み合わせて新しいキャラクターを生み出すことができる。作成後の編集も可能で、このツールにより700ものユニークなキャラクターが作られた。
▲効率化のためのキャラクタージェネレータ。パーツを組み合わせてキャラクターを生成する
しかしNintendo Switchへの移植を試みたときに、キャラクターの多さがネックとなり、Out of memoryでクラッシュが頻発するようになった。これはロードする際に全キャラクターのデータをメモリにロードしていることが原因だったため、ハード参照からソフト参照に変更したところ、メモリの使用を500MBから7MBまで減少できたとのこと。
プログラムの知識があまりなくても制作可能なツールの実装
『Shores Unknown』はターンベースゲームであり、キャラクターを直接コントロールはせずに、入力したコマンドに従って自動的に行動していく。戦闘はキャラクターの次の行動を決める「命令フェーズ」と素早さの高い順に命令を実行する「行動フェーズ」に2段階で進行する。命令フェーズではキャラクターのアビリティとターゲットのみを選択し、戦闘は探索と同じマップで展開。バトル中の行動はキャラクターのステータスによって決定され、攻撃の命中はアビリティBlueprintで計算して、その結果によってターゲットにアニメーションをさせている。
戦闘のアビリティには特別なアニメーションと効果があり、ステータスを付与するアビリティもある。アビリティの制作は、Blueprintの知識がないデザイナーでも作業を可能にするためUE標準のGameplay Ability Systemを使わずに自作システムを採用。C++のAbilityを操作してBlueprintでつくられたParentAbilityを通して全てのアビリティをBlueprintで実装する。
▲アビリティはBlueprintの知識がない人でも作りやすいシステム
ダイアログはゲームの世界の命運を大きく左右する大きな要素だ。ダイアログのシステムにはプラグインを使用する予定だったが、UE4とExcelのワークフローがネックとなり、システムを自作することになった。これにより、UEを使わずにテキストが書け、ゲームとロジックとアニメーションを簡易につなぎ、ダイアログの中でプレイヤーに選択権を与えるノンリニアなストーリーを作ることを目標と設定。
ダイアログの構造はBlueprintで制作されたDialogue ManagerのアクタとDialogue Structを用意。Dialogue StructをベースにDataTableを作成し、ダイアログを保存している。Dialogue Managerのアクタは常にレベルに存在して、ダイアログの流れとイベントを制御している。
▲ダイアログも扱いやすい構造にしている
全てのカットシーンはSequencer Animationで実現されており、ダイアログからでもレベルスクリプトからでも再生が可能。マップに配置されているキャラをそのまま使用できる。これらのアニメーションはマーケットプレイスで購入したものやプロシージャルで作ったもの、外注で制作されたものなどだ。
ゲーム内には複数のメインクエストとサイドクエストが存在するが、進行状況やプレイヤーの選択によってステートは常に変わっていく。このステートはグローバルであるため、別のレベルに移動してもセーブをする必要があり、ロジックフラグという変数にしてPersistentであるGame Instanceに入れて実装している。これにより、レベルデザイナーがBlueprintを使ってゲームイベントを手軽に実装できるようになっている。
▲ロジックフラグの実装でデザイナーが直接イベントを実装可能
データ以外のレベルデザインでも効率化を徹底
本作はオープンワールドではないため複数のレベルに分かれており、1つの屋外ロケーションは最大で40,000×40,000ユニット。様々なロケーションがあるのが、本作の特徴でもある。
▲個性豊かなロケーション
同じレベルにジオメトリ、トリガー、キャラクターを入れると最適化も編集も大変になるため、複数のサブレベルをつくり、アクタを整理するレベルストリーミングを採り入れた。このおかげで共通のサブレベルを使い回しながらバリエーションが作れるようになり、レベルの数を無理に増やす必要がなくなったという。
また、プレイヤーステートのロジックフラグで自動的にサブレベルをストリーミングするシステムをつくりデータドリブン化したため、レベルスクリプトをいちいち書かなくてもよくなった。
▲レベルストリーミングによりデータを扱いやすくすることとバリエーションを増やすことを両立した
UE4のランドスケープは本作のローポリ風のスタイルに合わないため、使用を見送られた。その代わりBlenderでローポリのベースとなる地面を作りUE4にインポートして、その上に建物などのモジュラータイプのアセットを置き、最後にFoliageツールで樹木や草、小石のような小さいモデルを配置して手動で調整した。その際にLODを設定すること、Culling Volumeで小さいメッシュを距離により非表示にすること、小さいオブジェクトにはCull Distanceを設定すること、平らで広いレベルには視野を遮るために大きなオブジェクトを置くことなどに注意したという。
また、Merge Actorツールで複数のメッシュを結合してドローコールの数を減らし、CPUへの負荷を減らしている。しかし、道路のような大きなモデルやモジュラータイプのメッシュをマージするとカリングが効かなくなったり、使用メモリが増えたりしてマージ前の方が軽いことがあるので注意とのことだ。
▲メッシュのマージなど、様々な工夫がされている
今後さらに発展する『Shores Unknown』の展望
今後は、開発を進め2022年春のフルリリースを目指している。その際にはUE4.25から4.27へのアップグレードや、3章と4章の追加、ローカライズ、Nintendo Switchでのリリースも予定。さらに将来的にはUE5での開発も考えているとのことだ。
イリヤ氏はUEのどのような点に惹かれて開発に選んだかという質問に、「プログラマーじゃないけれど、Blueprintを使えばどんな機能やシステムでも実装できた。そのおかげで『Shores Unknown』は存在しています」と、UEはプログラマーではない人でも個人レベルでのゲーム開発を可能にしてくれるツールということを答えてくれた。さらに成功の秘訣を聞くと、「努力と運と、いいチームに恵まれたこと」と締めくくってくれた。
ゲーム好きが高じて、たった1人でプログラムの経験もない中にスタートしたゲームづくりが、段々とチームを集めてローンチしていく過程には、多くのゲーム開発者の胸が熱くなるのではないだろうか。『Shores Unknown』の今後に期待だ。
少人数と低予算で賢く開発!超野心的なインディーRPGの挑戦 | UNREAL FEST EXTREME 2021 WINTER