UE5&Blender初挑戦から“わずか1か月”で最優秀賞!第22回UE5ぷちコン受賞作『ワンオペ遊園地』開発陣が駆け抜けた制作スケジュール

2024.12.25
注目記事インタビューゲームの舞台裏アンリアルエンジン
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

2024年7月19日(金)から9月8日(日)にわたって開催された、アンリアルエンジンの学習を目的としたゲーム制作コンテスト「第22回UE5ぷちコン」。今回は「遊園地」をテーマに373作品の応募がありました。

本記事では、最優秀賞を受賞した『ワンオペ遊園地』の制作チーム「ポッピノン」の菱田さん/岸さんに、企画から実装に至るまでの工夫やこだわりについて伺いました。

TEXT / 浜井 智史
INTERVIEW&EDIT / 神山 大輝
PHOTO&EDIT / 神谷 優斗

目次

ポッピノン 菱田さん

アプリケーションプログラマーとしてコンシューマーゲームの開発に携わっている。「第22回UE5ぷちコン」では「ポッピノン」として岸さんと2人で参加し、応募作『ワンオペ遊園地』が最優秀賞を受賞。

『ワンオペ遊園地』では企画・プログラミングを担当する。

ポッピノン 岸さん

美術系大学を卒業後、現在はVFXアーティストとして菱田さんと同じゲーム会社で働いている。菱田さんから「第22回UE5ぷちコン」に誘われ、ゲーム制作に初挑戦。応募作『ワンオペ遊園地』が最優秀賞を受賞。

『ワンオペ遊園地』ではアートワーク全般を担当する。

2人チームで最優秀賞!ぷちコン参加のきっかけ

――まずは自己紹介として、ご経歴や『ワンオペ遊園地』でご担当された箇所を教えてください。

菱田:ポッピノンの菱田です。『ワンオペ遊園地』ではプログラミングを担当したほか、企画立案やディレクター的な動きもしていました。

本業はゲーム会社のアプリケーションプログラマーで、コンシューマーゲーム開発に携わっています。個人制作としては、学生時代にUnityでパズルゲームを1本と、就職の際にC++の勉強として縦スクロールシューティングを作った経験があります。

岸:ポッピノンの岸です。菱田と同じゲーム会社でVFXアーティストとして働いており、2人とも今年で6年目となります。『ワンオペ遊園地』ではアートワーク全般を担当しました。大学は美術系で、映像関係のコースを専攻していましたが、個人ゲーム制作は今回が初めてです。

左から、ポッピノンの岸さん、菱田さん

――お2人は本業でもアンリアルエンジン(以下、UE)を使われているのでしょうか?

菱田:プロジェクトの手伝いで3か月ほど使ったり、以前アンリアルクエスト(※)に参加したことがあったりと、ひとまず操作はできる状況でしたが、実質初めてのような気持ちでした。今回はちょうど大きな休みが取れたため、UEの勉強もかねてぷちコンに挑戦しました。
※ エピック ゲームズ ジャパンが主催し、ヒストリアが運営するユーザー参加型イベント。課題を通して、アンリアルエンジンを使ったゲーム開発を学ぶことができる

私はほとんどUE未経験で、しいて言えば学生時代に3ds Maxで作ったモデルをUEで出力したことがある程度です。今回はUE5のNiagaraでエフェクトを作る勉強がしたいと思って参加しました。また、インゲームで使われる全ての3Dモデルの自作にも挑戦しました。

ワンオペでフル回転!テーマ「遊園地」をまっすぐ体現した経営シミュレーション

「第22回UE5ぷちコン」キービジュアル

――ここからは最優秀賞作品『ワンオペ遊園地』についてお伺いします。まずは、簡単にゲームの紹介をお願いします。

菱田:その名の通り、プレイヤーがワンオペで遊園地を運営するゲームです。制限時間内になるべく多くのお客さんをアトラクションに乗せて「いいね」をもらい、ハイスコアを目指します。

「第22回UE5ぷちコン」に提出した『ワンオペ遊園地』の紹介動画

ステージ終了後、獲得した「いいね」の数に従い最終評価が与えられます。最低クリア条件を満たせば次ステージに進出できる仕様ですが、最高評価を得る難易度は高く設定しています。

獲得した「いいね」の数に応じて、虹色の「いいね」が0~3個与えられる。最低でも1個獲得すればステージクリア

