がむしゃらメモ

がむしゃらのメモ的な扱いのブログです

第14回Unity1週間ゲームジャム お題「逆」に参加した話 ゲーム開発編~リバースダイバー~

 2020年2月24日(月)00:00~2020年3月1日(日)20:00に開催されたUnity1週間ゲームジャムに参加した話。こちらはゲーム開発編です。イベントページはこちら

月日の流れというのは早いもので今回で三回目の参加となりました。 

 

今回は「リバースダイバー」というゲームを作りました。

 

プレイはこちらから。パソコンでしか遊べませんが、ご興味あればどうぞ。

プレイ時間目安:5分~10分

 

 

この記事では、「リバースダイバー」を1週間でどのように作っていったかを振り返る記事です。主なトピックとしては以下の通りです。

 

  • どんなスケジュールだったか~想定と実際~
  • 各ゲーム要素をどう考えたか
  • 各ゲーム要素をどう実装したか
  • 発生した問題をどう解決したか

 

これらを1日目~7日目の実際を追いつつ、振り返っていきます。また、今回は試しに技術的な話もしてみようと思います。理由としては以下の二つです。

 

  1. 親切な天才が「こうやるともっと楽だよ!」と教えてくれるのに期待
  2. Unity初学者の方に少しでも参考になれば

 

技術的な話、といっても詳細に書くと長くなってしまうので、ソースコードとかは載せずに要点をかいつまんで書きます。プログラムの出来ない人間が如何に小細工を弄しているか、如何に頭悪いことしているかを楽しんで頂ければ幸いです。

「ここどういう意味か分からんぞ」って場合、ツイッターでリプライやDMをいただければ対応します。 

 

※途中、色々と突っ込みどころはありますが、反省は最後にまとめて書きました。

※色々詰め込んだせいで全体的に長いのでお気を付け下さい。

※この記事の大部分は、ゲーム投稿翌日(3/2)に書かれたものです。

 

 

1日目

想定スケジュール 

 お題発表の前に、まずはスケジュールを立てておきます。想定はこうです。

 

  • 1日目 企画・試作
  • 2日目 時間あれば企画・試作
  • 3日目 企画・試作
  • 4日目 ステージ制作
  • 5日目 グラフィック
  • 6日目 サウンド
  • 7日目 出来てないところ

 

2日目はやることがあったので、6日で制作する予定を立てました。果たしてこのスケジュール通りに進んだのでしょうか?

 

お題発表&ゲームアイディア決め

 2月24日(月)00:00にお題発表です。今回も発表前に就寝し、翌日起きてからお題を確認しました。

 

お題は「逆」でした。ほうほう。なんも思い付かねえ。

 

思い付かないので以前少し空想した、お題「逆」に合っていそうなゲームを作ることにします。床を潜り反対側に突き抜けて重力を反転させるアクションゲームです。元ネタはあの傑作インディーゲーム「Celeste」のチャプター2のギミックです。

 

f:id:GMshara:20200307180222p:plain

公式サイトより引用 Celesteで一番好きなギミック(画面上部)

 

このギミックを抜き出してメインに据えた小さなアクションゲームを元々考えていました。パソコンで操作する場合、Celesteのように8方向にダッシュする仕様だと少し難しい上にただのコピーなので、「上下動のみに絞ってダッシュはスペースを押すだけ」にして操作を簡単にします。その場合、「どうやってダッシュの方向を切り替えるのか?」という問題に当たります。その解決として「重力反転」を付けて重力の向きにダッシュする、という流れです。また、常に跳ねることで状況が少しゆらいで飽きが来にくいと考え、「常にピョンピョン跳ねる」ようにします。ピョンと跳ねた瞬間に一気に床に向かって加速すると気持ちよさそうです。

 

アクション試作

 作ると決めたら実装出来るかどうかを試作・検証です。実装出来なければゲーム作りが始まりません。

 

