【ゲームジャム参加】対戦ゲー「居合斬り」 制作中考えていた事と得られた気づき

f:id:coffee_ryo:20180612220958p:plain

はじめに

過去に引き続き、1週間でUnityでゲームを作り完成したゲームをプレイし合うweb上のイベントに参加しました。 こちらのゲームジャムでは開催毎にお題が与えられ、それに沿った物を作ります。
今回は「ぎりぎり」というお題で、自分は間合いを見切って敵を倒す「居合斬り」というゲームを公開しました。
▼こんなんです▼

居合斬り | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

こちらの記事では、自分への備忘録や次回参加者の参考のためにどんなことを考えながら作ったかと気づきを書き残しておきます。

どんなゲームにするかのアイデア出しと選定

お題公開された月曜日の午前0時からテキストエディタに思いついたものを書きました。

  • ホームレスがお金を集めて長く生きながらえる
  • 路上バンドマンがバンドしてお金集めて生きながらえる
  • ぎりぎりの間合いを見極めて相手を切りつけ倒すゲーム
  • ジョジョの水コップにお金入れるやつ
  • カイジの鉄骨渡り
  • バイクに乗って海に落ちるかどうかのチキンレース
  • 日曜ギリギリにゲーム投稿
  • etc

イデアの方向性としては3つあって、

  1. 何かのオマージュでネタ的にもギリギリなものをやる
  2. 現実の世界でぎりぎりを連想させるもの(お金とかお金とか)
  3. ゲーム内に登場するパラメタ(タイミングとか、距離など)がギリギリであれば良い評価を与える

を考えていました。強烈なネタがあれば1.2で行こうと思っていましたが、いいのが出なかったので3の「ゲーム内に登場するパラメタがギリギリであれば良い評価を与える」方向性で決定しました。

最終的には、以下理由で「ぎりぎりの間合いを見極めて相手を切りつけ倒すゲーム」で開発しようと決めました。

  1. 1プレイ20秒くらいで出来そうなところがGood。ゲームジャムでは100作品以上のゲームが並ぶので、短時間でプレイが完結できればストレスなく遊べると思った。
  2. 対戦の仕組みが受け入れやすい題材。(やっぱりゲームは友達と一緒にやりたい!)
  3. ギリギリにさせるパラメタについて、プレイヤーと敵が相互に影響し合えそうなもの。

3の理由についての補足ですが、
音ゲーのように、何かしらのオブジェクトが固定位置にいるプレイヤー目掛けて来るのに対しタイミングを合わせたり、
チキンレースのようにプレイヤーが何かしらの目標に向かって、閾値を超えないようにするゲームはたくさん出ると考えていて、
自分の場合グラフィックが非常に苦手で、ここらへんのゲームルールが被ると印象に残りにくかなと懸念していました。

ここまで決めたのが月曜日の午前1時頃です。 社会人なのですが、月曜の夜から作りこみができるようにしないと学生やフリーランスの方に敵わないと考えていたので、月曜日の午前中には絶対に企画を確定するように決めていました。
結果として遊べるレベルのものを作るのに繋がったと感じてます。

作るルールとか機能とかを決める

居合斬りをゲームとする時に、どんなものが必要かを考えていました。
このイベントで一番怖いのが、「遊べるレベルのものを作れずに終わる」事だと思っていたので、ゲームとして成り立たせる為に必ず作るもの・どうしても実装したいものと、余裕があれば作るもので分けました。
必ず作る部分でどれくらい時間がかかるのかを出して、金曜日くらいにはとりあえず遊べるようしよう〜と考えて動いた結果、なんとか日曜日までに作りきることができました。
工数だしの重要性。。。!

●必ず作ろうと考えていたもの

  • キャラクター移動
  • 剣を振る攻撃
  • 攻撃を当てると相手を撃破
  • スコア
  • 敵のAI
  • BGM付ける

●余裕があれば作ろうとしていたもの

  • ローカル対戦
  • 通信対戦
  • ゲームの説明方法を起動直後見れるようにする
    ファーストビューで見せないと、操作方法わからず次のゲームに移ってしまう
  • ツイッター投稿
  • ランキング機能
  • キャラクターのアニメーションを凝りまくる
  • UIをおしゃれでわかりやすく
  • BGM自作
  • キャラクターストーリー
  • 数種類の敵を作る(瞬間移動とか、分身とか、距離感をつかみにくくするスキル持っている奴)
  • 色々チューニングしてwebglの起動時間短縮したり、カクツキ抑えたり

