フォートナイトクリエイティブで射撃ミニゲーム~プログラミング初心者向け解説

#フォートナイトクリエイティブでミニゲーム

フォートナイトクリエイティブで射撃のミニゲームをつくりました。ルーチン(処理グループ)作りなどプログラミングに必要な要素を盛り込んでいます。

本記事の執筆は、フォートナイトマップデザイナーのカグア!(@kagua_biz)です。普段、マップを作っては海外サイトに投稿することをしています。なお、情報は2019年10月・チャプター2・シーズン1・v11.01 時点でのものです。ご注意ください。

フォートナイトで作ったミニゲーム

フォートナイトもアップデートをかさね、着実にプログラミング要素が充実してきています。マインクラフトにはまだまだ及ばないものの、こうした開発環境がととのいサンドボックスゲームとしての拡大も期待できますね。
>>フレンドといっしょ競おう!「スナイプ・イン・ザ・ダーク」近日公開!※動画あり https://t.co/qIil6cVXT1

射撃ミニゲーム「スナイプ・イン・ザ・ダーク」

そこで今回はミニゲームをつくりました。ミニといっても、得点のカウントや敵のランダムな表示など、いちおう一定の機能は満たしていると思います。

「スナイプ・イン・ザ・ダーク」の仕様

  • 射撃ミニゲーム
  • ゲームスタートのスイッチを押したらカウントダウン
  • 全部で10回ターゲットがランダム表示、回数も表示
  • 射撃成功ならばライトが点灯
  • ゲーム終了後、再びスタートさせればリセットされ再ゲーム可能

ようは、10回ターゲットを射撃してカウントされる、という程度のミニゲームです。下図は10回(青)中、1発あたった(オレンジ)という結果表示です。

得点と射撃回数が表示

いやー、しかし作り終えてみるとやはり、いわゆるプログラミングではなくゲーム内の機能をつかったサンドボックスなため、ある程度の処理装置が必要になりました。作ってから「最初から大作を狙わなくてよかった・・・」と思ったのは秘密ですw。

射撃ミニゲームの作り方と基本構造

ミニゲームは大きくわけて3つの基本処理にわかれています。全体を動かすメイン処理、ターゲットをランダムに開閉する処理、当たり判定とカウントをする処理です。

フォートナイト クリエイティブのミニゲームの全体構造

メイン処理がつねに動いていて、都度それぞれの処理を呼び出すかたちで動いています。

メイン処理

ミニゲームを起動するにはユーザーがボタンで開始します。そのボタンとミュージックシーケンサーが連動しています。ミュージックシーケンサーには、ランダムに標的を開くトリガーが10個等間隔に並べられています。

フォートナイト クリエイティブミニゲームでメイン処理をしているミュージックシーケンサー

ここはループを使いたかったのですが、ハードコーディングしています。それと、開始の処理と、終了の処理のためのトリガーをそれぞれ置く。

ポイントは、開始のトリガーでボタンを無効にし、終了のトリガーで有効に戻しているところです。ミュージックシーケンサーでの制御はトリガーをいくつでもおけて、視覚的にわかりやすいため、合理的といえば合理的なんですよね。

なお、1~10回までの、標的制御のトリガーとともに、何回目かのライトをオンにするトリガーも併設します。

ターゲット開閉

ターゲットは乱数で開閉しています。メイン処理のトリガーが起動するミュージックジェネレーターを使い、1~3までの乱数を発生させます。発生した乱数のゾーンにそれぞれバリア開閉のためのトリガーをおいています。

フォートナイト クリエイティブミニゲームで乱数使用

3つ開閉しますので、トリガーも3つおいています。ただ、単純に開閉させるだけですと、開いている時間がながくなりすぎて簡単になります。そこで、すぐに全部のバリアがしまるトリガーを別において、ナンバージェネレーターを作動させたミュージックシーケンサーが閉めるトリガーも踏むようにしています。

バリアを占めるトリガーを、表示させるトリガーの近くにおけば表示時間が短くなり難易度があがります。ここで難易度調整が可能です。

当たり判定

当たり判定は最初、ターゲット仕掛けでスコアが加算されることと、スコアマネージャーと連携させようとしていました。しかし、スコアマネージャーにはそのような機能はないようで断念。

結局、トリガーそのものを置いて、ユーザーがそれを射撃できたらトリガーオンとなり、カウントさせるミュージックシーケンサーを動作させます。

ミニゲームで当たり判定