「常にピョンピョン跳ねる」は既にやり方が分かっていたので問題ありません。テラシュールブログさんのこちらの記事を参考にすれば、簡単に着地判定が取れます。着地したら跳ねさせるだけです。

 

問題は床に潜るアクションの方です。少し考えて実装方法にアタリを付けました。レイヤー切り替えです。Unityでは、Layer Collision Matrixという項目の設定を弄ることで、「どのレイヤーとレイヤーが衝突するか」を設定することが出来ます。こちらを利用します。

 

まず、プレイヤーの挙動を「スペースキーを押すと床を潜るためのレイヤーに切り替わる」ようにします。続いて、オブジェクトに子オブジェクトを付け、それぞれを別のレイヤーにします。そしてそれぞれにBoxCollider2Dを付け、一方にTriggerを付けて床を潜る用の当たり判定とし、もう一方にはTriggerを付けず、普通に床・壁として機能するようにします。

 

通常は床・壁として触れられるが、プレイヤーがスペースキーを押したらレイヤーが切り替わり接触しなくなる。逆に床・壁に重なるように用意されている当たり判定に接触するようになり、OnTriggerEnter2DとOnTriggerExit2Dで床を潜って重力反転するアクション、「ダイブ」を行う。これでメインアクションは実装出来ました。

 

数値調整

 動きが完成したら次は数値調整です。プレイヤーの挙動は詳細に書くと以下の四つのパートに分かれていました。

 

  1. 常にピョンピョン跳ねるジャンプ
  2. ダイブを入力してから床に触れるまで
  3. ダイブ中
  4. 床から飛び出してから着地するまで

(今振り返ると3の部分の数値は2と同じで良かった気がします)

 

これら四つのパートそれぞれで「速さ」「重力」を弄って調整します。ここはフィーリングです。「床から飛び出したときはフワッと跳ぶと気持ち良いかな」とか考えつつ感覚で気持ち良い手触りを作ります。

 

手触りを良くする

 数値調整と平行して手触りを良くするために色々追加します。簡単かつ効果があるのは以下の三つです。

 

  1. 回転
  2. 画面揺れ(カメラの振動)
  3. 色変え

(他にも簡単で良いのがあったら教えて下さい)

 

回転はtransform.Rotateで、画面揺れはコルーチンを使って「揺れる時間」「揺れる距離」を設定してカメラの位置を動かす感じ、色替えはSpriteRenderer.spriteを動きに合わせて弄ります。

 

回転はジャンプやダイブに合わせてそれぞれ回転速度を変える。画面揺れはx軸を動かさずy軸のみにして上下動を強調します。また、「床に入る瞬間」と「床から飛び出す瞬間」に揺らしますが、後者を前者より大きく揺らします。今回、手触りを良くするのに一番重要だったのが画面揺れでした。

 

1日目終了

 一週間でゲームを作るとなると、作り直しなんてしている時間はありません。初日に作ったものを最後まで作り通すしか道は無いのです。そのため、ここまでやって手触りが良い感じになってなかったら絶望です。ただ、今回はちゃんとやれば良くなることをCelesteが証明してくれているので、勝算がありました。

 基本挙動が完成して1日目が終了。

 

2日目

 初日に作った動きを使ってどんな面白い遊びが出来るか考えます。当たると死ぬオブジェクトを飛び越えながら進むとか面白そう。

 

1日目で見えていた問題

 実は1日目で壁の側面からダイブ出来てしまうことが判明していました。対策として、両側面にBoxCollider2Dを追加し、Physics Material 2DのBouncinessで弾くようにしてみます。が、挙動がとても気持ち悪い感じになってしまう。とりあえず保留しておくことに。

 用事があったので進捗ほぼゼロで2日目終了。

 

3日目

タイトルロゴ書きたい

 今までタイトルロゴを作れなかったので、今回こそ作りたいなあという気持ちがありました。タイトルは2日目にReverseDiver(リバースダイバー)に決めています。