「いいね」をもらえるタイミングは、アトラクション搭乗時/終了時の2回。時間内にちゃんと案内できればおのずと「いいね」が溜まっていく仕様ですが、お客さんを待たせすぎると途中で帰られてしまいます。

また、アトラクションは電力が切れると一斉に停止してしまうので、合間を見て発電機で充電が必要です。これらのタスクをいかに効率よく捌けるかが高得点につながります。

――企画はお2人で一緒に立ち上げたのでしょうか?

菱田:もともとは僕1人で応募するつもりでしたが、途中で岸に企画原案を伝えたとき「せっかくだから一緒にやろうか」となりました。

岸:私が企画を聞いた頃には、既にゲームの大枠は完成していましたね。「ワンオペ遊園地ってどう?」と聞かれたとき、めちゃくちゃいいじゃんと思いました。ゲーム性が伝わりやすいワードで、とても気に入りました。

――今回のぷちコンのテーマは、従来のように広い意味合いで取れる言葉ではなく、「遊園地」というダイレクトな一般名詞でした。これを受けてどのように企画をイメージしましたか?

菱田:当初はシューティングゲームや写真を撮るゲームなど全く異なる方向も模索していましたが、最終的にはシンプルにそのまま遊園地を使う企画に落ち着きました。

――そこから遊園地全体を使った経営ゲームの路線に進んだんですね。

菱田:岸が『Overcooked』などの経営シミュレーションゲームが好きなので、その印象も頭にあったのかもしれません。

2人で企画を相談する中で「より大きなゲームにしたい」と構想が膨らんでいきました。ゲームを朝パート/夜パートに分割して、日中に稼いだ資金で夜中に遊園地を増設し、来場者数を増やしていくという、今より大規模なゲームを考えていました。

岸:夢は大きく持ったほうがいいということで、いろいろと発想を広げてみました。ただ、時間的にも全てを盛り込むのは厳しいため、最低限面白さに必要なものだけに要素を絞った結果、今のゲームデザインになりました。

菱田:効率よくお客さんを捌き、たくさん楽しませて「いいね」をもらう。「忙しさと効率」という部分が最後に残りましたね。

アトラクションが終了すると、お客さんから「いいね」がもらえる。時間内により多くの「いいね」を獲得するのが本作の目的

UE初挑戦がスタートライン。ラーニング&開発を同時に進めた1か月

――限られたリソースの中で実現可能な面白さの核を突き詰めたということですね。開発はどのくらいの期間で行いましたか?

菱田:7月末から1週間で企画を考え、8月初頭に岸が合流し、そこから約1か月間ぶっ通しで制作していました。また、開発初期は企画を詰めるのと同時にUE5の勉強も行っていました。

岸:私は当初コンテンツブラウザの場所もわからない状態から勉強を始めて、UE5の操作に慣れるまで、少なくとも1週間ほどかかった記憶があります。

――ラーニングはどのように進めていったのでしょうか?

岸:公式チュートリアルや有志の方が書いた記事などを参考に勉強しました。

同時に、3Dモデルを自作するためにBlenderも勉強しました。エフェクト用のメッシュをHoudiniで作ったことはあるのですが、Blenderは初めて使ったので、テクスチャやUV展開などの知識もなく苦戦しました。

UE5については、マテリアルを作る方法やインポート周りの操作手順などを勉強する必要がありました。法線がひっくり返ってモデルの見た目がぐちゃぐちゃになったときは、原因を探るのが大変でしたね。

――岸さんはアートワーク全般をご担当されたとのことですが、Blenderのほかにはどのようなツールを使いましたか?

岸:UIのテクスチャなど2D素材全般では使い慣れているCLIP STUDIO PAINTを、それ以外だとAdobe After Effectsも使用しています。

――菱田さんはプログラミングや企画などでどのようなツールを活用しましたか?

菱田:企画では、口頭で話し合った内容をDiscord上にメモする程度で、特にツールなどは使っていません。

開発では、C++のコーディングにVisual Studioを使っています。本作では、読みやすさの観点から極力C++で実装を行い、ブループリントは簡単な動作の実装などに使う方針をとりました。そのほか、バージョン管理ではTortoiseSVNを使いました。

乗り物のバリエーション、お客さんの出現頻度。多彩な遊びを盛り込む緻密な設計

