1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

リズムゲーム(音ゲー)を作って気づいたこと

Last updated at Posted at 2025-12-17

この記事はUnreal Engine(UE) Advent Calendar 2025 18日目の記事です。

こんにちは かぶ小屋です!
2025年は個人的に密度の濃い年だったので
「ようやく年末か…」という思いでいっぱいです。
生きぬいてえらい!

プロローグ

今年は主に職場の方が作ったリズムゲーム、いわゆる音ゲーのブラッシュアップ作業をしていました。

日本語のリズムゲームのチュートリアルがほぼ無かったのでめっちゃ苦労しまして…
そもそも音ゲーをそのままMusic Gameと訳して何も引っかからずRhythm Gameで探してようやくHitし始めたまである…(日本育ちなのに和製英語苦手)
最終的に要領がつかめればこっちのもん、と言わんばかりにいろんなバリエーションをつくることができました。
今回は備忘録も兼ねて気づいた点・工夫した点を書いていきます。

デモンストレーション

素材やUIは元々のものを引き継ぎ以下の点に注力しました

  • BPMを体感しながら進行する
  • 他の楽曲に入れ替えやすい

参考にしたチュートリアル

Unreal Engine - Rhythm Game using MetaSound Cues(英語)

Unreal Engineの基本機能だけで完結するチュートリアルはこれだけだったのでは?と思います。
有料プラグインを使うものが多かった印象です。

土日の2日間で音ゲーを作ってみた記録 by Bigswamp a.k.a.だいふく さん

本文はUE4ですがUE5でも応用が利き
見た目や動きの仕組みの参考になりました。

他にもスペイン語や中国語のチュートリアルも参考にした気がするのですが…
たくさん見過ぎて覚えてません…すみません :sweat_drops:

苦労したポイントと対処

使用楽曲はリズムゲーム用に作ったオリジナル

著作権が、とか元ミュージシャンだから、というのもありますが
それ以上にノート生成からヒットポイントに到達するまでのタイムラグを考えるのが面倒くさいな大変だなーと思いました。

図にするとこんな感じです
image.png

スタートからすぐに音符(以下ノート)を生成してもHit Pointの地点に到達するまでのタイムラグが発生します。
試行錯誤しましたが発生音とHit Pointを同期させる方法が見つからず
イントロを8小節(16拍)・アウトロ(エンディング)8小節(16拍) のオリジナル曲に音符を生成することにしました。

制作時のBPMを用意したり曲調にある程度の制約がついたりしますが
プレイヤーに極力違和感を与えずゲームを進行できます。
image.png

音楽的要素を使った制御

音ゲーはリズムゲームと言うだけあり
音楽理論を使って考え方で実装を考えるとものすごくしっくりくるので
スピードや編成など音楽理論を用いて制御していきました。
ちょっと音楽理論の話になりますがお付き合いください。

音楽の一般的な楽譜にはという単位があります
基本の拍子が4/4拍子なら1小節につき4拍という考え方をします。
一般的な楽曲は4小節単位で区切るものが多いのでSpawnPointからHitPointへの到達時間を4小節=16拍で統一するように設計しました。

BPMについて

BPMはBeat Per Minutesの略で1分間に何拍ビートを打つという意味=テンポの目安になります
例えば BPM120の場合、1分間に120拍ビートを打つので

60÷120=0.5

1拍につき0.5秒という計算式が成り立ちます。

Note自身にSpawnされたらSplineに沿ってヒットポイントに向かうようなカスタムイベントを持たせていて
HUDにBPMの数値を変数で持たせて図のように計算してSpline上を渡るスピードを入力しています。
(もっと賢い方法があるのかもしれませんが自分のセンスではこれが限界… :droplet: )
image.png

ちなみに4小節を計算する部分が16.8になっているのは単純にHit PointからDestroy Pointまでの距離を足しているからです。
(なぜ0.8なのかは計算と検証を何回もして割り出したんだけど割り出し方法忘れました…すみません)
image.png

ノート(音符)生成の仕組み

ノートはMetaSoundがキューポイントを受け取ったときSplineを持つBluePrintのWatch Outputノードにデータを流し
Watch OutputのCustom EventからNoteを生成する仕組みになっています。
こちらは最初の英語のチュートリアルを参考にしました。
image.pngMetaSound側
image.pngBP_Spline(BluePrint)側