ReverseとDiverにVが共通してあるので、それを上手いことダイブする表現として使えないかと模索しました。しかし、中々良い感じにならない…

 

f:id:GMshara:20200307203250p:plain

f:id:GMshara:20200307203324p:plain

 

Vを強調するのは文字数的に無理がありました。ゴミみたいなロゴしか出来ず、発狂しそうになってきたので諦めます。

 

ゲームデザインどうしよう

 ゲームデザインをどうするか考えました。以下当時のメモ。

・高いとこに足場を用意

  →反転時に一瞬カメラ外に行く。情報量が変更される。

   →思い切って行くか、一旦待つか。

 

 ・現時点でこのゲームが持つ、良いところ

  ・反転アクションがスピード感あって楽しい。

  ・連続でポンポン反転して進むのは面白い。リズム感が良い。

  ・高さが出るので、高いところにいける攻略性がある。

  ・重力反転によっていけそうにない更に高いところに行ける。

  

  ・地面についた時に跳ねるので、タイミングを見計らって移動する面白さがある。

   →また、リズムを生み出している。

  

   →→操作の快感と攻略性がある。

 

 ・ダイブすると大ジャンプできる床

 

 ・脳内ゲームロジック文章化

  ・ブロックの色が赤と青、もしくは黒と白(黒と白だとダイブ時の白フラッシュが使えない)

  ・同色は弾く、つまり大ジャンプ

  ・異色はダイブ、プレイヤーの色が通ったブロックの色に。

   

   →→ある程度、直感的なルール(超大事)

   →→ブロックの種類によって状況を変化させられる。

    →→アクションによって状況が変化する。

     →→同一アクションで異なるリアクション=面白い

   →→パズル的攻略性の発生。←要る?大いに疑問アリ。

     →→スパイス程度に留める。

   →→お題「逆」要素入る。

 

 ・時間制限以内に連続でアイテムを取り続けるとコンボボーナス

  ・前提として、最低限のやる気があれば誰でもクリア出来る形式にしたい

  ・アイテムを入れれば、上級プレイヤーはハイスコアを狙う急いだプレイになる。

   →連続取得ボーナスを入れることで、小さな連続した成功を褒めることが出来る。

  ・アイテムの配置によって、プレイヤーを誘導することが出来る。

   →パズル性の排除

   ・残りアイテム数表示で、いつ終わるのか推測させる。 

 

この辺りは脳内で考えるだけで、手は動かしていません。ゲームデザイン模索のための試作・検証を面倒臭がる悪癖が出ました。

 

試作・検証したのは「動く床」と「アイテム」くらいです。「動く床」はこちらの記事を参考にしています。

 

また、配色について考え、「ダイブ」という表現から深い海をイメージしました。「色選び」でGoogle検索して出てきたサイトを巡った結果、カラーコード「235180」「ff9800」の組み合わせが良い感じだったのでそれを使うことにしました。

 時間だけを浪費して3日目終了。今回も面白いゲームは作れないようです。

 

4日目

レベルデザイン

 ゲームデザイン模索は諦めてステージ作りを開始します。レベルデザインは以下のツイートを参考にさせていただきました。

こんぶさんありがとうございました。 

 

ゲーム開始時のエリアで言うと

  • 学び 左右に動ける&スペースで「ダイブ」を知る
  • 遊び 触れると死亡するオブジェクトを躱して進む
  • 極み ダイブで跳ねて高い位置に乗る&「上に落ちる」ことで先に進む

 

となります。このレベルデザインのやり方、どうやらこのゲームと相性が良いらしいようです。ゲーム開始時のエリアを作る過程で、今回のステージ作りにおける全体的な思想が見えてきました。

 

  • 基本的に右に進むようにして迷わないようにする
  • unity1weekで遊んで貰うことを考えてテンポを早くする
  •  →長くて5,6分で、短くて2分30秒くらい
  • 気持ち良く「ダイブ」してもらう
  • パズル性は排除する
  •  →道に迷わないよう、アイテムでプレイヤーを誘導する

 

