2024年2月16日(金)から4月7日(日)にわたって開催された、アンリアルエンジンの学習を目的としたゲーム制作コンテスト『第21回UE5ぷちコン』。今回は「おす」をテーマに134作品の応募がありました。
本記事では、最優秀賞を受賞した『ヘコむス』の制作者であるmeraoさんに、企画から実装に至るまでの工夫やこだわりについて伺いました。
2024年2月16日(金)から4月7日(日)にわたって開催された、アンリアルエンジンの学習を目的としたゲーム制作コンテスト『第21回UE5ぷちコン』。今回は「おす」をテーマに134作品の応募がありました。
本記事では、最優秀賞を受賞した『ヘコむス』の制作者であるmeraoさんに、企画から実装に至るまでの工夫やこだわりについて伺いました。
TEXT / 浜井 智史
INTERVIEW&EDIT / 酒井 理恵
PHOTO / 神山 大輝
――まずは自己紹介として、今までのご経歴をお願いします。
meraoと申します。元々は歯科技工士で、現在は医療系の貿易会社でマーケティング関連の仕事をしています。業務ではMicrosoft OfficeとAdobe Creative Cloudを使うくらいで、IT的な要素はほぼありませんでした。
アンリアルエンジン(以降、UEと表記)に触り始めたのは第11回UE4ぷちコン開催中の頃です。初めてぷちコンに参加した第12回の「れい」以来、ずっと参加しています。「自分もいつかぷちコンに入賞して、UNREAL FESTで作品を展示してもらう」というのを目標にしてきましたが、まさか自分が最優秀賞を頂けるとは思っていませんでした。
YouTube動画『第21回UE5ぷちコン応募作品「ヘコむス」』。この作品でmeraoさんは最優秀賞を受賞した
――昔からゲームやCGの制作をされていたのですか?
クリエイティブなことでいえば、 個人的にCG制作を嗜んでいて、『月刊アスキー』や『MAC POWER』の特集の巻頭イラストを副業で制作した経験があります。でも、ゲーム制作は「すごく高度なもの」というイメージがあり、50歳を過ぎるまでやったことがありませんでした。
ある日、Adobeが提供するMixamoというサービスを使って、アップロードした自作のブタのCGキャラクターが生き生きとアニメーションするのを見て感動しました。「もっと自由に歩かせたい!」「コントローラーで動かしたい!」という思いは、どうやらゲームエンジンを使えば実現できそうだとわかり、UE4をインストールしてみました。ダウンロードしたその日にキャラクターを歩かせられたのが衝撃で、アンリアルエンジンについて調べてみたところ、ちょうど第11回UE4ぷちコンが開催中であることを知りました。
応募作品を見て、こんなゲームが短期間で作れるなんてすごいな、自分も出してみたいなと思ったのが、ゲームの制作を始めたきっかけです。
――ここからは最優秀賞作品『ヘコむス』についてお伺いします。まずは、簡単にゲームの紹介をお願いします。
弾力のある床を押してボールを転がし、ゴールへ導くゲームです。左クリックで「弱押し」、左のダブルクリックで反応の速い「強押し」になります。右クリックし続けるとパワーが溜まり、手を離すと溜めたパワーでボールをジャンプさせることができます。
――床を押すことでボールを移動させるアイデアはどのように着想を得たのでしょうか?
40年くらい前、中3か高1の頃に思いついたアイデアが基になっています。
画面の中にキーボードがあり、 その上にボールが乗っている構図です。画面内のキーボードは、現実世界の本物のキーボードとリンクしていて、キーを押すと画面内の対応するキーも沈みます。指を横に滑らせると、それに従ってボールが転がるというギミックでした。
当時はまだマウスやタッチスクリーンがポピュラーではなく、「画期的だ!」と興奮したものです。しかし、その頃はプログラミング言語はBASICが少し使えたくらいだったので、物理演算を使ったインタラクティブなゲームの作り方がわかりませんでした。
しかし、今回のぷちコンのテーマ「おす」を見て40年の歳月を経て、そのアイデアが蘇り「もしかして今なら作れるのでは?」と思い至りました。
――では、開発当初から現在のゲーム性はできあがっていた、ということでしょうか。
実を言うと、開発当初の『ヘコむス』は完成版と全くゲーム性が異なります。プロトタイプでは、フィールドに配置された複数のボールを操ってステージを進む想定のゲームでした。ボールに火・水・風といった属性を付与して、くっつけたり離したり、フィールドの一部分を壊したりして進むんです。ところが、全然面白くなりませんでした。
途中からボールを主人公にして、カメラで1個のボールを追いかけ、ゴールまで導くシステムに切り替えることで、一気にゲームらしさが増し、面白さが生まれました。
――大胆な修正ですね。制作にはどれくらいかかったのですか?
2月末から作成を始めて、ちょうど1か月くらいかかりました。土日は家でずっと作業をして、平日も長い通勤時間を使って、電車の隅っこで作業を進めていました。
以前のぷちコン応募作ではアセットなども自作していましたが、時間が足りず完成度が中途半端になった上に、体に悪影響が出ることもありました。もう体に負担をかけられない年齢になってきているので、昨年末の映像編からは、ゲームシステムのコアな部分に集中して開発するようにしています。
前回の応募作は最初に作った動画時間が長く、応募動画の上限である5分に仕上げるために8倍速にした箇所もありました。これでは開発が長引き、動画も分かりにくくなるので、今回は各ステージを1分以内でクリアできるボリュームにして5ステージ作成しました。これならトータル5分に収まるので、録画した動画をそのまま応募できます。
ステージ1が終われば全体の20%が完成、3ステージできれば60%達成と、一目で進捗がわかるので、進行管理も簡単にできました。
――制作に使用したツールや、その使用法などを教えてください。
使用ツールはUE5.3、Blender4.0、Substance Painter、Photoshop、Illustratorです。
キャラクターの色や絵柄付けにはSubstance Painterを使用しています。また、光の加減はほとんどマテリアルのエミッシブでコントロールしていて、この設定もSubstance Painterで行いました。
Photoshopは背景のオブジェクトを塗るのに使いました。ライトは増やしすぎると重くなってfpsが下がってしまうので、背景のライトを全て外し、テクスチャに直接陰影を塗り足しました。
――背景全体を赤く塗ったのはなぜでしょうか?
恐ろしい場所から抜け出すというシチュエーションをイメージしました。背景が赤黒く、不穏でグロテスクなのに対して、安全な足場やゴールは青く光らせています。危険と安全の対比を演出し、逃げ出したい、脱出したいという雰囲気を出せる色合いにしました。
――使用したアセットについても教えてください。
アセットはスターターコンテンツのテクスチャを使用したくらいですね。掌に目がついてる「手の番人」は、他の方が作ったものを参考にしながら自作したものです。BGMや効果音はお借りしていますが、それ以外の外部のアセットは、プログラミング的なものも含めて使っていません。
――ステージ中には「手の番人」の他にもさまざまな進行を妨害するギミックが登場しますが、それらの導入経緯について教えてください。
実は「へこませる」という操作は、妨害ギミックを作る上では悩みの種でした。例えば、最初はブロックの上でサークル状に回る棒を設置していたのですが、床をへこませるとボールが棒の下をくぐり抜けてしまい、ギミックの意味を成さなくなってしまいました。他にも、プレイヤーにボールを発射して攻撃する仕掛けも考えましたが、しゃがめば全てかわせてしまいます。
そのため、直接ブロックごと押しつぶして壊す手の番人や、床をへこませてもボールの進行を阻害できる電撃の仕掛けを配置したり、フィールドに障害物を落下させたりしました。これなら地面がへこむ高さは関係なしにボールの進路を妨害できます。
頭上から落下する障害物。足場を崩して進路を妨げる
――床をへこませる動作はどのように実装しているのでしょうか?
ブロックを押し下げるギミックは、サークルの大きさに合わせて設定した球状のコリジョンにブロックが触れた際に、一つ一つ指示を出しています。サークルの中心に位置するブロックには最大深度100パーセントまで沈むよう命令します。命令を受けたブロックは自律的に沈み、指定された深度に達した後は徐々に浮き上がります。これにより、床の弾力を再現しています。深度は同心円状に減衰させ、サークル外周では深さ0パーセントにすることで、窪みを形成しています。
サークルからの通信はTick毎に再送信されるため、サークル内のブロックは常に目標深度が上書きされている状態となり、弾力のある床を押し続けているような挙動を生み出します。
Tickを多用していて処理が非常に重くなったため、動作中ではないブロックのTickを停止させることにしました。停止してるブロックを他と区別したくて、そのマーキングのためにブロックを光らせてみると、動いてる部分だけ光るビジュアルがかっこよかったので、そのまま実装しました。
床の上面はエミッシブを光らせず、側面に隙間が空いた時だけ光が漏れ出るようにしています。この発光表現はLumenで処理しています。
――ブロックの崩落や燃焼はどのような実装になっているのでしょうか?
一度にごそっと落ちてしまうとビジュアル的に美しくないので、ゲームに差し支えない程度でランダムに落ちるように設定しています。
崩落もへこみも、サークルがブロックに1個ずつ命令して、コンマ数秒くらいの差でランダムに崩れ落ちます。ランダム性がないと、 綺麗に同心円上に、わざとらしく燃焼してしまうからです。ただ、ランダムにしすぎると足場が早々に燃えてしまい、ゲーム性を壊しかねないので、真ん中に近い場所には燃えづらいブロックを配置しています。
ランダムに焼け落ちるブロック。中心には難燃性の高いブロックを配置
――シングルクリック、ダブルクリック、右クリックを押し続けるという3種の操作は、開発を始めた段階で動作の内容まで決めていたのでしょうか?
ダブルクリックは、最初はジャンプのコマンドにするつもりでした。クリック速度で飛距離、マウスを左右に移動した距離でジャンプの軌道が変わるようにして、何回もプレイすることで「コツ」を習得できるようにしたかったんです。
個人的な考えですが、良いゲームとは、プレイを重ねるうちに良い成長曲線で「コツ」を習得できるものだと思います。簡単すぎるゲームはただの作業でしかないですし、 逆に難易度が高すぎると遊ぶのが苦痛になってしまいます。小さなステップを積み重ね、楽しみながら徐々にスキルも向上する。そんなゲームが理想です。
ただ『ヘコむス』の場合は、このジャンプコマンドを実装をすると物理演算が暴走してしまい、当たり所が「良い」とボールが無限の彼方に飛んでいってしまうことがありました。そのため、プロジェクタイルでボールを飛ばす形式に変更しました。
せっかく作った機能なので、少しだけ元の仕様も残しています。ダブルクリックで僅かにジャンプするのはその名残です。今後は障害物を避けるためなどに、この機能を生かしたいと思っています。
――現在のボールがジャンプする仕組みはどのように実装しているのでしょうか?
ボールがブロックに触れているときの僅かな角度の差で、ボールの飛ぶ方向がぶれるのはプレイヤーにとって好ましくありません。そこで、ジャンプの瞬間にボールをDestroyさせて、床から少し浮いた位置に新しいボールをスポーンさせています。こうすることで、角度のぶれがジャンプの軌道に影響することを避けています。
でも、ジャンプが簡単になってコツを習得する要素が減ってしまったため、ボールが完全に沈むまでは弾道予測線が出ないようにしました。この仕様は、昔プレイしていたエレメカ(※)のバスケットボールゲームをイメージしています。これは、窪みにボールがはまったタイミングでボタンを押すと、窪み中央の押し出し棒が作動し、ボールがバスケットに向かって飛んでいくというものです。
※ エレクトロニクスとメカトロニクスを掛け合わせた造語で、もぐら叩きゲームのような機械的な仕掛けのあるアーケードゲームを指す
ボールが完全に沈んでから初めて弾道予測線が出現する
床がへこむまでのドキドキ感を味わってほしいです。手の番人が襲ってくるまでにへこませたいけど、ちゃんと限界までへこませないと飛ばない。そのせめぎ合いが生まれるようにしました。
――ボールが床を転がるスピードや静止するタイミングなどにも工夫が表れているように思います。どのような調整が施されているのでしょうか?
床が平面だと、へこませても思うように転がらないんですよね。逆に転がりやすく物理挙動を調整すると、ボールがブロックの真上に来ない限り静止が効かず、滑って落下してしまいます。
この解決策として、床のコリジョンを丸くしました。球状のコリジョンが一面に並ぶことで、隙間にボールがちょうど収まって静止しやすくなります。逆に、斜面では転がりやすくなり、コントロールが容易になりました。
元々、現実世界の物理挙動で動くゲームに慣れ親しんでいたこともあり、プログラムの知識がなくてもこうした物理が関連することなら想像がつきやすかったです。この解決策も比較的すぐに思いつきました。
――ゲームの操作性を調整することで、プレイヤーが楽しく没頭できる仕掛けが成り立っているのですね。
カメラの視点移動もそうした工夫の一つかもしれません。当初は、ボールが進むベクトルに合わせてカメラが移動する設定でしたが、ボールの進む方向と進行方向は必ずしも一致するとは限らないんですよね。自分の意図しない方向にボールが進んでいるときは「そっちに行くな!」とイライラしてしまいます。
そこで、ボールを起点としてサークルの中心軸にベクトルを引き、カメラの水平回転軸がRinterpで徐々に同期する仕組みに変更しました。これなら、サークルがボールより向こうにあれば前に進み、手前にあれば戻る、といった感じで視点が動きます。こうすることで、カメラがボールを動かしたい方向に自動追尾するようになり、プレイヤーは床のへこまし作業に集中できます。
――meraoさんのゲームは非常にプレイヤーのことが考えられているなと感じました。常にプレイヤーの視点を持つために、普段どのようなことを心掛けていますか?
制作中に心に留めているのは、昨年の「ゲームメーカーズスクランブル」(2023年)で拝聴した、Design Lab 濱村さんの「すぐに役立つ!ゲームデザイン」の講演です。プレイヤーの「介入前」「介入中」「介入後」この3つに分解して、どこに問題点が潜んでいるかを常に意識するという内容です。
拝聴当時に感銘を受けて以来、ゲームを作る際に何かしっくりこないなと感じたときは、その講演内容に立ち返っています。「この場面ではジャンプが必要であると分からないのが良くない」「この場面は押してすぐにへこまないほうがいい」のように、常に3つのフェーズを念頭に置いて制作するようにしています。
それと、自分が実はゲームがあまり得意ではないので、ぷちコン応募後のブラッシュアップ版のテストプレイには第18回UE5ぷちコンで「Acrobat AG」というゲームで受賞されたユーリエンさんという方に協力していただきました。
YouTube動画『第18回UE5ぷちコン応募作品「Acrobat AG」』ユーリエンさん
自分では見つけられないようなバグ報告もたくさん上げていただき、大変ありがたかったです。
例えば、ジャンプの仕組みは最初、ブロックがへこむ深さしかチェックしていなかったんです。だからボールが道から落ちたときも、規定の高さまで落ちると床がへこんだと認識して、その瞬間に飛べてしまうんですよ。これをうまく使えば、空中でぴょんぴょん2段ジャンプのように跳ねてクリアできます。
やっぱりゲームが上手い人ってこういう裏技を見つけるのも上手いんだなと感じました。
――ユーリエンさんは、ぷちコンを通じて知り合った方なのですね。meraoさんのお話を聞いていると、人と人のつながりによって生まれる力を感じます。
ぷちコン入賞経験もあるTARKさんや、ぽちおさんもぷちコンを通じて知り合った方です。ぽちおさんはぷちコンのオンライン打ち上げ「ぷちアゲ」をDiscordで主催されていて、「ぷちアゲ」参加者さんと交流させていただき「ゲームメーカーズ スクランブル2024」でもリアルにお会いすることができました。
TARKさん主催のオンラインもくもく会では、過去のぷちコンで制作したゲームをもくもく会の方に遊んで頂いて盛り上がって頂けました。やっぱり反応をもらうのもすごく楽しいなと感じました。
「ふりーむ」や「itch」でゲームを公開した時は、「ふりーむ」からダウンロードしてくれた方に生まれて初めて実況動画を投稿していただけました。とても嬉しかったので、今回も実況していただけたらいいなと思っています。そのためにもう少しブラッシュアップをしたいですね。
人の力は大きなものですが、今回はChatGPTの力も感じました。
――ChatGPTはどのような箇所で活用しているのですか?
開発中「ここは以前と勝手が全然違うな」「どうしてもわからないな」という時に、ブループリントのスクリーンショットを撮って、ChatGPTにアドバイスを貰っていました。
特にベクトルの計算などでAIは強力です。プロンプトに「真正面を向くほど正規化して0になり、真後ろを向くと1になる。前方30度ぐらいの間隔は全部0にしたい。こんな計算はどうすればいい?」と入力すると、やり方を教えてくれました。
自分はあまりプログラムに詳しくないので、一度つまずくと2、3日作業が進まなくなることもあるのですが、ChatGPTを使うことでそういったつまずきもなくなりました。
また、結局採用はしなかったのですが、ボールをへこませるときのブロックの制御はC++の関数ライブラリをChatGPTに作ってもらいました。作りたい関数ライブラリのブループリントを作って、その画像をChatGPTに読み込ませることで、そのまま使用できるコードを書いてもらえます。
ChatGPTに画像を読み込ませ、ブループリントの組み方を出力する流れ
――AIを開発に取り入れようとしている方は多いですが、成功した例として聞くのは初めてかもしれません。
――『ヘコむす』はブラッシュアップを検討中とのことですが、どのような改善案を考えていますか?
たくさんの方に手に取ってもらえるよう、まずはキャッチーにしたいですね。前回のぷちコン応募作で実況をしていただけたのがとても嬉しかったので、さらに多くの方にダウンロードしてもらえるようにしたいです。
また、ギミックを拡張したいと思っています。構想段階では、動く床に電撃装置や手の番人を乗せる組み合わせなども考えていました。他にも、ジャンプと手の番人の合わせ技も、今回はジャンプ先の対岸で手の番人が待ち構えているくらいしか実現できなかったので、仕掛けのバリエーションを増やしたいですね。
――今後作りたい作品や、次の目標などがあれば教えてください。
ぷちコンで最優秀賞をいただくことや、自分の作品を展示してもらうことが長年の夢だったのですが、まさか本当に自分が頂けるとは思っておらず、その後のことはあまり考えていませんでした。次はどうするか、のんびり考え中です。
今後の展望といえば、以前からUEFNに興味がありました。一回Physicsが搭載されたと知って喜んでいたのですが、すぐに下げられてしまい、がっくりした記憶があります。でも、Physicsのボールだけは確か既にあるんですよね。ということはもしかして『ヘコむス』ってUEFNに移植できるのでは?と構想を練っています。
UEFNはアンリアルエンジンとかなり仕様が異なり、勉強も難しかったのですが、最近はいろんな資料が充実してきましたね。ゲームメーカーズからも記事が出ていますし、学習環境が良くなってきているので、またUEFNの勉強も再開したいです。
――これからのご活躍も楽しみにしています。本日はありがとうございました。
※記事中に登場したもののみ掲載しています
ゲームメーカーズで編集や諸業務に携わっています。『星のカービィ』シリーズと『ポケモン不思議のダンジョン』シリーズが好きです。
西川善司が語る“ゲームの仕組み”の記事をまとめました。
Blenderを初めて使う人に向けたチュートリアル記事。モデル制作からUE5へのインポートまで幅広く解説。
アークライトの野澤 邦仁(のざわ くにひと)氏が、ボードゲームの企画から制作・出展方法まで解説。
ゲーム制作の定番ツールやイベント情報をまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームメーカーズ スクランブル2024で行われた講演のアーカイブ動画・スライドをまとめました。
CEDEC2023で行われた講演レポートをまとめました。
東京ゲームショウ2023で展示された作品のプレイレポートやインタビューをまとめました。
UNREAL FEST 2023で行われた講演レポートをまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームメーカーズ スクランブルで行われた講演のアーカイブ動画・スライドをまとめました。
UNREAL FEST 2022で行われた講演レポートやインタビューをまとめました。
CEDEC2022で行われた講演レポートをまとめました。