最初はチュートリアル通り1.の方法でキューポイントを作っていましたが
『もしかして…』と思いあと2種類の方法を試したらうまく行ったので合わせてご紹介します。

1. wavファイルに直接Markerを付ける

最初に挙げた英語のチュートリアルで紹介されていた方法です。

DAWや音声編集ソフトにはMarker(マーカー) という機能があります。
通常はここがイントロ、ここがサビ…みたいにMarkerで目印をつけてマーカーリストとかでジャンプする、みたいな使い方をします。

Markerはmetaデータとして音声ファイルと一緒に書き出すことが出来るのでこの性質を利用した方法です。
DAWや音声編集ソフトでトリガーにしたいポイントにMarkerを付け、書き出したwavファイルをUEにインポートしUEのMetaSoundにMarkerのタイミングを読ませノートを生成するという手順です。

Marker付データの書き出しはReaperというDAWを使いました。
Reaperは無料でできる範囲が多く価格も安くて買い切り(2025/12/18時点/個人・小規模商用利用向けが60ドル)
Pythonが使えればさらに拡張性が高くなるのでゲームのサウンド職に就きたい方は使えた方が良いかも?という印象のDAWです。
image.pngReaperの画面。赤い線がMaker
image.png
File>BatchFile/Item Comberter でマーカーを書き出す設定をしてCombert Allをクリック!

ショートカットを使えば楽曲を再生しながらマーカーが付けられるので
マーカーを付ける作業が早く終わりました。
マーカーの位置を後で微調整がしやすいのも利点です。

しかし4レーン分作るとファイルが重くなり、同時に4つ同じ音を再生すると音が大きくなるので
残り3トラック分ボリュームを0にするなど無駄な作業が多いなーという印象を持ちました。

マーカーを付けるのにAudacityじゃダメなの?って疑問が来そうなので追記:
普段、自分も音声編集にはAudacityというかなり優秀なフリーソフトを使っているのですが
Markerの扱いが他のソフトと違うため検証の結果、Marker付き音声データの書き出しは難しいという結論に至りました。

2. MIDIでキューポイントを作りHarmonixで読み込む

スタンダードMIDIファイルを別途用意し、MetaSoundとHarmonixを使いキューポイントを生成する方法です。
image.pngMIDIファイルをReaperで開いた
image.png
MetaSound側、wavファイルの再生とMIDIファイルからキューポイントを取得するパートが分かれている
BP_Spline(BluePrint)側のノードの組み方は1.と同じです。

楽曲制作者がMIDIでトラックを作っている場合は原曲を見ながらキューポイントの作成ができる
複数のトラックのバランスを見ながらキューポイントの作成ができる
という利点があります。

3. CRI ADX LEを使ったキューポイントや音声の制御

CRI ADX LEとはサウンドミドルウェア・CRI ADXの無償版です。
以前からいつか使おうと思っていたのですが
いつかって、今でしょ!
ってふと思い、いい機会なので使ってみました。

最初にCRI Atom Craftというサウンド制御ソフトで音声データにマーカーをつけて書き出しUEにインポート。
マーカーのデータを元にノートを生成しました。
image.pngCRI Atom Craft側の画面 ピンク色の線がマーカー
image.pngBluePrint側のノードが一番シンプル。

音を聴きながらマーカーが付けられず最後はスプレッドシートでタイムを逆算しながら4トラック分のマーカー作りました 😵‍💫
1990年代、MIDIを数値入力していた頃に引き戻された感覚がしました。
もっと賢く、もしくは直感的にマーカーをつける方法があるのかもしれません…
(今年はこのオチが多い…あ、毎年だ😜)

まとめ

取り掛かったときは驚くほどリズムゲーム(音ゲー)の日本語チュートリアルって少ないな という印象でした。
Udemy講座とか作ってみようか。(ステマ)

個人的には音楽を合わせたゲームはリズム天国やHi-Fi Rushみたいなノリが好きなので
アイデアはあるけど実装できない方のご相談もお待ちしてます。(ステマその2)

毎年言ってる気がするけど来年こそは
念願のバーチャルワンマンライブに向けてXRの開発もっとしたいです!
そのためにも機材を新調できるようにがんばらなければ!
(今も相棒は初代Quest)

この記事がクリスマスに自作トラックのリズムゲームで盛り上がりたい!というあなたの一助になれば幸いです。
良き年末年始を!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?