全体的な考え方が見えたので、改めて既に考えていたネタを列挙してみました。

  • アイテムの「ジェム」紹介
  • 当たると死ぬオブジェクトを上手く躱していく
  • 「ダイブ」ではなく「大ジャンプ」する床
  • 動く当たると死ぬオブジェクト
  • 動く床
  • 総括
  • ラストのクレジット演出

 

まず、操作覚えたら次はジェム紹介だろうと考え、配置しました。そこでプレイ時間を計ったところ、サクサクプレイで一つのセクションに15~20秒ほどかかることが判明しました。したがって、七つ八つほどセクションを作れば目標となる「長くて5,6分で短くて2分30秒くらい」が達成出来そうなことが分かります。そして、ネタも同じぐらいの数で7つ。つながった!

 

例の問題に立ち向かう

 ある程度ステージ作りの目処が立ちましたが、まだ足りません。例の「側面からダイブ出来てしまう」問題があります。プレイヤーの違和感を減らし、ちゃんと縦に長い床のダイブを楽しんで貰うためにはこの問題を避けては通れません。

 

  1. 「どんなときに側面ダイブが起きるのか?」
  2. 「どんなときに側面ダイブが起きないのか?」

 

この二つの視点から調査を進めます。その結果、プレイヤーが回転せず矩形の当たり判定を維持していれば発生しないことが分かりました。回転をやめれば、側面ダイブは起きません。しかし、回転は手触りを良くするために必要です。こちらも譲れません。

 

しばし考えた後、当たり判定の無い「画像表示するだけの子オブジェクト」を用意し、そちらでプレイヤーが回転を続けているかのように見せることにしました。そして、ダイブをしようとした瞬間に回転を止め、矩形の当たり判定の角度を0度に戻すようにしました。

これで「側面ダイブ問題」を解決することに成功しました。今回のunity1weekで一番楽しかった瞬間です。

※ただし、あくまで自分の動作環境で発生しないことが確認出来ただけです。「私の環境だと普通に側面ダイブ出来ちゃうよ?」という方がおられたら教えて下さい。ショック死します。

 

連続ダイブ出来ない仕様にする

 ダイブを連発出来てしまうとすぐに飽きてしまうのでは?と考え、一度ダイブした後は着地しないとダイブ出来ない仕様にしました。そしてジェムを取ると再ダイブ出来るようにして、上手くジェムを取りつつ連続でダイブするのが楽しくなるようにしました。

 

副作用として、着地と同時にダイブすると連続でダイブ出来るようになりました。全く意図していなかった動作ですが、やり込み用として良さそうです。良い感じになってきた!

 快進撃を見せて4日目終了。

 

5日目

 予定ではここでグラフィック作業をする予定でしたが、ステージ作りが終わっていません。全体像がある程度見えており、ラストシーンは明確に脳内で出来ています。地道に手を動かしていくだけです。

 

しかし、ずっと同じことをやっているとしんどくなってきます。途中でグラフィック弄りに逃げました。床(矩形)の絵の角を削り、端をちょっとグラデーションさせました。

 

角を削る

 「矩形の角を削る」というのは個人的にはかなり重要だと思っています。角があると面白くなさそうに見えます。なぜかは分かりません。矩形のカクカクした感じが無機質な印象を与えるからかも。とはいえ、「角があると面白くなさそうに見える」は僕がそう感じるだけです。普遍的な感覚ではないかもしれません。(誰か教えて)

 

角を削る際、問題が発生しました。床オブジェクトはScale値を弄って引き延ばして大きさを変え、バリエーションを増やしていました。そのため、角を1ドットだけ削った絵を引き延ばすため、角が大きく削れてしまい、よく分からない絵になってしまうのです。

 

