unityroom主催の一週間でゲームを作るイベント、Unity1週間ゲームジャムに参加したので、作成したゲームの紹介と振り返りをしました。初参加で思うところもあり、たくさん書きます。
ゲーム紹介
今回のお題は「密」。私が作ったのは密度を変えて浮力により上下することでゴールを目指すアクションゲーム「ふうせんにゃんこダイブ」です。
現在も公開中です。ブラウザ上で遊べるのでぜひぜひ。
制作記録
以下、文体崩して書きます。
参加表明
今回のunity1weekはGW中の開催が急遽決定したわけだが、当初は参加をかなり悩んだ。リアルの生活がちょっと山場で、時間が確保できるかわからなったからだ。
「参加したい、でも忙しくなりそうだし」を延々と繰り返しているうちに1つの事実に気づいてしまった。この葛藤何回目だろうか、と。そしてイベントページに行って過去のお題リストを見た瞬間、衝撃が走った。絶望さえ感じた。
第一回のお題「跳ねる」――見たことある、というか過去のお題全部知ってる。
なんということだ!忙しいという理由で3年も参加を見送らせていたってこと?それでゲーム制作が趣味って言ってるの馬鹿じゃない?
私は知っている。「永遠に参加できない」が誇張ではなく事実であることを。それを他でもない私自身が3年以上の長い時間をかけて証明してしまっている。
忙しいを理由にするのは無しだ!さぁ、ゲームをつくろうぜ!
1日目(企画&プレイヤー処理実装)
ゲーム性を企画段階から考える
私の場合、企画の段階からゲーム性を意識する。そうすると、ゲーム性ってなんだ?という当然の疑問にぶち当たるわけだが、私の中ではこうなってる。
- 最適解、あるいは、それに近い解がわからない
- 最適解はわかるが、それを実践するのが難しい
個人的には1が入っているゲームが好きなので、1を考えることが多い。真っ先に思いつくのが、プレイヤーに選択肢を与える方法だ。アクションなら敵を倒す手段を複数用意するとか。
とはいえ、選択肢があればいいというわけではない。敵を倒す手段が「ジャンプで踏みつける」と「ビームを撃って当てる」という2つの手段があっても、ビームが強すぎてジャンプする必要がないなんてことになったら全く面白くない。
ポイントは最適解がわかりにくくなるように選択肢を作ること。そうするためのテクニックとして私はハイリスクハイリターンな仕組みをよく使う。危険を冒して大きな見返りを得るのがいいのか、無難に小さな見返りを得るのがいいのか。悩ませ、解を模索する楽しさを付与できるはずだ。
わかりやすくする
直観的にすぐに遊べることも意識した。300本以上のゲームが投稿されるイベントだ。ルールを理解するのに5分かかるゲームが100本あれば、500分もの時間を費やす羽目になる。私ならプレイする気力が湧かない。
「ゲームが面白い、面白くない」はプレイヤーの好みによるが、「遊び方がわからない」は遊び方をわかりやすく伝えようとしなかった作者の怠慢だと思ってる。
お題「密」に合った企画を考える
私の場合、ジャンルとお題を組み合わせて案をつくり、その中で一番良さげなものを採用する形式になることが多い。候補となったものをいくつか紹介する。
・レースゲームと「密」
密着取材という単語が頭をよぎったので、レースゲームと合わせてみた。プレイヤーはカメラマンになり、レーサーの後ろをついて行ってカメラ内に収めるゲームだ。
カメラにはズーム機能をつけて、スコアを「画面内に対象がどれだけ大きく映ったか」によって計算する。これにより、
- ズームする=対象を大きく映してハイスコアを狙えるが、見失いやすい
- ズームしない=スコアは狙えないが、対象を見失いにくい
というハイリスクハイリターンの仕組みが生まれる。
・シューティングと「密」
精密射撃とか、密度とかの単語から思いついたやつ。倒すべき敵と倒してはいけない味方が混在しているシューティングである。
最初のメモ書きには威力がどうの書いてあるが、攻撃範囲が変わるだけでもハイリスクハイリターンが出来上がる。
- 範囲が大きい=多くの敵を同時に倒せるが、味方も巻き込みやすい。
- 範囲が小さい=少ない敵しか倒せないが、味方も巻き込みにくい。
・アクションと「密」
シューティングで「密度」という単語が出てきたのでそこから想像した。
ふうせんにゃんこ誕生の瞬間である。
採用理由
- ハイリスクハイリターンの仕組みがある(大きくなる=速いが、ぶつかりやすい)
- ルールは現実世界で体験しているので、直観的
- キャラクターが大きくなるのは絵的にも楽しそう
実装も難しくなく、直観的でルール説明が不要、それでいてゲームとして最低限成り立つ。タイムアタックなら1ステージだけ作っておけば問題ないし、2日でつくれそう。
開発スケジュールの決定
「とりあえず遊べる」に持っていくのが重要だ。最初の2日をプログラミングに費やす。2日あれば、スタートからゴールまでの一連の流れとタイム測定までは余裕をもって実装できる。
最終日付近は休みなので、ステージ調整やランキング機能の実装に費やせば間に合う算段で金曜土曜を充てた。
残った時間で新しいことへの挑戦を行う。学びがないと面白くない。プログラミングは学ぶ要素がなさそうだったので、イラストに初挑戦することにした。
プレイヤーの実装を行う
最初は、水に触れている部分をy座標から計算して浮力を求めた。しかし、物理演算させると慣性が効いて操作が難しくなったので、単純な等速移動を採用。キャラクターの大きさはスケールを上下方向の速さに応じて変えるだけ。
壁とかブロックとか適当においてテストプレイした。1番最初のテストプレイでチェックしたのはプレイによってどんな感情が生まれたか、である。
ゲームはエンターテインメントである。遊ぶ人がいなければ意味がない。であれば、最も重要なのはプレイヤーの感情であるはずだ。1番最初のテストプレイはゲーム開発者自身が素人プレイヤーになれる唯一の場である。それを参考にしないのはもったいない。
プレイしたときの感想は「上に早く行きたいのにひっかかってもどかしい」だった。だから、このゲームは「もどかしさ」を感じるように設計することにした。
2日目(ゲームのコアシステム実装)
コアシステムの実装
以下の実装を行った。
- 当たるとタイムロスする針
- リスタート地点
- スタート/ゴール処理
- タイム計測処理
書いたコードは1発で動いて苦労しなかったので、何も書くことがない。WebGLビルドのテストも特に問題なかった。
3日目(イラスト作成)
そもそもペンタブとか持っていないし、持っていたとしてもまともに使えないので、マウスでできるものに限定された。真っ先に思い浮かんだのはドット打つことなんだけど、プレイヤーの大きさが変わる今回のゲームにドット絵は相性が悪い。なので、Inkscapeで図形を組み合わせて作ることにした。
キャラクターデザイン
ゲームの性質上、主人公は画面内に大きく表示されることになる。もし愛着の湧かないデザインだったらプレイする気が失せるので、マスコット的なかわいいやつを描く必要がある。ということで、風船と何か動物をミックスさせることにした。どの動物にするかだけど、まぁ猫だよね。猫使えば大体かわいくなる。迷ったら猫にすれば問題ない説、あると思います。
こうして、主人公「ふうせんにゃんこ」は誕生した。ちなみに、名前は2秒で決めた。左が浮くバージョン、右が沈むバージョン。
2つのバージョンを用意したのは、ゲームの仕様上必須だと思ったからだ。このゲームは下を押している時でもキャラクターが上に進むことがある。プレイヤーは想像の挙動と実際の挙動が異なるとストレスを感じてしまう。想像と現実の乖離を防ぐため、浮く状態と沈む状態を区別してプレイヤーに示す必要があった。
ステージの構成要素のデザイン
主人公のデザインが決まったので、次は小物を描いた。当たってはいけない障害物、針玉と左右の壁となる岸壁、宝箱、水の中を表現するための泡、雲を描いてこの日は終了。ちなみに、海底の砂は雲の絵を色変えて使うことでサボった。
岸壁についてはデザインを4つ用意してランダムに並べるようにした。1つのデザインを使うよりはパターンが見えにくい。
足場も同様の手法を使っている。ただし、大きさは後の難易度調整で変更される可能性が高いため、それぞれのパーツの長さを変えて調整が効くようにした。最小の足場は大きさ1のブロックの予定だったので、両端のパーツをつなげると大きさ1の正方形になるように作成している。
背景はただのグラデーション。シェーダーを書いて実装した。ShaderGraph?そんな便利なものは俺が学んだ時代にはなかったので、使い方がわからない。今回はなし、今度勉強する。
4日目(アニメーション作成)
動きがないのは楽しくないので、常にパーツを動かすように意識した。上下キーの入力中には動きを激しくした。待機中と差をつけることでプレイヤーが想像する挙動と現実の挙動の差を減らすようにする。
浮く状態から沈む状態への遷移アニメーションも作成したかったが、時間が足らず後回し。制作は順調に進んでおり、余裕はあるので、予定変更するほどでもない。(結果的に、6日目に実装した。)
5日目(ランキング機能&UIデザイン)
ランキング機能はnaichiさんのアセットを使用させていただいた。とても簡単に実装できました。ありがとうございます!
機能実装自体は10分ぐらいで終わったので、デザインを私なりにカスタマイズ。レイアウトに関して気になった点を直した。
- 今回のスコアとハイスコアの文字の大きさが同じ。(プレイヤーが最初に気にするのは今回のスコアだから、そちらを大きくして目立たせたほうがいいのでは?)
- ハイスコア更新時にハイスコアと今回のスコアが同じになる。(同じ数値を2回載せる必要ある?)
- ランキング登録ボタンはスコア更新時しか押せない。(押せないなら、非表示にしたほうがいいのでは?)
そんなわけで、ハイスコア更新時とそうでない時の2パターン作成。
6日目(レベルデザイン)
気をつけた点を、いくつか書いておく。
往復コース
企画段階で考えたゲーム性という点で言えば、往復させる必要はなく、上に行く過程だけで充分である。実際、下降する過程では「小さくなるほど速い上に、あたりにくい」というローリスクハイリターンになり、ゲーム性は失われる。では、なぜ入れたか。それは「もどかしさ」の演出のためである。
コースの折り返し地点で、ローリスクハイリターンがハイリスクハイリターンに急に切り替わる。簡単に進めていたコース、知っているコースが危険な道に急に変わる。わかっているのにできない「もどかしさ」を引き起こすことを期待した。
コインの配置
コインの役割は3つある。
- 往路でのミスの減少
往復コースの効果を生かすために、広い道に誘導するように配置した。 - 「もどかしさ」の演出
往路で広い道を通ると復路では狭い道にしかコインが残らない。
「コインは見える、でも取れない」 - クリアタイムの調整
1分というわかりやすい目標が生まれるように設定した。
生まれた「もどかしさ」は再プレイにつながる。「あそこの道をこっちに進んでおけば…」という反省点が簡単に見つかる。1回目より2回目のほうが好タイムを出すだろう。それが楽しさにつながってくれればという願いを込めたコースである。
タイトル
背景が青く、足場が黄色っぽいので、目立つようにコインは赤色にした。しかし、赤色のコインはあまり見ない=馴染みのないものなので、プレイヤーはコインと認識せずにスルーするかもしれない。
「赤いものはコインで、コインは取るもの」と認識させるため、タイトル画面でコインを取ることを強制した。チュートリアルを作成する手間も省けて一石二鳥である。
苦戦したこと
「もどかしさ」を意識したわけだが、最後まで悩んだ問題がある。それは「もどかしさ」を前面に出すべきか、である。「もどかしい」という感情はポジティブなものではない。楽しさに直接結び付かない。
楽しさに結び付くのは、「もどかしさ」が解消されたときだ。一部の人しか受け付けない難易度よりも、何回かプレイすれば「もどかしさ」が解消されたほうがいいだろうと判断し、やさしめに調整した。
7日目(ロゴ、アイコン、音実装&リリース)
「ふ」の点を風船、「ん」を猫に、濁点を泡にしたりとかした。ロゴ作成わかんない!誰か教えてー
ビルド自体は問題なくできていたので、ぎりぎりまで演出の追加作業をした。どのくらいぎりぎりまで行っていたかは締切1分前の公開予約報告ツイートが物語っている。
リリース後(ツイート機能追加&BGM変更)
ツイート機能はnaichiさんのアセットを使わせていただきました。ありがとうございます。
音楽の変更も行った。ちょうどいいBGMがなかなか見つからなかったので、すなじろさんに作成を依頼した。依頼したのは6日目である。急な依頼にも快く対応してくださって、本当にありがとうございます。
結果と反省
評価は以下のようになった。(2020年5月10日時点)
楽しさ | 3.785 |
絵作り | 3.989 |
サウンド | 3.731 |
操作性 | 3.796 |
雰囲気 | 3.882 |
斬新さ | 3.839 |
総合 | 3.837 |
実は開発段階で「楽しさ」の評価は低めだろうと思っていた。これは操作自体に気持ちよさがなく、プレイしたくなるような挙動にできなかったからだ。「もどかしさ」を感じさせつつ、操作自体は気持ちよくて楽しいというのを理想としたが、うーん、難しい。
結果的に、減点されにくい無難にまとまったゲームになった。「すげー面白い」じゃなくて、「まぁ普通にあそべるね」ぐらいの感覚。実際、「楽しさ」の評価は実装が遅れた「サウンド」の次に低いし、この辺りの印象はプレイヤー側と変わらなさそう。
得たもの
- ゲームを作成してunity1weekに参加できた
- スケジュール通りに問題なく開発できた
- イラストを描く苦手意識がなくなった
特に良かった点
- 苦手分野(気持ちいい操作、演出関連)が明確になった
- 開発者との交流ができた
- 多くの人に遊んでもらえた(閲覧数700!過去作品の中で最多)
次回気を付けること
- 仕事の依頼は早めにする
- 「もどかしさ」のような難しい感情に挑戦するのは経験積んでからにする
さいごに
ここまで読んでくださってありがとうございます。久しぶりのゲームリリースで学ぶことの多いイベントでした。イベントを主催してくださったnaichiさん、イベントの参加者様に感謝申し上げます。
今の実力だと頭でっかちになりがちなので、これから実践経験を増やしていければと思います。精進していきますので、今後もよろしくお願いいたします。