この記事はUnreal Engine (UE) Advent Calendar 2023 の12月10日の記事になります
〇この記事について
UEFNで2作品を公開して躓いた点や得られた知見を書いていきます。
製作から公開までをなぞりつつ、特に印象に残った点を書いておきます。
まず、公開した作品は下記の二つになります。
・第1作
名称:-村- VILLAGE
島コード: 6252-4792-9731
URL:https://www.fortnite.com/@yamashin0429/6252-4792-9731
・第2作
名称:村 -忘れ去られたあの日々を- VILLAGE Ⅱ
島コード: 0632-0993-6405
URL:https://www.fortnite.com/@yamashin0429/0632-0993-6405
どちらも企画から公開までで1.5カ月、企画職兼プログラマー兼レベルデザイナー1名、3Dモデラー1名の計2名で制作しました。
島づくりを開始する
UEFNではワールドのことを島と呼ぶので、それを作る人は島クリエイターと呼ばれる。
島クリエイターになるには、島クリエイタープログラムに登録を行う必要があります。
https://create.fortnite.com/island-creator/overview?lang=ja
ただ登録にはアカウントを作るだけではなく、下記要件を満たす必要があります、
クリエイターのEpicアカウントは作成から30日以上が経過し、過去30日のうち7日以上は、フォートナイト クリエイティブ、Unreal Editor for Fortnite(UEFN)、およびUnreal Engineでの島の作成にあてた日を含んでいること。
または
過去90日のうちにフォートナイトのゲーム内製品に対して75ドル(米ドル価格に基づく)以上を消費・引き換えていること。
僕はFortniteに課金をした翌日にはクリエイターに登録できるようになりました。
あとは所定の情報を入力していくだけですが、特に感動したのは税務関連の手続きをあちらでやってもらえるという点です。
海外のゲームプラットフォームでリリースする際に、アメリカと日本で二重に税金を取られないように手続きをしますが、あまりに申請が面倒でゲームを作るよりハードルが高いとも言われています。
それをオンラインで情報を入力するとPDFで書類が送られてきて、これで良ければ提出しておきますと言われ、問題なければそのまま承認されます。
試してはいないですが、ここで作った書類を他のプラットフォームでも使えたら、それだけでも登録する価値がありそうな気がします。
プロジェクトを作成する
まずはEpicGameStoreのアプリからUEFNをダウンロードします。
UEのダウンロード場所とは違うので注意、Fortniteとかがあるゲームストアからのダウンロードになります。
僕はここで迷いました。
ダウンロードしたらあとはUEと同じようなプロジェクト作成画面が出てくるので、新規に作成します。
テンプレも豊富にあるため一通り見ておくと参考になります。
ただ、チームで作成をしている場合は、それを選択する欄があるため注意です。
間違って個人の方に作るとチーム内で共有などが出来なくなります。
プロジェクト作ってしまえば、UEでコンテンツを作ったことがある人には見慣れた風景が広がっているはず。
ただし、だいぶ機能は削られているため、案外ないものが多いです。
細かい機能だけ削られていることも多いので、あの機能はあるから大丈夫とか思うと痛い目を見る事も...
また独自の機能もいくつかありますが、特によく利用するのはSync機能かなと思います。
右下にある項目で、Gitのようにバージョン管理ができるシステムが標準搭載されています。
ただし、これも簡易的に使えるのは良いのですが、複雑なコマンドなどが使えるわけではないので、Gitに慣れていると不便を感じることはあるかもしれません。
チーム内でちゃんと規則を定めておかないとえらいことになるのはあるあるなので、各々勝手に使わないように...
あと、プロジェクトを作る際に起きた事故は命名規則の問題がありました。
フォルダ名が日本語だったり、先頭が大文字だったりすると別の場所でエラーを吐くことがあります。
下記のUEの命名規則に沿って名づけるのが安心なので、製作する前に目を通しておきましょう。
・アセットの命名規則に関する推奨事項
https://docs.unrealengine.com/4.27/ja/ProductionPipelines/AssetNaming/
・コーディング規約
https://docs.unrealengine.com/4.27/ja/ProductionPipelines/DevelopmentSetup/CodingStandard/
ゲームの作り方
UEFNでは仕掛けと呼ばれるギミックを接続してゲームを作っていきます。
UEのブループリントよりもさらにゲーム的に、簡単にしたものといった感じのシステムです。
仕掛けを単体を配置するだけでもゲームとしては成り立ちますが、スコアだったり、タイマーなどを起動するなどは他の仕掛けと接続することで遠隔で操作ができます。
ボタンのギミックを押したらタイマーが進み、トラッカーでミッションを進行させ、プレイヤーに強化を付与するなど、1個のアクションから複数の結果を生み出すこともできます。
ただし、一括で見るような仕組みはあるのですが、見づらい事もあるため、複雑な仕掛けを多く配置するとスパゲッティな状態になりがちです。
コピー機能などを使うと更にカオスな状態になるため、特に取り扱いは注意です。
事前にちゃんとした仕様書を作成しておくとスムーズに実装は出来るかと思います。
また、エディタ上だけでなく、Fortniteのゲーム内から編集する機能もあります。
個人的には仕掛けのパラメータ設定をするのはFortniteのゲーム内で、オブジェクトの配置やUEの機能(マテリアルやWidget)を使う場合はエディタで実装しています。
両方使えるのでいい感じに使い分けられるといいなと思いつつ、最適解は分からないなぁという気はしています。
Verseについて
個人的には、現状のVerseはまだ未成熟であり、下手なプログラマーが手を出すとやけどする可能性があると考えています。僕はしました…
プログラミングとしての基本的な機能(ifとか関数変数とか)はあるものの、ゲームを作るために必要な機能が少ないと感じています。
UnityやUEでは当たり前にできる事が出来ないので、それにより全体の企画や仕様を変更する必要すら出てきます。
Verseを利用して複雑なゲームを作るのはかなり難易度が高い印象があります。
キーボードの入力を取る関数がないというのを聞けば、いかに機能が限られているかが理解いただけると思います...。
僕が引っかかったのは、汎用的な敵AIを作るのが今に仕組みだと非常に難しく、プレイヤーを検知して追ってくるまでは実装できますが、Rayを飛ばす仕組みが無いので、プレイヤーが壁に隠れたら追ってこないようにするといった処理が難しいです。また、コリジョンとの衝突判定なども標準ではないので、壁を突き抜けないように移動することも正攻法では難しくなっていたりします。そのほかも、カスタムのメッシュを入れた際に、表示非表示をするだけでも一ひねりする必要があるため、UnityやUEなら一瞬で出来るのに...と思いながら実装する日々が続きます。
ちなみに細かい個々の機能などはスニペット リポジトリでコードが共有されているため、参考にしつつ開発することはできます。
https://dev.epicgames.com/community/fortnite/snippets
そういった課題などを英語資料を見ながら自分で解決して行ける人でなければ、そもそもVerseを使わずに、UEFNにある仕掛けを組み合わせてゲームを作る方が良いと思っています。
既存の仕掛けでも幅広い機能はあるため、企画次第では面白いゲームは作れると考えています。
ちなみに私の作った島は、一作目はVerseを使っておらず、二作目は鍵(形代)を表示するときのみVerseのコードを使っています。それ以外のギミックはすべて既存の仕掛けをベースに作成しています。
公開するときの注意など
島を公開する際には、ゲームが遊べるだけではなく、メモリ使用率が既定の範囲に収まっている必要があります。
メモリ使用率は自動的に計算してくれる仕組みがあるため、それを利用すればすぐに出てきます。
ただ、これは流石バトロワゲームのプラットフォームだけあって、容量にはかなり余裕があります。
僕が作った島は1作目は30%程度、2作目は50%程度のメモリ使用率になっていました。
木や草、ライトなどをそれなりに多めに配置しておりますが、それでも余裕があるほどです。
ただし、メモリ使用率と共に気にしなければいけないのは、プラットフォーム毎の設定になります。
メモリ使用率は問題なくとも、Nintendo Switchで動かした際にフレームレートが落ちるなどの現象がありました。
また、PCやPS5では使用できるが、Nintendo Switchでは使用できない機能などもあります。
特にグラフィック周りの設定に多く、PostprocessingはSwitchでは反映されません。
Lumenや反射の設定もSwitchでは自動的に無効化されます。
島の設定にある霧の設定も無効になるため、Switchで動かして見たら全く見た目が違うという現象が起きます。
SNSなどでハイクオリティなUEFNコンテンツをよく見かけますが、Switchやスマホで動かしたらどうなるのかは気になっています...
そしてそういう島に限って公開されていなかったり...
とはいえマルチプラットフォーム対応は悪い事だけでは無く、UnityやUEで対応する事を経験していれば、圧倒的に楽です。
グラフィックの無効化も、裏を返せば自動的に設定を最適化してくれるという事なので、いちいちビルドする度に設定を変えるなどをする必要もないです。
各プラットフォーム毎にビルドデータを分けるとかもできないので、そういうことも考えて作らないといけないという事はありますが...
後は公開する際に、年齢制限についての質問に回答してIARCのレーティング評価を受けなくてはいけなくなりました。そもそもFortnite自体が15才以上を対象(日本だとCERO C)にしているため、それを超えるような表現がある作品は公開が出来ません。これはゲームの企画段階から考えておかないと、せっかく作ったのに公開できないというのが発生するので特に注意です。また、内容だけでなく、ロゴなども審査の対象になります。
ただ、この手の年齢制限に関しては、ゲーム作ったことのある人であれば回避なりをする方法は分かるかと思います。直接的な表現を避けて、レーティングを上げないといった手法は探せば出てくるはず...(銃で撃つではなく水鉄砲にする、人間ではなくマネキンをバラバラにして暴力表現を見せる、赤ちゃんは出せないのでぬいぐるみで代用、などなど...)。このあたりは既存のゲームをレーティング見ながらプレイすると中々面白いことをやっていたりします。
ここまで設定と審査を終えてしまえばあとは公開に設定するだけ。
ただし、時期によっては審査にやたらと時間がかかる模様。2作品目はちょうど年齢制限のアプデが入ったタイミングで審査に登録したが、結果が来るのに最大で14時間かかりました。ちなみに1作品目は大体30分くらいでした。
収益について
多分気になる方は多いと思いますが、正直な話、UEFNだけで生活していくのはかなり厳しいと思います。
2作品合計でプレイヤー数は10万人を超えていますが収益の率を見る限り、本業で生計を立てるなら毎月100万ユーザーくらい来ないと、持続的な開発は厳しいのではと考えています。
収益もそうですが、後述する通り破壊的なアプデがあり得る環境なので、片手間で勉強がてらやるくらいがちょうどいいかなと思います。親がUEFNで食っていくから会社辞めると言い出したら全力で止めましょう。
ちなみに収益は月末締めで翌月に集計、その次の月に入金されます。例えば11月18日に島を公開したら、11月中の収益が12月に計算されて1月頭に入金されてくる感じです。すぐには収益入ってこないのと、金額が分かるのも入金の数日前とかになるため、それなりに時間がかかります。気長に待ちましょう。
ちなみに収益はドルで計算されるので、日本円にするとかなり有利です。
支払い時に日本円に変換してもらえるので、ドル口座などは不要です。
どんなゲーム作るといいか
結論から言うと、現状のUEFNで稼ぐならば、ルールが簡単で、何度も遊んでもらえる、プレイ時間が長いゲームを作る必要があります。UEFNの収益は「プレイヤー数、定着率、プレイ時間」に加えて「個々のプレイヤーがクリエイターの島に参加する前後のタイミングで、フォートナイトのゲーム内通貨であるV-Bucksを消費した量」で決まるため、当たり前ですがそれらの数字を稼ぐようなコンテンツを作る必要があります。
V-Bucksの項目は10月に追加されましたが、海外フォーラムでも非常に荒れていた内容でした。
https://forums.unrealengine.com/t/engagement-payout-formula-update/1336743
ただ、そもそもUEFNには課金に誘導するような仕組みはなく、ゲームにも実装できないため、あまり気にする必要はないと考えています。
それよりも標準的な指標になる「プレイヤー数、定着率、プレイ時間」を意識する方が良いです。
それを達成するためにどうするか?というのは世界中のUEFNクリエイターが悩んでいる内容なので、そこが腕の見せ所になりますね...。
少なくともすでに公開されていて、リアルタイムユーザー数が数千人いるようなコンテンツは参考になるためプレイした方が良いです。
また、2作品出した際の特徴として、公開してから数日はユーザーがいても、その後はユーザー数が100分の1になるみたいな形になっておりました。
新作コンテンツはランキングに上がると注目されますが、アクティブなプレイヤー数がいなくなると一気に注目度が下がります。
そのため、プレイヤー数を稼ぐとなった場合は、常にアクティブなプレイヤーを確保する必要があり、それが一番難しい点になります。
「ルールよくわからんからログアウト、を避ける」「クリアしたけどもう一度遊びたい」「クリアまで時間がかかるけど苦ではない」を達成できるゲームが最適解ですが、それが簡単に考えられるなら苦労はしない...
あと、UEFNはマルチプレイの実装が非常に簡単にできるため、友達などとわいわい出来るゲームは必須要件になってくるとは思っています。
これからのUEFNについて
今後の追加機能についてはロードマップが公開されており、今までもそれに沿って昨日は追加されています。
https://trello.com/b/nnpaY0cM/fortnite-creator-roadmap
直近の大きなアップデートはカスタムNPCとVerseの改善、UIや画面に表示するHUDの機能追加という感じかと思ってます。
実は現状だと、UEFNの標準で搭載されている敵や味方のAIの見た目を、自分で作った3Dモデルに置き換えるといった機能が無く、自分で実装したとしても動きがちゃんとしないことが多いため、それが解決するような機能が入ってくるとゲームの幅が広がる気がしています。
UIも選択ができるボタンはVerseからでないと実装ができないなど、かゆいところに手が届かないことも多いので、アプデ内容には期待をしています。
というのも含めて、UEFNは非常にアップデートが早いため、リリースを意識的に追わないとすぐに置いて行かれてしまいます...
おおよそ月に2回ほどの頻度で新機能が追加されたり内部的なアップデートが入っていくため、ゲームを作ってる途中で仕様変更が入り調整が必要になるなどは普通に発生します。
すでにある仕掛けなどの仕様変更はいきなり発生するため、まだそういった破壊的な変更はありそうな雰囲気はあります。
おわりに
あまりエンジニア的な内容ではなかったですが、これからUEFNで島を作る人の参考になればと考えています。
あとVerseの項目で書いた汎用AIやカスタムメッシュについても、それをすでに実装しているゲームは存在するため、不可能ではないはずです。どうやっているのか知りたいところです。
前述しましたが昨日の更新も早いため、ここで書いたことも来月には解決されてるなんてこともありそうな勢いです。
そのためこの記事の内容も妄信せず、調べて実践してみることをお勧めします。
苦労話などは多めでしたが、将来性とUEの勉強も兼ねて僕はこれからも作品は作っていきたいと思っています。
周りの人が仕事を辞めてUEFNで食っていこうと言い始めたらこの記事を見せてあげてください。