この問題は力業で解決しました。オブジェクトの大きさに合わせた画像を全て用意する方法です。大きさの違うオブジェクト毎に通常時(青)、ダイブ時(発光表現のための白色)、ダイブ中(オレンジ)の三種類必要です。色を変えるだけですが、地味に手間がかかりました。

 

ここで足を引っ張ったのが、端のグラデーションです。色が悪いのか、幅が悪いのか、とにかく全く見栄えが良くなっていませんでした。このとき、早めにグラデーションの効果が薄いことを見抜いて単色にする判断をすべきでした。結局この後、「グラデーションうぜえ」「何かもっと良い方法あるだろ」と思いながら、画像を用意して差し替える作業に時間を取られます。

 

そもそも、床のグラフィックは水の塊みたいな感じの表現がしたかった…

 あれ?時間足りないのでは?となりつつ5日目終了。

 

6日目

 ステージを完成させ、そしてスコア作ったり、ランキング作ったり、リスタート出来るようにしたりしてゲームフローを整えます。出来ればサウンドも実装したい…(無理)

 

5日目同様、ステージを作りつつ、飽きてきたらグラフィックを弄っていました。

 

絵作り

 ポストプロセッシングという無料で簡単に使えて画面がリッチになるものがあるので、それを使います。この記事が参考になります。四方を暗くし、レンズっぽくすることで深海っぽさを出します。また、ブルームエフェクトを掛けてジェムをキラッとするようにしました。更に色を少し弄ることで、深海っぽさが増してジェムも良い色になりました。

 

海っぽくするために、泡のパーティクルを用意します。このゲームの絵は全てAsepriteというドット絵描画ツールを使って制作しました。ドット絵のパーティクル実装についてはこちらの記事が参考になります。パーティクルオブジェクトは一つにし、生成範囲をステージ全体に拡げて実装しました。このやり方が良いのかは知りません。

 

当たると死亡するオブジェクトの表現を回転ノコギリにしました。なぜ回転ノコギリかというと、1日目でも書いた通りtransform.Rotateで回転させるだけで簡単に動きを付けられるからです。もちろん、見た目を「触れるとヤバいもの」にする目的もあります。

 

パーティクルでダイブ時に水しぶきのようなエフェクトを表現しようとしましたが、中々それっぽくなりませんでした。ので、これも描くことに。エフェクトの参考元はロケットパズルです。発売はよ

菱形→四角を繰り返して回転しながら動いて小さくなるように描きましたが、あまり回転しているように見えません。発光しているように見せるために白色のコマを挟んだのが失敗だったのかもしれません。今回ちょっと失敗しましたが、白色のコマを挟んで発光しているように見せるのは、コマを複製して色を変えるだけなので、実装が楽なのにちょっとすごそうに見えます。

 

 

ゲームフロー

 クリアした際に獲得ジェム数やタイムからスコアを出す処理を組みます。この辺の処理は非常に苦手、というかどうやれば効率が良いのかよく分かっていません。

 

おおまかな作り方としては以下の通りです。

  1. クリア時に画面を覆う画像を用意する(Order in Layerの値を高くする)
  2. Canvasを用意し、Screen Space‐Cameraにする(1の画像よりもOrder in Layerを高くする)
  3. 「ゲームクリア!」や「かくとくジェム」といったテキストを良い感じに配置していく
  4. クリア時にInvokeとコルーチンを連発して順番に表示していく

 

3、4辺りが面倒臭すぎて死にます。3でテキストを良い位置にするために「スペース11個分の間隔を空けて…」とかやっています。4もひたすらメソッド作ってInvokeしたりコルーチン使ったりするので圧倒的に疲れます。もっと簡単に楽に実装出来るようになりたい。

 

ランキング機能は安定のnaichiさんサンプルで実装させて頂きました。神。カエルの神。

 

リスタート演出は矩形拡大&回転にしました。両方実装が楽。でも正直もっとリッチな遷移アニメーションやりたい。泡で満たされるようなヤツとか、水位が上がるようなヤツとかさあ…

 

 