――企画をゲームに落とし込むにあたり、基盤のシステムはどこから作り始めましたか?

菱田:まずはキャラクターの動きやインタラクトのシステムを作りました。その後はアトラクションの仕組みのベースを作り、岸のモデルが完成したら都度対応させるといった流れです。

――アトラクションはどのような基準で選定したのでしょうか?

菱田:「遊園地にありそうかどうか」と「バリエーションに幅を持たせられるかどうか」を基準に選びました。搭乗人数や所要時間などを加味して、なるべく異なるタイプのアトラクションが揃うよう意識しています。

ジェットコースターは一度にたくさんの「いいね」がもらえるが、それに伴い消費電力も大きく設定されている

コーヒーカップ。搭乗人数・消費電力に従った「いいね」獲得効率などは標準的なパラメーターに設定し、ほかのアトラクションの基準としている

観覧車。電力効率が良く、起動したまま継続的にお客さんを乗せられる使いやすさがある反面、回転率や「いいね」獲得数は控えめ

岸:アトラクションの配置は、菱田が設定した条件をもとに私がおおよその位置を決めました。まずラフを描いた後、レベル上に各アトラクションを仮置きし、相談しながら位置を決めていきました。

園内のレイアウトのラフイラスト

――具体的にはどのような条件が設けられたのでしょうか?

菱田:モデリングの工数が高いジェットコースターと水流アトラクションは、園内の端に配置して、画面に映る乗り場の付近のみを作成しました。乗り場だけでも乗り物の種類が伝わるため、画面外のコースを作成する必要がなく、工数を削減できていました。

ジェットコースターや水流アトラクションのコースはプレイ中に見える部分だけ作成した

菱田:また、発電機はどのアトラクションからも均等な距離にするため、必ずステージ中央に配置したいとお願いしました。

岸:ただ、発電機の滑車が目立つ位置に置かれていると、浮いて見える懸念もありました。花壇や噴水でカモフラージュできないかと頭を悩ませた結果、最終的には滑車を可愛い小屋で覆い隠すようにして、中央への配置と違和感のない見た目を両立させました。

ステージ中央の小屋(画像左)にある滑車を回し、アトラクションに電力を供給する。小屋に入ると屋根が透けて、中の滑車が見えるようになる(画像右)

――お客さんの待ち時間や搭乗人数などもレベルデザインと密接に関係する要素だと思いますが、どのように調整を施しましたか?

菱田:一巡あたりの「いいね」数や電力あたりの「いいね」数などをExcelで計算して、アトラクションごとに異なる特徴を持つように調整しました。

搭乗人数や稼働時間、消費電力などを考慮し、一巡あたりに獲得できる「いいね」の最大値を算出した

また、お客さんの出現数や頻度などをカーブデータで制作し、クリアするために複数のアトラクションを行き来する必要性が生まれるようコントロールしています。

お客さんの数などを制御するカーブデータ

菱田:構想段階では、その日の天候や客層に対応したカーブデータを作り、「今日はお子さん連れが多いから水流アトラクションが人気」のように変化を付ける案もありましたが、工数などの兼ね合いから、ステージごと・アトラクションごとに固有のデータを1つずつ作成しました。

岸:お客さんの性格も、モデルの色によって「赤は怒りっぽい」「青はかなり待ってくれる」とバリエーションを持たせようと考えていました。また、迷子の子どもを助けるといった要素の追加も構想にありました。

お客さんのモデルがカラフルに色分けされているのは、性格を割り当てる案の名残

――難易度調整においてはテストプレイも重要ですが、開発期間が短いと優先度が下げられがちだと思います。本作ではお2人自らテストプレイをされたのでしょうか?

菱田:ぷちコン応募用ROMの制作中は、僕が調整したものを岸にテストしてもらう流れが基本でした。その後は、「UNREAL FEST 2024 TOKYO」で本作を展示するにあたって、Steam Deckに入れたROMを家族や会社の人に遊んでもらいました。

岸:坂道のコリジョンに引っかかって登れない箇所や詰まりやすいポイントを発見でき、いただいたフィードバックがとても参考になりました。難易度に関しては、私の母や5歳の姪も問題なくクリアできたので、良いバランスにはできていたのだと安心しました。

菱田:ステージをクリアしなければ次に進めない仕様なので、最低基準は緩めに設定しました。その代わり、最高ランクに到達する難易度は相当ハードにしてあります。

