2023年2月13日月曜日

シンプルな音ゲー Tip Tap Rhythm を作った

シンプルな音ゲー Tip Tap Rhythm を作りました。 よく似たアプリとして Tip Tap Notes も作ったのですが、 Tip Tap Rhythm はゲーム曲などの現代曲に合わせて作りました。 ゲーム自体は、Waterfall で落ちてくる音符を、名前の通りタップするだけのシンプルなアプリです。 特徴としては、楽曲を Free MIDI から選択可能なので、膨大なサポート数があります。 またゲーム化によって現代音楽をサポートしやすくなったので、サポート楽曲はここから一気に増やしていきます。

今回のリリースにあたっては、Amor Kana (音羽雪)様、かるがも行進局様をサポートし、8,500曲ほど遊べるようにしました。 楽曲は Free MIDI から選べます。



ゲーム曲などの現代曲を想定

Tip Tap RhythmTip Tap Notes の開発中に色々実験した結果、生まれたアプリです。 Tip Tap Notes、つまりクラシックの場合は主旋律が明確なので楽器ごとにメロディ (音符) をタップしていれば面白かったのですが、 現代曲では主旋律の楽器が入れ替わる問題があります。 音符をそのままゲームにしようとすると、楽器数が多くなり過ぎて音符も膨大になり、鬼畜ゲームになってしまいます。 といって楽器を制限したりするとタイルが落ちてこなくなったりしてつまらないです。 まずは楽器ごとに、音階を取らずにリズムだけ取ると面白いゲームになるのではないかと考え、モックを作ってみました。

ゲームになるよう試行錯誤

しかし実際に遊んでみると、現代曲だと大量にリズムを刻む楽器が多い問題がありました。 ただひたすらボタンを連打しているほうがマシになってしまい、とても遊べるものではない楽曲が多かったです。 ここがクラシックとゲーム曲の大きな違いです。 リズムが早すぎる短音符は PERFECT を出すのも難しくなり、点数も伸びなくて面白くないので、まずは除外してみました。 楽器ごとのメロディをそのまま扱うのではなく、演奏時間の長音符だけ扱うということです。 これはなかなか良くて、この変更だけでよくある音ゲーと同じプレイ感覚になりました。

タップ頻度は調整も効くのでいい感じになったのですが、今度はタップが単調になりすぎる楽曲がたまにあることが気になりました。 そこで楽器ごとに分けるのではなく、長音符だけを残してメロディをタップしている感を付けました。 楽器ごとのフィルタリングをなくしたことにより、サポートする音符の長さによってレベル分けする機能も付けました。 これもある程度ならうまくいくのですが、同じようなリズムで構成されやすい楽曲は、音符の長さだけではうまくレベリングできませんでした。 音符の長さ以外のフィルタリング要素が必要です。 そこでタップが急激に難しくなる和音を単音に置換することでレベリングするようにしました。

ただ色々な曲を遊んでみると課題はすぐに浮かぶものです。 短音符だけで構成される楽曲はタップしない時間が増えすぎてつまらない問題がありました。 そこで和音を減らすのではなく、単音符をレベルに応じて割合で残すようにしたところ、かなり面白さを感じました。 色々な楽曲を遊んでみた感覚では、長音符は 50% 残すと曲によっては忙しくなるので、25% くらいが良さそうでした。 単音符は EASY では 1/32 残して、NORMAL 1/16, 1/8, 1/4, 1/2 と割合をすこしずつ増やしていくのが良さそうでした。 リズムを感じない程度にごっそり削除しても、長音符の重要なリズムが残っているので、案外楽しめます。 ちなみに長音符と短音符を分けずに全体の割合だけでタイルを削除すると、規則性が薄くなって難しくなります。 簡単な長音符が十分に混ざっていることがゲームでは重要みたい。

さらに改良

上記までの改良でゲームとしては十分に遊べるようになりました。 あとは細かい部分の改善です。 長音符が邪魔して短音符が見えなくなることがあるので、タップしたらフェードアウトで削除するようにしました。 これが今までの音ゲーにはない感じで割と面白かったです。 自動生成されたタイルは、重なり合って隠れていることが多々あるので、ブロック崩しのような感覚が得られます。

たくさん遊んでみると、音符の密度があまりにも高い楽曲は割合で削除するのは、LUNATIC モードが制御不能になるとわかりました。 LUNATIC なので良いかな…と思わなくもないのですが、もはや連打しているほうがマシになってしまい、単純につまらないので変更を加えました。 人間が認識できる数、タップできる数には限界があるので、時間あたりの密度で難易度を変更するようにしてみました。 正確に計算すると大変なので、音符数 / 演奏時間で密度を計測した後に、単音符を難易度ごとに一定の密度になるようにしました。 密度もなるべく一定になるように、MIDI の音符を開始時間でソートしてタイルを生成します。 これなら理不尽に難しい楽曲はなくなり、不満の生まれない難易度になります。 密度の基準としては、両手をきっちり扱うピアノがだいたい 6 notes/sec とわかっているので、それを基準としました。 一般的に音ゲーよりピアノのほうが音符の密度が高いので、大半のユーザーにとって 6 notes/sec は音符が多すぎるとわかります。 そこで LUNATIC を 3notes/sec になるように調整し、0.5 ずつ密度を下げると、NORMAL が 1notes/sec になります。 NORMAL はすこし簡単めの曲を片手のピアノで引く感覚に近いと良いのではないかと思っていたので、確認したところちょうどに感じました。 この方式だとレベリングが容易で、意外と面白いようにも感じたので、現状ではこの方式を採用しています。

短音符は判定が厳しすぎて得点が難しいので、最低サイズを平均サイズと同様まで大きくしました。 短音符が連続していると重なり合って見た目上は難しくなることもあるのですが、判定が厳しくてタップできないよりはマシです。 よりブロック崩しのような感覚でプレイできるようになったので、個人的には好印象でした。 Tip Tap Notes にも同じ機能を入れてみたのですが、 クラシックだと同一楽器で音が被ることはほぼないのに、連符が重なって見にくかったのでやめました。現代曲のみ適しています。

まとめ

改良の結果、だいぶ面白くなったので、Tip Tap Rhythm としてアプリ化しました。 タイルは MIDI からタップが面白そうな楽器を抽出して自動生成するため、どんな MIDI ファイルでも遊べるのが特徴です。

あと特徴と言えるほどではないですが、最近の音ゲーは画面がピカピカなのに対して、ほぼ白黒で作ってます。 ゲームとしてはピカピカのほうが良いでしょうが、教育用途だとモノクロが基本ですよね。 モノクロな音ゲーってないよなあと思ったので、これはこれで良いかも知れません。 モノクロだと味気がないので、目の優しさを意識しながらカラフルにする機能も付けてみました。 他にも見栄えを考え始めると色々やりたいことはありますが、 ブラウザゲーなので CSS がわかる人は勝手に見た目を変えられる利点は元からあります。 たとえば私は背景画像を変えて遊んでみていますが、なかなか良いです。 他にもエフェクトを派手にしてもいいかなあとは思っていますが、今は付けていません。

Tip Tap という名前はゴロが良かったので適当に付けたのですが、Tip には先端という意味があります。 音符の先端をタップするゲームなので、ゲームにもマッチしていて悪くないです。 アイコンが思い付かなかったので、Tip Tap Rhythm と、 Tip Tap Notes は色が違うだけです。

0 件のコメント:

コメントを投稿