この日はかなり作業していました。さっきお昼ご飯を食べたと思っていたら夜になっていたくらいです。軽く恐怖を感じました。

 

余談ですが、いつも使っていた録画ソフトが使えなくなったので急遽ソフトを変えました。ScreenToGifというソフトです。

 

unity1weekではツイッターで進捗をアピールしておくと遊ばれやすくなるそうです。また、「人に見せるのだからマシなものにしよう」という意識が働きます。GIF画像を用意する手間もありますが、やって損はない気がします。

 

 

7日目

 サウンドの実装に残された全ての力を注ぎ込みます。サウンド作成のDAWソフトはCakewalkを使いました。音源はデフォルトでCakewalkに入っているものとMagical8bitPlug2を使用しました。

 

効果音

 ぶっちゃけ作り方を聞かれても分かりません。音源にスライドバーがあるので、それをガチャガチャ弄っている間にイメージに近い音が出来てくるので、そこを軸にまたガチャガチャ弄って…というふうに作っています。以下イメージの例です。

 

  • ダイブ入力 加速するイメージ
  • ダイブ 水に飛び込むイメージ
  • ダイブして飛び出す瞬間 水から勢いよく飛び出すイメージ

 

作った効果音はUnityで鳴らす際、audioSource.pitchの値を弄って少し加工しています。ピッチを弄るとまた聞こえ方が変わるので、加工無しで聴いたときに良いと感じなくても悪あがきできます。このやり方は少し前に発見していたのですが、今回やはり有用そうだと確信を深めました。

音楽

 作曲の心得は無く、雰囲気でやっているので鬼門です。深海っぽさがある程度出せている絵作りだったので、音楽も寄せる判断にしました。深海っぽさ、海底遺跡古代文明…といったイメージの音楽を考えた結果、SFっぽい感じか環境音楽みたいなものが良さそうです。SFの方は自分には作るのが難しそうです。「環境音楽 作り方」で安定のGoogle検索をかけてサイト訪問したところ、「適当に音並べればそれっぽくなるよ(意訳)」という非常に頼もしい記述が書かれていました。環境音楽で行きます。

 

Cakewalkにデフォルトで入っているエレクトロピアノの音源を使います。リバーブを掛けて何か海の底っぽい感じの音になるように調整し、適当に音を並べてみました。その結果…

 

マジでそれっぽくなりました。更にUnityのAuidio Low Pass Filterなるものを掛けて深海っぽいこもった音にしました。

 

雰囲気が全体的に落ち着いたものになり、ゆったりとプレイ出来るようになった気がします。しっとりとした感じと荒々しいダイブの対比で、プレイフィールは良さげです。及第点でしょう。

 

やれるだけやる

 時間がちょっと余ったので、気になっていた部分に手を付けました。

 

  • ダイブするときのエフェクト少し修正
  • ゲーム開始時の操作説明
  • 動くオブジェクトの移動幅をマーク(絵が雑)

 

操作説明の絵は以前から作っているゲームから素材を持ってきました。描く気力がもう無かった。移動幅のマークに関しては慌てていたせいか、最後のエリアのオブジェクトに付け忘れていました。

 

他にも、死亡アニメーションとか、気になっている箇所の修正をしたかったのですが時間切れ。さあビルドして投稿だ!

(ちゃんと間に合いました)

 

 

反省点

 良くなかったところ
  • スケジュール

まずスケジュールですが、想定が甘すぎると言わざるを得ません。一日でステージ制作が終わると思っているのは頭が悪すぎる。改めてスケジュールを考えるならこうします。

 

  • 1日目 企画・試作(ゲームデザイン確定)
  • 2日目 必要なギミックなどの実装と平行してステージ作り
  • 3日目 必要なギミックなどの実装と平行してステージ作り
  • 4日目 ステージ完成・ゲームフローの確立
  • 5日目 グラフィック
  • 6日目 サウンド
  • 7日目 予備

 