あとは、unityを実際に触りながらイメージを膨らませて行きました。 この時点で、月曜日の午前2時半くらいでした。

(9時から仕事なのに1時に寝ますとか言っておきながら作業してました。)

開発しながら追加していった細かい調整について

ヒットエフェクト

居合い切りの瞬間のやりとりというのを表現出来たらいいなーということで、剣がヒットしたときに止まったりゆっくりになるのを考えていました。
後から気づいたのですがこの演出をいれたことで、ゲームとしてのカッコよさだけでなく自分が当てた・当てられたというのが明確に分かるようになりました。

駆け引きについて考える

見切って当てるゲームですが、見切りが失敗したときには何かしらのデメリットを与えようというのを考えていました。
いわゆるトレードオフとか、リスクとリターンとかの考えです。

まず考えたのが剣を振るアクションです。
ここは格闘ゲームの一部をイメージしていて、攻撃が失敗したら硬直する仕組みを入れてみました。

その後テストプレイしたところ、キャラクターが画面外まで逃げられてしまうので画面の端に壁を置きました。 なんとなくで置いたのですが、開発を進める途中でこの壁の存在が非常にいい駆け引きをもたらしてくれることに気が付きました。

剣硬直の仕様により、相手の攻撃を待ち空振りさせてからカウンターを狙う後出し作戦が安全なように思えます。 f:id:coffee_ryo:20180612214425j:plain

カウンターをしたいが、相手が前進をしつつ攻撃をしてこない場合は後退しないと相手の間合いに入ってしまい先制攻撃を受けるので、後退せざるを得ません。
ところが、壁の存在によりいつかは後退できなくなり、このプレイヤーが取れる手段は前進か攻撃しかできなくなります。
安全であることを保ち続けると、いつの間にかピンチになってしまうのです。 f:id:coffee_ryo:20180612215211j:plain

この話はスポーツのバスケの世界でよくあるのですが、ディフェンスの方針としてオフェンスの手段を減らせと言います。
オフェンスの行動パターンは主にパス・右ドリブル・左ドリブル・シュートの4種類なのですが、ディフェンス側はできるだけオフェンスに近づきシュートさせないようにし、右か左よりに体を寄せることで行動パターンをパス・片方のドリブルに絞ります。こうすることで相手の行動を読みやすくなり対策がしやすいです。ただし、オフェンスに近づくことでドリブル抜かれやすくなるので、ドリブルスピードに対応するための坂ダッシュが必要です!

では、前進しまくって端に追い詰めればいいかというと、これも結構危険で、相手が前進&攻撃を行って来る先制攻撃をして来ると反応できず被弾する危険性が高まります。

こんな感じで、様々なトレードオフが高速で行われる仕組みが出来上がり、プレイヤーに素早い判断を要求するゲームになりました。
うまく判断して狙い通り敵を撃破したときの爽快感・してやったぜ感は抜群です!

joycon対応

対戦モードの実装が1時間くらいで出来たのですが、2人で同じキーボードを使ってプレイするのは窮屈そうだなーというとに気づいたので、コントローラーで遊べるようにしてみました。 対応自体は以外にも簡単で、30分くらいでできました。
対応方法については、こちらの方の記事が大変参考になります。

taka8.hateblo.jp

ここまでで土曜日が終了で、日曜はひたすらバランス調整してました。

ゲーム自体を知ってもらう動き

ここは動きが足りなかったです。 ツイッターに進捗を上げることでとりあえず知ってもらえるところまでは持って行けたと思いますが、
「この人だからプレイする」みたいなものが足りなかったです。 この点は、ゲームジャム始まるずーーっと前から面白い発信をしていたトモぞヴPさんや、テラセネの森クマさんが強かったです。
もう師匠として見習っていきます。

https://twitter.com/kamiposo/status/1004232703309254658

終わりに

ゲームの駆け引きに関する箇所については完成度高く作れたと思います。
グラフィックであったり人を集める部分が弱かったので、次回開催以降改善していこうと思います。

unityroom作っていただいた@naichilabさんのおかげで、自分の作ったものが人に見られる機会を得ています。本当にありがとうございます。
あと、#weeyblegameに集まっていただいた開発者の皆さん、実際に対戦モードを試遊していただき感謝しています。
unityroomのランキング低く残念でしたが、皆さんのゲラゲラ笑っているところを見れて、ほんとに作って良かったです。