プロジェクトの始まり
みなさん、初めまして、 Brandon Swan です。私はジョージアのサバンナにある Savannah College of Art and Design で Battery Jam のプロジェクト リードとして 20 週間に渡って開発に携わりました。チーム構成は、主要メンバーが 4 名、アニメーターとサウンド エフェクトと音楽の担当がオーディオ チームという形で外部から加わりました。現在 11 名です。すでに一緒に仕事をした経験のある主要メンバーの 4 人は、この仲間とまた楽しくゲームを作りたいという思いから、それぞれがクラスのスケジュールを調整し、チームが実現しました。因みに、以前制作したボードゲームは、今年後半にはキックスターターにあがる予定です。
さらに、私達が心がけたこと、それは、クラスが始まる前に他の選択肢について話す時間を設けて、チームとして貫くゲームのスタイルとスコープを明確にしました。それが Battery Jam を成功に導いたのだと思います。それでは、デザインの決定方法とエンジンの作業について少しお話ししましょう。E3 2015 College Game Competition と Autodest CG Student での受賞までの 2 週間は、実にやりきった感のある充実した時間でした。今後の皆さんの活動の参考にして頂けるように、できる限りの情報を分かりやすくしてお伝えしたいと思います。
アート
ビジュアル言語について
周りの学生達が作るゲームを見ていると、芸術的なアイデアとしては素晴らしいのにどうも魅力に欠けている、という作品が多いことに気づきました。そこで私達は、ゲームに個性を持たせることを自分達のこだわりの 1 つに決めて専念しました。チームの大半がアーティストだと、メカニクスがうまくいかなくても、カーブ アピールだけは正しくすることができるのです!私はゲームのコンセプト アーティストでもあったのですが、私が推し進めたロボットと第 3 ウェーブ スカの組み合わせにうまく落ち着くことができました。それでは、アートの方向性について少しお話ししましょう。
キャラクターの誕生秘話
キャラクターの創出は難しいながらも楽しみがありますが、プロジェクトの制約を受けて定義されます。プロジェクトの開始時、チームにはアニメータが 1 名いたので、彼女にリグ構築を任せることにしました。ゲームに登場させるキャラクターは 4 つにしたかったので、美しさを追及する方法と合わせて、リグ構築とアニメーションをシンプルにする方法を考えなければなりませんでした。
ロボットに決めるのに時間はかかりませんでした。スキニングやオーガニックモデルについても心配しなくて済むからです。シンプルな親子づけとボールジョイントが最も早い最善策だと思いました。また、ロボットなら同じリグを共有しやすいですし、キャラクターのコンポーネントを入れ替えればキャラクターのデザインをスケジュール内に簡単に変更できると思いました。
以上を踏まえていたので、あまり追われることもなくキャラクターのデザイン作業ができました。リグの制限に加えて、トップダウン視点のゲームにしたいと考えていました。キャラクターは、少なくとも私が作成したキャラクターに限っては、特に頭の形と色で定義するのが一番良い方法でした。選択した ska テーマでメッシュしようとしながら、何か良い形や形式のひらめきを求めて Wipeout レース シリーズを見ていました。ご覧頂くとわかりますが、コミカルな体型に様々な道具をつけて、不格好でありながらも滑らかでスポーティになるように心掛けました。最初のシーケンスとタイトル スクリーンでは、キャラクターがポーズを取って、音楽に合わせて踊り始めますが、そのような時にそれぞれの個性が一気に現れます。
アニメーション作業は、何ともいえぬジレンマを感じることになりました。キャラクターを作成する時、私は 2D シルエット ダイナミクス以外は考えていませんでした。前腕とすねに角度を付けて、ダイナミックな姿勢にすることが重要でした。Everett がイラスト通りにキャラクターを初めてモデル化し、それは期待通りの素晴らしい出来でした。ただし、アニメーションを開始すると、ジョイントが曲がったままだとポーズと動きがとてもぎくしゃくしてしまうことが分かりました。例えば、前腕が極度に曲がっているので、パンチのようなジャブや押し出す動きをすると、とても面白く見えます。一方で、アッパーカットのような一振りする動作や、胸の前で腕を動かす場合は、曲がったジョイントが動作の軌跡のカーブと同じなので、動きが滑らかになるポーズもあります。カーブを使ってポーズを一層ダイナミックにした例を簡単にご紹介します。
曲がっていなければ、これらのポーズは、今のように自由に動くことはなかったでしょう。失敗から生まれたにも関わらず、私達には都合よく動く形状となってくれました。
キャラクターの Rocket を横から見てみましょう。胸と前腕の曲がりが実際よりもかなり急であることが分かると思います。これは基本的に T-pose として使用しました。キャラクターに一般的な形状と体型を決めたら、立っているポーズを使ってそれらを作成しただけで、特別な理由はありません。フォトショップで再度腕を描いたり回転させる代わりに、ポーズとしてモデル化すればボール ジョイントは全く問題にならないと分かったので、スケジュールよりも早く取り組むことができました。
デザイン
みなさん、初めまして。Battery Jam チームのお茶目なデザイナー Abraham Plato です。Batty Jam のデザイン選択の裏に隠されたモチベーションと、それがどのように進化したかをご説明しましょう。
戦闘
Battery Jam の制作前の初期段階、大声でのやり合いも収まり、意見がまとまり始めた頃、ボンバーマンのゲームプレイ、特にマルチプレイヤーが持ち上がりました。世に出回っている競争力のあるマルチプレイヤー ゲームとは異なり、私達はゲームに直接攻撃はあまり考えませんでした。そうではなくて、爆弾を戦略的に配置するのです。特に敵の移動に影響するような場所を基本的に狙って、うまく爆弾を置いて、敵を罠にはめて消去していくのです。このような戦闘スタイルが、とてもユニークで面白いと思ったのです。むしろ敵に直接攻撃を仕掛けるのではなく、プレイヤーがお互いの動きに混乱して、敵を絶対絶命の罠であるレーザーや溶岩に陥れるようなシステムにしたかったのです。
そのようなデザイン目標をゲームのコミカルな見かけと合わせて、FAN、MAGNET、BOXING GLOVE、ソニックのスピンダッシュとは法的に異なる移動などのプレイヤーのパワーアップを作成しました。これらのパワーアップは、それぞれの楽しさや便利さが引き出されるまでに、当初からデザインの問題が発生していました。それは、ほぼ全部が同じ初期の問題でした。
最初のイタレーションで、これらのパワーアップのほとんどを配置オブジェクトと考えていました。プレイヤーがステージ上にパワーアップを設定して、パワーアップがそのまま作用する、というものです。そこで、プレイヤーが空中に飛び出て、地面にオブジェクトを投げてひっくりかえった方が面白いですし、ゲームに躍動感が出るのではないかと思いました。ただ、アイデア自体は素晴らしかったのですが、パワーアップのほとんどのメッシュが失敗しました。他のプレイヤーに向けられるはずが、ユーザーの足元へ落とされてしまいました。もう 1 つの課題は、プレイヤーは「デプロイ」されたアニメーションにまるまる 2 秒間ロックされたままになるということです。ゲームで 2 秒間というのは紛れもないライフタイムです。
最初の問題は、ほぼすべてのパワーアップに対して、デプロイ アニメーションを拒否して、それらをユーザーの位置に配置する発射物にすることで解決しました。次に、プレイヤーが空中にいる時間をほんの一瞬に短縮しました。これにより、罠を設定して走り続けるプレイヤーの動きがかなり滑らかなりました。私達が許す前にプレイヤーの方がだいぶ速く考えて移動してしまうことは、Battery Jam の初期段階全般におけるポイントでした。4 分の 1 秒よりも長くなる場合はとても重要な何か、とても重要に感じる何かにしておかないと、プレイヤーは退屈する、または動かなくなってしまったと感じるでしょう。
必要は発明の母なり
プレイヤーがある瞬間に必要とするものをすべて成形できるグリッド ベースの戦場を作成しようと冠気ていました。防御のために壁を建て、敵を陥れるために溝を掘ったり、自分を消去しようとするプレイヤーとの間にバリアを建てたりします。このデザインの課題は、プレイヤーはフィールドの残りから素早く自分を切り離して、アクションから離れることです。プレイヤーに信頼性のある方法で戦闘に戻ってもらいたいので、他のプレイヤーのパワーアップのような一貫性がなかったりランダムな能力が必要でした。そこで、プレイヤーに能力を作成しました。これらはプレイヤーがクールダウン中にアクセスする一貫した能力で、最終的には 2 つにしました。
1 つ目は「Slam」で、ゲームの最初のイタレーションのうちの 1 つで実装されたプレイヤーの能力でした。プレイヤーは、地面を叩くと、上がったり下がったりしている隣接タイルを中央に戻します。これにより、フィールドのステートに関係なく、プレイヤーは歩行可能なテレインをすぐに作成することができます。レベル処理が必要ない場合、また別の面白さとして、最初はサイズを 2 倍、次は 3 倍にして、攻撃がしやすいようにするノックバック エフェクトを追加することも可能です。クールダウン タイマーも 15 秒から、10 秒、最後は 6 秒に下がります。プレイヤーは攻撃しか使えないという当初の不安は解消しましたが、その代わり、能力を再利用するために永遠に待っている不満をプレイヤーが絶えず文句を言うようになりました。
プレイヤーの 2 つ目の能力は、運よくアクシデントから生まれました。前述したように、プレイヤーのパワーアップのいくつかは、面白さ、便利さ、ユニークさを感じるまでイタレーションを何回か行いました。GOO MOTOR ほど多くの変更を行ったパワーアップは他にありません。GOO は、空中で奪われ、地面で飛び散り、爆発した場所にいる人に粘着する大きなボールです。ただし最初は、立っていて移動の遅いプレイヤーにデプロイ アニメーションで配置されました。これは通常ユーザーを単に傷つけるだけなのでほとんど使い物になりませんし、半分の速度で移動するのはイライラするので、立ち往生した場合でもあまり楽しさを感じません。
ユーザーが立っている場所で GOO を PPO して、捕まらないようにヒラリと飛び跳ねるダッシュ コンポーネントを追加するというのは本当に斬新なアイデアだと思いました。STICK に変わった瞬間、パワーアップを一層便利に感じさせます。問題は、実際は DASH と STICK という 2 つのパワーアップを 1 つにして作成したことです。プレイヤーは別々に使うことが楽しかったのに、一緒になったら全く意味がなくなってしまいました。お手上げ状態の時に敵から逃げようとしますか?
そこで、皆さんに大好評の GOO を発射物にして、DASH は「BLINK」というセカンド プレイヤー機能にしました。溶岩を飛び越えたりレーザーを通過するために BLINK を使えるように、無敵バッファも追加しました。
不安な瞬間
エンターテイメント メディアでは、ものすごく楽しいなと感じる時が最高の瞬間となります。瞬間というのは、緊急または不安な気持によって与えられるものだからです。変化する唯一のものが、背景とカメラの揺れにおけるパイプオルガンの音量になると、さらに難しいように思えます。Battery Jam で不安を感じる瞬間が高まるようなメカニクスを考えました。
レーザーボットをシャフトしてもあまり役に立ちません。レーザーボットはランダムなコラムでスポーンされ、 2 つか 3 つのコラムで爆破して消滅するので、誰もキルしません。プレイヤーは、制限された AoE 内にいる時でさえも、高いタイルの後ろにいれば簡単に避けることが出来ます。ソリューションは 2 通りあります。
まず、常にステージの真ん中でスポーンされて右か左に行くことで、ステージの半分が毎回カバーされるようにレーザーを変更しました。次に、シャフトが端まで行くか、端の 1 つ前のコラムかをランダムに決定するように設定しました。これにより緊張が高まる瞬間ができます。レーザーボットがプレイヤーをコーナーに追い詰めて、制圧するのか、許すのか、打ちのめすのかは分かりません。
もう 1 つの背景的な危険であるボンバーの変形は、さらに過激で重要です。まず、ボンバーは十字架をランダムなタイル上に単にスポーンし、そのタイルを「装備された危険物」とします。問題は、タイルと溶岩は両方とも歩いて通過すると破壊するタイルで、メカニクス上の違いがない点です。よほどボンバーをまとめて破棄しようかと思いましたが、そこで Everett が一度に多数のタイル上でボンバーをスポーンすることでボンバーの活力を増加させることを思いつきました。装備してプレイヤーを待つのではなく、爆弾が空からフィールド中に降り注ぎます。実際はプレイヤーはとても簡単にこれを避けることができます。致死のエフェクトは数秒しか持続せず、単に十字架の印のあるタイルを避ければいいだけだからです。新しく改良された罠の重要な点は、プレイヤーに消滅しそうな感じを与え、そういう場合、人はみんな、生き延びようとして叫んでフィールドを走り回ります。楽しいですね!
最後に、「サドンデス」という昔ながらの方式を採用しました。引き分けの場合に勝者を決める最善の方法ですが、我々のケースでは、お互いを避けてばかりいるプレイヤー達にもっと戦わせるようにさせます。勝負があまりにつきにくい場合は、1 回ずつが短い間隔で、タイルの外側のリングが一度に沈み始めます。すぐにエフェクトとして、プレイヤーが戦ったり逃げたりするスペースがどんどん少なくなるので、一定の対立を強いられ、ゲームプレイの収束が早まります。赤い溶岩でどんどん埋め尽くされていくので、緊張感も高まります。すべてが一か八かです。「赤はヤバいぞ」という脳からの指令でゲームへのアプローチの仕方が変わります。
テクニカル アート
こんにちは、Everett Gunther です。私は Battery Jam の背景、キャラクタ モード、エフェクト、光源を担当している リード 3D アーティストです。アリーナに生命とダイナミクスを簡単に追加するために私が使った方法について少しお話ししましょう。
ゲームに色調とエネルギーを注ぎ込むには、音楽に合わせてビートを取る背景が必要なので、背景アートのダイナミクスが主な目標でした。これらのダイナミクスは、シンプルにアニメートしたマテリアルを変形したものがほとんどです。ひるがえる旗、風に揺れる植物、ビートを打つスピーカーなどです。スピーカーはどのようになっているのか、見てみましょう。
まず、スピーカーのコーンの形状をフラットな表面としてモデ化し、頂点法線で変形を定義しようと思いました。その後で、変形のウェイトを明確に定義するために、白と黒でシンプルにマスクしました。
UE4 でシーンからアセットを選択し、Vertex Paint モードにします。次にタルガ オプションからインポートを使って頂点カラー マスクをインポートします。この方法だと、テクスチャがかなり負荷の低い頂点カラー データに変換されます。
スピーカーに使ったマテリアル設定は、Sine の方向出力でマスクすることで実現されるパルス エフェクトと一緒にリニアの Sine ノードを使って実行されます。
出来上がったものを頂点法線、次に頂点カラー データ、そして偶然見つけるために移動に対するワールド スペースの値で乗算処理します。この基本的な設定は、様々な方法でマテリアルの変形の大部分に使用しています。最終的にシーンではこのように見えます。
ではもう一つ、川の水位をアニメートする例をご紹介しましょう。
私が最もこだわった目標は、アリーナの背景の動き方や様子をできる限り生きているように仕上げることでした。これらの基本メソッドを使って、風に揺れる草、音楽に合わせて踊る植物、空中を彷徨うホーバークラフト、風にひるがえる旗などをアニメートします。アニメートされたアセットは特になくても、多数の場所のマテリアル レベルにダイナミクスを挿入できるようになるので、時間も短縮できますし、ゲームの見栄えがぐんと良くなります。
ブループリント処理
こんにちは、Esther Nho です。私はプロジェクトのブループリント処理をほとんど行いました。ゲームで見られるイベントとインタラクションはすべてブループリントのみで作成されました。チームの中ではコーディングの基礎知識を持つメンバーが数名しかいなかったので、我々のゲーム作成においてブループリントは本当に役立ちました。ゲームプレイに変化をほどこすために必要なすべてのツールがそろっていますし、使い方もすぐにコツがつかめました
ロジックを目の前で確認できるので、発生したバグを楽に追跡できます。なかなか取り除けないバグに対しては、別の方法を考えて最終的なゴールに到達しました。ある方法で失敗しても、かならず別の方法があるものです。
例えば、Battery Jam はゲームパッド コントローラを使ってプレイします。ここで私達が遭遇した問題の1 つに、ゲームのウィジェットで操作するためのコントローラを見つけることでした。当時アンリアル 4.6 を使っており、後に 4.7 にアップデータしたところ、ウィジェットはまだイベントグラフにゲームパッド イベントを提供していませんでした。
そこで私達は、ウィジェットごとにブループリント アクタを用意して、これらのウィジェットにコントローラを与えて、この問題を回避しました。メニューが呼び出されると、そのブループリントに対してすべてのプレイヤー コントローラに対して入力することができるようになります。アクタには、相当するカスタム イベントをウィジェットでトリガーするコントローラ イベントがあります。
「ボタン」はテクスチャから設定された画像エレメントです。アニメーションは UMG デザイナで作成され、カーソルを乗せている間プレイされます。
ボタンの通常ステートとホーバーステート用に画像には 2 つの配列があります。プレイヤーがメニューに沿って遷移すると、プレイヤーがその時いるボタンに対応した画像がイベント ティックに設定されます。プレイヤーがゲームパッドで下の顔ボタンを押すと、メニューで選択中のボタンに対してイベントがトリガーされます。メニューの呼び出しが可能なレベルにコントローラ ブループリントが配置されます。
さきほど Brandon も話していましたが、Jam は 20 週間をかけて作成されました。このプロジェクトが始まるまでは、チームはお世辞にもエンジンのエキスパートとは言えませんでした。かなりきついスケジュールだったので、バグが少ない機能を取り入れることに最も集中しました。最終的に仕上げることができれば、方法は問いませんでした。最近のスクリプトを見て、もっと優雅な方法でアプローチできる領域が絶対にあるはずだと感じていました。プロジェクトが進むにつれて、技術的な考え方はスクリプトの多くを改善して、長期的に柔軟な対応ができるようにすることに変わっていきました。そうすれば、爆発や物を増やすことができます。