ゲームデザインは初日に決断してしまうべきですね。迷えば死ぬ。今回、前半にだらだらやっていたせいで、後半に作業量のしわ寄せがいってしまった感じがあります。ここを修正するなら初日にゲームデザイン確定がベターと考えます。

 あと、20:00ギリギリまで粘るのダメ。混雑して投稿がスムーズにいきません。18:00くらいに投稿するのが理想かな。

 

  • タイトルロゴ

 タイトルロゴはそのゲームがどんなゲームか?を表すものです。そのため、作るとしたらゲームが固まってきた段階なので、5,6,7日目辺りでしょう。3日目で作ろうとしたのはちょっと早すぎました。

 

  • 床のグラデーション

 角を削るのはこだわりたかったので良いのですが、グラデーションは微妙でした。こういう作業コストが高いくせに全く効果が出ないものを、素早く切り捨てる判断が出来るようになりたいですね。

 

  • 常にピョンピョン跳ねる仕様

 改めて振り返るとこれは要らなかった。無意味にゲームを難しくした全ての元凶。ちょっと面白さがあるかもしれませんが、煩わしさが勝つ印象です。

もっと考えると、通常ジャンプがそもそも要らないのかもしれません。ダイブでしか高く跳べないようにしたら、もっとダイブが際立ちますし、簡単アクションで気持ち良くなれます。

 

  • 連続でダイブ出来ない仕様

 こちらも無意味に制限を掛けてしまった気がします。バンバン連打してダイブ連発した方が気持ち良くなれたと考えます。「ジェムを取ると連続ダイブ出来る」ではなく、「連続ダイブした結果ジェムが手に入る」で良かった。

手触りの良いアクションが出来ていただけに、勿体ないことをしてしまったなと思います。少々考察が足りませんでした。そもそも元ネタのCelesteでは連続ダイブが出来ます。気持ち良さを追求した結果そうなったと考えると、深掘りが足りなかったなと実感します。「なぜその仕様になっているのか?」「なぜ気持ち良いと感じるのか?」という二軸の考察を深めていかなくては。

 

  • コンセプトのブレ

 「unity1weekに出す作品だから多くの人が最後まで遊べるものにしたい」一方で、「やり込むのが楽しい作品にしたい」。割と相反する考えを混ぜたまま作ってしまい、かなり中途半端な作りになってしまいました。コンセプトをちゃんと決めて、ゲーム要素の決定時にコンセプトを声に出して読むとかしないと駄目かもしれません。

 

  • ステージ構成

 そもそも縦の移動が気持ち良いゲームなのに、横に動くステージ構成にしてしまいました。これは「基本右に進む構成にすれば迷わずに最後まで遊べるだろう」と考えた結果です。ステージ作りの際に、「クリア率を高める」という一面的な視点しか持てていませんでした。

ジェムを全部取った後に死んで戻され、横移動するだけのあの退屈な時間…

 

  • その他

・ジェムもっと配置すべきだった
 →そもそも誘導とやり込み報酬で並列に並べたのダメな気がする
 →マリオのスターコインみたいなやつを別個に用意すべきだった

・厚さの違う床をもっと配置すべきだった

 →厚さの違いで感触が変わる

 

もっとやりたかったこと
時間があればやりたかったこと
  • ジェムを連続で取ったときにピッチが上がる感じにする
  • チェックポイントもっと分かりやすく良い感じのものにする
  • 死亡時に真っ二つに引き裂かれる感じのアニメーション入れる
  • ラストのところで音楽の音量を徐々下げていく
  • カメラの振動にメリハリ付ける
  • タイトル画面にもポストエフェクト付ける
  • 一部難易度調整(ノコギリ二個上下するところ頭おかしい)
  • クレジットのスピード調整