カウントは、カウントさせるミュージックシーケンサーを置いています。射撃されたトリガーは、カウントミュージックシーケンサーを作動させます。カウントミュージックシーケンサーは、11個トリガーが置いてあり、一番最後のトリガーだけ有効になっています。

最初作動すると、11番目のトリガーが10番目のトリガーを有効にします。そして、次にシーケンサーが動くときには、9番目のトリガーが有効化されます。このようにしてカウントアップを制御しています。

また、全般制御のミュージックシーケンサーが開始のトリガーをふむと、これらの有効化されたものが、もとの状態に無効化されます。

射撃ステージ

最初の起動のスイッチと射撃場所だけつくりました。

ミニゲームのステージ

射撃場所に立ったらトリガーを踏んで自動スタートでも良かったのですが、ちょっと面倒になりやめてしまいました。トリガーの上で何度もジャンプしたらとか、いろいろ考えてたらおさまりがつかなくなり、完成を優先させました。

ですので、ラジオやHUDメッセージなども華やかさを出すために、あえて表示オンにしておきました。

ビルボードで説明を書き、最低限の体裁に整えました。あとは近くにゲームスタート時のスポナーを置いて完成です。

わかっている問題点

当たり判定のカウント時にミュージックシーケンサーを使っています。ここが再生しきらないうちに次のターゲット表示がはじまってしまいますと、おそらく何らかの表示ミスが起こりそうな気がします。

ですので、10回の表示について、その時間稼ぎのためにちょっと遅めに、パッ・・パッ・・パッ・・・とバリアを開かせることにしました。このあたりはもっとスマートにできないかなぁと思案中です。

JVC HA-RZ510 密閉型ステレオヘッドホン 室内用(テレビ・ゲーム向け) 1.2m+延長2.3mコード付き

JVC HA-RZ510 密閉型ステレオヘッドホン 室内用(テレビ・ゲーム向け) 1.2m+延長2.3mコード付き
Amazonで詳しく見る

楽天で詳しく見る

Yahoo!ショッピングで詳しく見る

【関連おすすめグッズ】安い価格で高音質なJVCのおすすめヘッドフォン。延長コードも付属しますので、テレビから離れても大丈夫です。

ゲームづくりの難しさ

フォートナイト クリエイティブでのゲームづくりは、アップデートのごとに進化してきました。しかし、それでも以下の環境が未整備なので、なかなかに時間と手間がかかります。

  • 開発モードがない(状態の確認やブレイクポイントをおけない)
  • いちいちゲームを起動させないと確認できない
  • マルチプレイヤーでのデバッグが面倒
  • 処理自体がオブジェクトなので、キャラクターを操作していちいち配置しなくてはいけない

ブレイクポイントなどは、とりあえずトリガーを置くなどして工夫は可能なのですが、それでもあるに越したことはありません。トリガーマネージャーとか欲しい。

また一回一回ゲームを起動させないといけないため、とにかく時間がかかります。一回一回トリガーを配置しては設定画面をひらき・・・としますので、サクサクとはプログラミングできません。さらに、複数人に対応するとなると、どこまで完璧を目指せばいいのか悩みます。

今回のようなミニゲームでさえ、チャンネル22個つかいましたので、これらも便利な仕掛けの実装には期待したいですね。

無理せずほどほどにがんばって!EPICさん!

ちなみに、制作時間は約2時間でした。最初の設計どおりにほぼうまくいったので、バグ取りなどの改修にほぼ時間をとられなかったことが大きいです。

ただ、構想やここまですぐに思いつくようになるまでに、何百時間をかけけはいます。頭が良い人や飲み込みが早い人は、ここの時間はもっと削減できるとは思います。

まとめ

  • メイン処理とそれぞれの処理のルーチンをミュージックシーケンサーで分ける。
  • トリガーはとにかく多くなるので、最初の設計が重要。
  • 開発はとにかく時間がかかる。大きなゲームや仕掛けをつくらない割り切りも必要。

フォートナイト クリエイティブはまだまだこれからも進化していくと思います。いっぽうで、マルチプレイヤーでのライブラリも増えそうなので、自分自身がどういうゲームをつくりたいのかをぶれないようにしないと、ふりまわされるだけですので、注意したいですね。

お疲れ様でした。

・ ・ ・ ・ ・

>>安っ!アマゾンで半額以下になっている食品タイムセール
セール特設ページを見る

↓↓↓無料のニュースレターを配信中です

プログラミング楽しい