見出し画像

[サブウェポン]エレキテル:後編

Steam(Win)、Nintendo Switch、PS4/X-box one、Xbox Series X/S にて配信中の2D忍者アクションシューティングゲーム「Shinobi non grata」の仕様書(と言っていいか微妙ですが)となります。この資料は飽くまでも初稿であり、最終的に実装された内容と異なる部分も多々あります。製品版を遊んで頂いて、どこがそのままの形で実現し、どこが変更されたかをご確認頂いても良いかもしれません。https://store.steampowered.com/app/1796870/SHINOBI_NON_GRATA/また、このタイトルはフルリモート環境で、1年2ヶ月で完成した実績(準備段階含めるともう少し掛かっていますが)があるため、遠隔でゲーム開発するための参考になるかもしれません。

サブウェポン・エレキテル追記
エレキテルの追記

まず、エレキテルを完成させるにあたってのポイントを、動画にまとめてみました。「エレキテル解説動画.mp4」をご覧ください。敵を追尾するアルゴリズム自体は概ね良いと思うのですが、触ってみた感じが想定と少し違うので、そこを修正しながら作り込んでいくのが目的です。

誰も居ないときの挙動

まず、前提としてエレキテルは手裏剣同様に、キー入力の方向にエレキが発射されます。走行中、ジャンプ中にも同様の効果があります(しゃがみ状態では水平)。

画面内に敵がおらず、追尾する対象がいない状態でも、必ずエレキは発射されます。画面内にエレキの存在している状態で、新たに敵が現れたら、そのときに向きを変えて追尾する、という形になります。

状態とキー入力について

手裏剣同様に、キー方向に対してエレキを発射することができます。
ただし、手裏剣がしゃがみ状態でも発射できることに対して、エレキテルは、しゃがみ中に発射したとしても、強制的に立ち状態になり、発射することになります(鎖鎌と同じです)。

エレキテルを”構えた”状態

エレキテルの”構え”状態ですが、これは、エレキテルを発射した瞬間にこの状態に移行します。そして、エレキが画面内の残っている間はこの”エレキテル構え”状態を維持します。
この”エレキテル構え”状態によってユーザーの不利益になることはなく、”エレキテル構え”状態のまま、走り出したり、ジャンプ、サブウェポンの変更をしたり出来ます。また”エレキテル構え”状態での刀攻撃や、しゃがみ、前転などは状態がキャンセルされ、即座に別な動作を行うことが可能となります。

エレキテル発射時

これは演出のお話ですが、エレキテルを発射したとき、パレットチェンジによって6〜8フレーム程度白く光らせてください。カラーは図にあるとおりです。

エレキテルの追尾について

キー入力した方向に発射された後、画面内にいる対象エネミーに対して、湾曲しながらホーミングしていきます。このとき最初の角度が「キー入力されている方向」のため、最適な方向に発射しないと、ヒットまでに余計な時間が掛かってしまいます。
ただし、敵にヒットした後の挙動については、自機がどの方向にキーを向けていようとも、次の標的に向かって飛んでいきます。つまり、エレキテルは発射直後からユーザーが制御することが出来なくなります。

エレキテルエフェクトについて

後々の調整がしやすいように、エレキのエフェクトは、ループ部分と、消失部分に分けて制作していましたが、今回、動画を作ってみて、今回の仕様で作り込むのであれば、上記のような構造にせず、電気が走る一連の動作がおさまった、ワンショットのエフェクトにした方が作りやすいのではないかと思いました。
こちら実験的に入れておきます。また、次のページにて運用について詳しくご説明しますので、ご検討いただければと思います。

エレキテルエフェクトの表示について

エレキのエフェクトは、それ自体が移動するのではなく、敵との軌道上に配置していくことで、雷が追尾しているように見えます。雷自体はその場で止まっているのですが、進行方向にひとつずつ(0.4秒毎)追加していきます。アニメパターンが12枚あるので、画面上には13個以上のエフェクトは表示されません。つまり、エフェクトがひとつ消えるタイミングで、ひとつ追加することで、一定の長さを維持したまま、エネミーに向かっていきます。
サンプルを用意いたしましたので、ご確認頂けばと思います。

エレキテルヒット時の挙動

エレキテルは、一度発射してしまうと、ユーザーの操作と関係なくダメージを与え続けますので、より「ヒット感」を演出しないと、ダメージを与えている実感を得難いと考えます。
なので、ヒットしたときの「パレットチェンジ」「振動」「専用ヒットエフェクト」の3段構えで演出したいと考えています。なお、エレキテル専用ヒット「帯電」エフェクトはちょっと地味なので、最終的にはもう少し派手なものにしたいと考えています(リソースの入れ替えのみ)。

エレキテルヒット時の誤差

エレキテルエフェクトは、そのひとつひとつが比較的大きいので、完全にエネミーの位置を捉えることができません。ただ、これは仕方がないことなので、多少ズレていても「当たっている扱い」で良いかと思います。
ヒット時にエネミーの位置を強引にずらして「当たってる風」に見せることもできますが、試してみて気にならないようなら対応する必要はありません。おそらく、帯電エフェクトを派手にすることで、多少ズレていてもあまり気にならないようにできると思います。

対象がロストした場合の処理

エレキテルはエネミーにヒットしたら、その生存時間の間中、対象にスリップダメージを与えます。そして、対象のライフがゼロになったときに解放され、画面内に他のエネミーが居た場合は、そちらに向かいます。

対象が画面内に居ない場合は、ヒットした直前の角度を維持したまま再度エレキが発射され、そのまま画面外に消えていきます。

もし、エレキがエネミーにヒットし、スリップダメージを与えている最中に対象が画面外に出てしまった場合は、そのN秒後、強制的にエレキテルは解放されてしまいます(設定できると嬉しいです)。






















この記事が気に入ったらサポートをしてみませんか?