そもそも現時点でやり方が分からないもの
  • ダイブ中にBGMをこもった感じにする
  • 床を水の塊っぽい表現にする
  • 背景を水中っぽくうねうね動かす
  • 背景多重スクロールさせる
  • naichiさんお手製ランキングのUI弄る

BGMをこもった感じにするのはAudio Low Pass Filterをスクリプトから弄れたら出来そう。

 

実際の反響

 今回もかなりの方に遊んで頂けて嬉しかったです。絵作りを頑張ったお陰か、遊んでくれる人は前回、前々回よりも更に増えたようです。

  • ダイブの気持ち良さ
  • 音楽(雰囲気)
  • クレジットの演出

この辺りが良かったようです。全て自分が狙った部分なので良かった。ただ、音楽は合わなかった方もおられるようでした。とはいえ、今の自分の作曲能力で一番効果が出る選択だったと思っているので、気にしないようにします。

逆に想定外だったのはスコア2万越えの猛者が10名以上現れた点です(2万7千越えが三人も…)。特に2分切り出来るのは完全に想定外でした。やり込んでいただきありがとうございました。

ただ、やり込むという視点から見た場合でも、やはり甘かったようです。元々偶然の産物として「着地と同時にダイブすると連続ダイブが出来る」仕様が出来たのですが、シビアすぎて運ゲーだったようでした。

 

unityroomでコメントしてくださった方々、ありがとうございました。全部返信しました。毎秒エゴサしてます。

 

順位

 3月8日(日)20:00、結果発表です。今回の順位は…

 

f:id:GMshara:20200309061412j:plain

f:id:GMshara:20200309093557p:plain

  • 総合2位 4.275点
  • 楽しさ1位 4.522点
  • 絵作り30位以下 4.172点
  • サウンド26位 4.078点
  • 操作性3位 4.228点
  • 雰囲気15位 4.417点
  • 斬新さ11位 4.256点

でした。評価して下さった方々、ありがとうございました。

 

前回、前々回優勝者が忙しそう&自分は時間がたっぷりある、という状況でした。そのため「ワンチャンあるのでは?」と思い、今自分が持てる全ての力を出したのですが惜しくも届きませんでした。これやっぱ1位無理だろ

とはいえ、一番欲しいと思っている楽しさ1位が取れたので、今後の人生はこのことを誇りに生きていくことでしょう。次回はもっと省エネ開発したい。80%ぐらいの力で作って日曜日の朝に提出する、みたいな。

 

 

※書き忘れてたことがあったので追記※

 

 今回総合2位という良い結果に終わった要因は、はっきりと分かっています。それは「時間がたくさんあったから」 です。やり方次第だと思いますが、ゲームは基本的に

  • クオリティの高さ=掛けた時間の量

だと思います。それを今回の開発で強く実感しました。今後は開発技術でもアイディアでも「少ない労力で高い効果を生み出すもの」を探していく必要がありますね。

 

※追記終わり※

 

まとめ

良かったこと
  • 久しぶりに楽しいゲーム開発が出来た
  • 良かったことと良くなかったことがはっきり分かっている(ある程度良いゲーム作れたから?)
  • 総合2位、楽しさ1位取れた
良くなかったこと
  • スケジュールミスった
  • コンセプトブレた
  • ゲームデザインへの考察が足らんかった
  • 作業コストと効果が釣り合ってない作業に時間を費やしてしまった
今後やっていきたいこと
  • 好きなゲームについて「なぜその仕様なのか?」「なぜ良いと感じるのか?」を深掘りする
  • 作業コストと効果を素早く正確に判断出来るようになる
  • 次回unity1week参加時は全体のペース配分に気を遣う
  • 背景動かす
  • UIアニメーションさせる 

 

お疲れ様でした。やたら長いこの記事もようやく終わりです。

 

 

unityroom管理人兼unity1week主催者のnaichiさんにはこの場を借りて改めてお礼申し上げます。ありがとうございました!

 

 

 

おわり