エピック ゲームズ ジャパンが主催するUnreal Engine(以下、UE)の公式イベント「UNREAL FEST 2023 TOKYO」が、6月2日(金)・3日(土)の2日間にわたってベルサール秋葉原(東京・秋葉原)で開催された。
初日は開発規模や分野を問わないUnreal Showcases、2日目はUNREAL FEST初となる、インディーゲーム開発者にスポットを当てたIndie Focusという構成だった。本記事では、2日目にスペシャルトークステージ(STAGE A)で行われたセッション「「LinkRH」インディーゲーム制作・しくじり事例紹介&よきゲーム開発生活を続けるには?」の模様をレポートする。
イベント概要
UNREAL FEST 2023 TOKYO
日時:6月2日(金)~3日(土)
場所:ベルサール秋葉原
unrealengine.jp/unrealfest/2023
開発過程で経験した「しくじり」を共有し、開発を続けるためのノウハウを伝授
本講演を担当したのは、フリーランスのインディーゲームクリエイターであるSig氏(@sleepyslowsheep)。
現在まで約5年間、ゲーム『Link: The Unleashed Nexus RH』(以下、『LinkRH』)の開発中に経験した失敗談を基に、インディーゲームの開発を続けるために必要なノウハウを伝えるという内容だ。
『Link: The Unleashed Nexus RH』
『LinkRH』の開発はSig氏がひとりで行なっており、ゲストクリエイターとしてキャラクターイラスト・シロピーさん(@L_shiro_p)氏、弦楽器演奏・磯村ショウノ(@shaunoisomura)氏が参加している。
数年前に独学でUEを使い始め、気がつけばインディーゲームクリエイターになっていたというSig氏。
インディーゲーム開発のほかにも、フリーランスとしてUEを利用したVTuberのモーションキャプチャなどの活動もしており、UEにサウンド機能を拡張するミドルウェア「CRI ADX2」の使い方を解説した電子書籍『CRI ADX2でつくるUnreal Engine 4サウンドエキスパンション』(無料公開中)も執筆している。
インディー開発における最大の恐怖は、「心が折れてしまうこと」
インディーゲーム開発には、いくつもの恐怖が存在する。ゲームデザインの破綻に途中で気づいてしまったり、直せないような致命的なバグが出たり、開発チームが空中分解したりなど、怖いものを挙げるとキリがない。だが、Sig氏がもっとも恐れているのは、「心が折れてしまうこと」だという。
「インディーゲームはやめてしまったら、何も完成しないんです」(Sig氏)。
プロジェクト上の失敗やミスは、よほどのことがない限りは原因を特定でき、解決法が見つかるものだ。しかし、モチベーションの低下はもちろん、生活が破綻してしまうと、開発が止まるという最悪な結果に終わる。では、モチベーションを低下させないためにはどうすればいいのか?
Sig氏の場合、自身のモチベーションが保たれているのかどうかは、頻繁に確認するようにしているという。これをUEのBlueprint(以下、BP)に例えると、モチベーションが下がっている場合、解決策として「作業環境を見直す」または「休憩する」などの処理を実行することで、自身のモチベーションを回復させるのだ。
これは無理やり「モチベーションを上げろ」という精神論ではなく、やる気が出ないのは「脳内で起きているエラー」だと考え、除去可能なエラーとして捉えることで気持ちを楽にするという、心が折れないためのノウハウのひとつである。
それに加えて、脳の「デフォルトモードネットワーク」を利用するのもオススメしている。デフォルトモードネットワークとは、休息時やぼんやりしているときの脳の状態のことだ。人間はリラックス時や眠っている間に、脳が自動的に行なっている情報整理によって、解決法が見つかることもあるという。
「煮詰まったら、寝る」と思える心の余裕をもつことも、開発者のモチベーションを保つためには必要なことだとSig氏は語る。
毎日の行動記録を残すのも、何かと役立つというアドバイスもあった。日付ごとに何を開発したか、何を学んだかや、仕事用の連絡、休息、娯楽などの行動を、日々記録しておくのである。
開発ログを残せば「今日は頑張った」と認識でき、仕事用の連絡は仕事の履歴として活用できる。休息や娯楽の記録も、自身の生活の充実を見返せるため有効だという。
Sig氏が最後にオススメする、究極のモチベーション向上方法が「イベントへの出展」だ。
イベントは開催日が決まっているため、その日までに出展用ソフトを完成させなければならないという、甘えの効かない締め切りがある。イベントへの出展を決めては、当日の朝までつくり続けているという経験をするインディーゲーム開発者も多いという。
しかし、「そうした締め切りがあることで、通常時よりも早い進捗が得られるし、生きている実感も感じられる」とSig氏は語った。
対面イベントが復活し始めている中、UNREAL FESTのように自作のゲームを遊んでいるプレイヤーのリアクションを目の前で見られるイベントに参加することは、大きなモチベーションの向上に繋がる。
「あるイベントで、私のゲームを試遊した小学生くらいのお子さんから、『なぜこのゲームはジャイロに対応していないの?』と指摘されたことがあって、かなり衝撃を受けました。そのゲームを初めて見て遊んだ人が、先入観なしの感想をくれることは、計り知れないメリットです」(Sig氏)。
「思い描く作品に恋をしすぎる」という、あるあるしくじり
講演の後半は、実際のゲーム開発に関するしくじりの紹介となった。最初に挙げられたしくじりは、「思い描く作品に恋をしすぎる」ということ。「せっかくつくるのだから、妥協のないゲームにしよう」という想いが、規模を大きくし、要素を増やし、気がつけばゲームが完成しないという悪循環を生むことがよくある。
過去に開発した2作品は、自身が開発の初心者だったこともありボリュームを抑えて完成させたものの、今作は悪循環の発生により、開発期間が長くなる一方だという。
「理想は無限に高まる一方なので、妥協点をつくらなければ、作品は永遠に完成しない」と、Sig氏は『LinkRH』でボツにしたステージの数々をお披露目した。「イメージとちがう」、「難易度デザインが望ましくない」などの理由でボツにしたステージ数は、2桁に達するという。
ステージ内に配置したギミックやキャラクターは、採用されたステージで再利用しているものの、ボツになってしまえばステージ自体やギミックの配置作業は無駄になる。この二度手間が、開発期間をさらに延ばす原因のひとつになったとのこと。
ステージのほかにも、開発が長期化することで序盤から中盤につくったアセットが見劣りするように感じてきて、つくり直しをしたくなるのも弊害のひとつだという。
これを始めてしまうと、初期につくったものを中期につくり直し、中期につくったものを後期につくり直すというループに陥る。また、古いアセットと新しいアセットが同じ画面内に映っていると、画風などの統一感もなくなってしまうため、さらにつくり直したくなるという弊害も発生するという。
このループから脱出するカギは2つある。ひとつは、「アセットを外注してしまう」ことだ。資金的に厳しいのであれば、思い切って「開発終盤になってから、アセットを一気につくる」ことも解決策となる。
また、Sig氏はゲーム内に登場する全てのアセットを自作しようとした結果、膨大な時間をアセット制作に使うことになったことを後悔しているという。何を自作して、どこに既製のアセットを使うかの判断基準(こだわりの強さ)を決めておくと、切り分けがしやすくなると経験からアドバイスした。
例えば『LinkRH』では、地面のテクスチャはSubstance 3D Painterのサブスクで入手したマテリアルを組み合わせて使っている。空には、天候や時間の変化をつけられる有名なアセット「Ultra Dynamic Sky」を編集して使用した。ただし、作品の設定により独特な空などが必要になる場合には、自作するべきだと付け加えている。
つまり、こだわりの度合いが低い部分は既存のアセット、高い部分は自作という切り分けを行うことで、適度に自分の作業量を減らすのだ。このようなルールづくりをしておかないと、自分の作業量がなかなか減らせない。
キャラクターモデルや2Dイラスト、
事前にモックをつくり、レベルデザインすることが大事
2桁に達するステージをボツにした経験から、Sig氏はグレーボックスやモックを用いてレベルデザインをすることの大切さを説いた。
手当たり次第にステージをつくってしまうと、ステージの難易度曲線がバラバラになってしまう恐れがある。これを解決するのが、グレーボクシングやモックという工程だ。
初めからアセットをつくり込むのではなく、シンプルなキューブやメッシュなどを配置して、ステージの難易度や設計をおおまかにデザインしていくのである。Sig氏は当初「モックなんていらない」と思っていた時期もあったが、この工程があるのとないのでは、全然ちがったという。
レベルデザイン時にはモック制作の効率を上げるため、キャラクターの移動範囲を測るBP「ルーラー」を作成した。キャラクターの移動可能距離を視覚化してくれるので、足場の配置にかなり役立ったという。「レベルデザインを支援するツールは、早めにつくっておくといいです」(Sig氏)。
配置したアクタなどの展開には、BPで使用できるConstruction Scriptを用いた。例えば、地面から少し浮いている敵キャラの場合、地面との距離が近ければプレイヤーに踏まれた際に地面に埋まってしまう。
このような不具合が発生しないよう、Construction Scriptを使用して、敵キャラから下方向にレイを飛ばすことで地形を感知し、地面との距離が一定以下であれば座標を修正する、という機能を作成した。これによって敵キャラが地面に埋まるのを防ぎ、最低高度が保てるようになっている。
BPクラスはルールを設けて機能ごとにつくる
『LinkRH』のコードは全てBPで書いているという。キャラクターの挙動やステージギミック、敵キャラとその挙動まで、BPで作成している。しかしBPクラスの設計ルールにばらつきがあったため、思わぬ不具合が発生したこともあるという。
例えば、BGMのタイミングを調整するためにBPのイベントを編集しても、修正が反映されないという問題が発生したことがある。調べたところ、「BP_SoundManager」と「BP_BGMManager」という類似したBPクラスが混在していることが原因だった。これをSig氏が把握しておらず、修正に大変時間がかかってしまったという。
Sig氏が得た教訓は「似たBPを乱造しない」ことだ。同時に、「様々な機能を盛り込んだ神クラスを制作しない」ことも強調した。何でもできるクラスは便利な一方で、メンテナンスが困難になり、致命的なエラーが発生する可能性が高くなる。
BPクラスを作成する際には、各クラスの役割をしっかりと把握し、その役割の仕事だけをさせることがベターであると、Sig氏はアドバイスした。
バージョンアップで起こる不具合への対処法
UEは随時バージョンアップが行われているため、ゲーム開発時にはバージョン移行を視野に入れておく必要がある。『LinkRH』はUEバージョン4.15の時代から開発を始め、その後4.22、4.25、4.26、4.27を経て、現在の5.0.3になった。
ほとんどの場合は問題なく移行できるが、UE5.0へのバージョン移行ではエラーが発生して、途方に暮れたと話すSig氏。おそらくプラグインなどの影響で、外部ファイルの参照ができなくなったことが原因なのではないかと予想された。
このときは英語版のフォーラムを片っ端から調べたほか、Visual Studioで手動ビルドを行い、なんとかUE5に移行できたという。
心さえ折れなければ大丈夫
自身の経験から、特に開発を始めたばかりの人に多いしくじりを、包み隠さず紹介してくれたSig氏。インディーゲームを開発していれば、手探りでやらなければならないことも多いので、大なり小なりのしくじりは付きものだという。
「でも、心が折れなければ、それらのエラーは必ず修正していけます。心身を健康に保って開発してください」と、Sig氏は伝えた。
開発者が諦めてしまえば決して完成しないのが、インディーゲーム。だからこそ、開発の進捗以上に、モチベーションを維持して開発を継続することが、ゲームを完成へと導くカギとなる。
「今回の講演内容を頭の片隅において、同じようなシチュエーションに遭遇したとき、同じしくじりを未然に防いでもらえたら嬉しいです」(Sig氏)。
講演動画
講演資料
TEXT_岩井浩之/Hiroyuki Iwai
EDIT_李 承眞/Seungjin Lee(CGWORLD)、小村仁美/Hitomi Komura(CGWORLD)