関連記事
「UNREAL FEST 2024 TOKYO」最速フォトレポート。約2,000人のUE5ユーザーが集ったリアル会場の雰囲気を写真でお届け
2024.11.02

マテリアルインスタンスでビジュアルに統一感が生まれ、工数も削減

――続いてはアートコンセプトについてお聞かせください。本作は3Dモデルなどのビジュアルに統一感があり、非常に作り込まれた印象を受けました。

岸:「遊園地」というテーマに合った、皆が楽しめる鮮やかなビジュアルを目指しました。シンプルなモデルで可愛らしい見た目を作ることを意識して、『Overcooked』や『ヒューマン フォール フラット』、『Untitled Goose Game 〜いたずらガチョウがやって来た!〜』などのアートスタイルを参考にしています。

全体的な見た目のバランスを整えるため、開発冒頭では木のモデルを作成し、これをビジュアルの指針として他のモデルを作っていきました。

ルック検討は木のモデル制作からスタート。アートスタイルの方向性が見えたら、これに馴染む雰囲気のプロップを量産していく

岸:床以外のすべてのマテリアルは、1種類のマスターマテリアルをマテリアルインスタンス化して作成しています。これにより、見た目に統一感が生まれ、工数削減にもつながりました。また、岩やコンクリートのような質感を表現するため、マスターマテリアルにはQuixel Megascansでお借りしたノーマルマップを適用しています。

テクスチャを貼っていないデフォルトの3Dモデル(画像左)と、テクスチャを貼り付けた状態(画像右)

岸:床には、マスターマテリアルにダイヤ柄のテクスチャを加えたマテリアルを使っています。

使いたい色味を全てマテリアルインスタンス化し、その中からパレットのように色を割り当てることで、色の種類を抑えて統一感が出るようにした

――水流アトラクションでは、水面の動きがシミュレーションされていますね。

岸:こちらも私が制作しています。1カ所だけなら負荷にも余裕があるだろうということで、「Niagara Fluids」で流体シミュレーションを使っています。

水流アトラクションで使われている流体シミュレーション。アトラクションの動きに応じて水面が波立つ

岸:少しでもNiagaraの勉強がしたかったので、積極的にエフェクトを使うよう心がけました。

水面のほかに、一部のアトラクションがスタートする際の紙吹雪が舞う演出や、リザルト画面のお風呂に入っているシーンの湯気もNiagaraで作成しています。リザルト画面のお風呂は、ゲームを昼パート/夜パートに分ける構想をしていた頃の名残で、1日の区切りを付けたかったので挿入しました。

コーヒーカップの起動時に紙吹雪が舞い上がるシーン

C++とブループリントを使い分けた実装過程と最適化

――続いて実装面の話に移ります。C++とブループリントの使い分け方について教えてください。

菱田:基本的にはC++で実装を行っていますが、クリックイベントなどUI周りの処理とステージの遷移などはブループリントも併用しています。

メニュー画面のブループリント。UIの処理はウィジェットブループリントで実装している

菱田:また、3Dモデルのアウトライン表示切り替えやアトラクションの挙動、サウンドやNiagaraの呼び出しにもブループリントを使用しています。アトラクションの挙動にブループリントを採用した理由は、Delayなどの非同期処理が使いやすかったためです。

また、インタラクトの機能は、C++で宣言したインターフェースをブループリント側で継承し、実際の挙動はブループリントで定義しています。

C++で宣言したインタラクト機能のインターフェース。ブループリントクラスで継承できるようにしている

インタラクトのインターフェースを継承し、発電機の処理を組んだブループリント

――お客さんやアトラクションの動きはどのように作りましたか?

菱田:お客さんなど人のアニメーションは岸に作ってもらい、アトラクションの動きは僕が実装しています。例えば、ジェットコースターはスプラインで動かしており、コーヒーカップはカップ本体とカップの土台を別々に回転させ、2軸の回転にしています。

うさぎ型の乗り物が飛び跳ねる「ジャンピングアトラクション」では、サインカーブを使用して、うさぎとそれを支える棒を連動させています。

ウサギのジャンピングアトラクション

――C++でコードを書く際、コンパイル後に再度起動する手間がかかる印象ですが、何か効率化のために行ったことはありますか?

菱田:エディタを起動したままC++コードの更新を反映できる、ホットリロード機能を使っています。

――ほかにも実装面で工夫した点があれば教えてください。

菱田:起動中の観覧車と水流アトラクションは、乗り物が乗り場に着いている時にのみお客さんを乗せられます。乗り場に搭乗できる乗り物があるかどうかは、コリジョンを使って判定しています。

乗り場に隣接した黄色い辺の直方体が搭乗可否判定用のコリジョン。インタラクト時にコリジョンに触れている乗り物があれば、お客さんを乗せられる

――この規模のゲームを約1か月で、ラーニングしながら開発するのは苦労も多かったと思います。

菱田:最適化の作業は特に大変でしたね。最適化前は、Steam Deckではとても遊べる状態ではありませんでした。最適化ではアンチエイリアス処理の変更がとても効果的でした。また、Lumenを切ったり、Naniteの設定を見直したりしました。

岸:モデルの軽量化も行いました。例えば、園の外周に配置する柵の紐は、縄のねじれを表現するためにポリゴン数がかさんでいました。また、ヤシの木には意図せず不要なメッシュを入れてしまい、気づけば20,000ポリゴンまで膨れ上がっていたこともありました。

――最適化のほかに苦労点などはありましたか?

岸:左下に配置した電力ゲージが時間経過で減っていくことに気づかない人が多く、UIを通してプレイヤーに情報を伝えることの難しさを実感しました。

待ち時間をカウントするタイマーの表示方法や、電力が切れたときに画面全体が赤くなる警告演出などは、遊んでいく中で「ここは見せ方を改善しよう」と気づき、都度修正を加えていきました。

それぞれのお客さんの待ち時間を示す円状のタイマーは、早く並んでいるお客さんのものから順に並べられる。時間切れになったタイマーは消失して、順番が繰り越される

左下の電力ゲージが尽きると全アトラクションが停止し、画面の外枠が赤く染まる警告演出が発生する

――企画段階で広げたという「夢」のアイデアについて、今後の展望などがあればお聞かせください。

菱田:本作では実装していない、2人で膨らませたアイデアはたくさんあります。本作とは完全に別物の大規模な作品になるとは思いますが、いつか全てを実現したゲームを完成させてみたいですね。

岸:インディーゲームが好きなので、Steamなどで1本リリースできたら嬉しいです。本作の「夢」の部分には、私がやりたい理想の経営シミュレーションゲームの要素が詰め込まれているので、作品にできたらいいなと思っています。

――これからのご活躍も楽しみにしています。本日はありがとうございました。

使用ツール一覧

カテゴリ 使用ツール
ゲームエンジン Unreal Engine 5.4
開発環境 Visual Studio
バージョン管理 TortoiseSVN
モデリング Blender
2D素材 CLIP STUDIO PAINT
映像編集(応募用動画) Adobe After Effects
浜井 智史

ゲームメーカーズで編集や諸業務に携わっています。『星のカービィ』シリーズと『ポケモン不思議のダンジョン』シリーズが好きです。

関連記事

2024年アドベントカレンダーから、ゲームメーカーズ編集部が注目した14記事を一挙紹介!
2024.12.26
Motion Matchingなどが学べる公式サンプルプロジェクトがUE5.5に対応。300以上のアニメーションが追加され、モバイル・オンラインマルチプレイにも対応
2024.12.23
Unreal Engine学習者向け映像作品コンテスト「UE5ぷちコン 映像編6th」エントリー開始。テーマは「光」
2024.12.20
UE5.5の「プロシージャル コンテンツ生成フレームワーク」について学べる公式サンプルプロジェクト『Cassini Sample』、Fabで無料公開
2024.12.16
Unreal Engine 5.5.1がリリース。コンソールでLumenを可視化した際にクラッシュする不具合や、Motion Matchingに関する不具合などが修正
2024.12.11
UE5.5の実験的機能「Editor Performance Tool」について、Epic Gamesが紹介。エディタの処理落ちやPCスペックの不足を検出・通知してくれるパフォーマンス計測ツール
2024.12.10

注目記事ランキング

2024.12.23 - 2024.12.30
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

ビヘイビアツリー(Behavior Tree)
ビヘイビアツリー AIの思考、行動をツリー状の構造図で定義したもの。およびそのシステム。挙動の優先順位や条件を定義していくことにより、複雑なAI挙動をシンプルに実現できる。
VIEW MORE

Xで最新情報をチェック!