16
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AkatsukiAdvent Calendar 2016

Day 18

音ゲーの同期方法について考察した

Last updated at Posted at 2016-12-18

この記事は Akatsuki Advent Carender 2016 18日目の記事です。

はじめに

初投稿となります、@nom3nanです。
アカツキで新卒エンジニアやってます。

普段から音ゲーが好きで、太鼓なやつとかポップなやつとか遊んでいたり、スマホでも色々と遊ばせてもらってます。
音ゲーを作るとなると、大切なところはやはり音楽との同期処理だと思います。
最近は音楽に合わせて演奏する以外にも、リズムに合わせて戦ったりパズルしたり、いろんな音ゲーが出てきました。
今回は、そんな様々ある音ゲーに合わせて、音楽とゲームの同期方法について考察しました。

同期処理の種類

一口に同期といってもいくつか方式が思いつきます。

  • 音楽に合わせてゲームを同期する方式
  • ゲームに合わせて音楽を同期する方式
  • 時間軸に対して同期する方式

何れにせよ、一番大切なことは音楽に合わせてリズムゲームが進行することです。
何も障害が起きなければどの方式でも大丈夫なのですが、時には処理落ちが発生し描画が遅くなったり音楽が止まったりすることも考えられます。
よって、各ゲームにおいてどの方式が適切であるかを各方式のメリット・デメリットを考えながら考察していきます。

音楽に合わせてゲームを同期する方式

音楽の再生時間を取得し、リズムゲームの進行を同期させる方式です。
直球的でまさに音楽ゲーム、と言う感じの同期方法だと思います。

メリットとしては、音楽・ゲームどちらかに処理落ちが発生してもタイミングを合わせることが出来ます。
同期を取っているため当たり前ですね。

デメリットとしては、ゲームが処理落ちした場合、同期をとる瞬間に処理をスキップしなければいかず、ユーザにとって理不尽なスキップや早送りが発生してしまいます。

ゲームに合わせて音楽を同期する方式

リズムゲームの進行に合わせて音楽の再生を同期させていきます。
これは先程の逆で、ゲームの進行を軸に音楽を同期させる方式です。

メリットとしては先程と同様、処理落ちが発生してもタイミングを合わせることが出来ます。
デメリットは、ゲームの処理落ちに合わせて音楽も止まってしまうため非常にリズムか取りづらくなります。

時間軸に対して同期する方式

3つ目は、時間軸に対して処理を同期させる方式です。
音楽は音楽、ゲームはゲームで時間に対して同期を取り、音楽とゲームのタイミングを合わせます。

メリットは、先ほどと異なりそれぞれが時間軸を持っており、処理落ちが発生してももう片方が引きづられてリズムが崩れることはありません。
デメリットは、音楽とゲームの間で直接的な同期を取っていないため、一度ズレるとゲームが終了するまでタイミングがズレたままになります。

各同期方法のまとめ

方式 メリット デメリット
音楽に合わせゲームを同期 音楽とゲームがズレても修正できる ゲームの早送りやスキップが発生
ゲームに合わせ音楽を同期 音楽とゲームがズレても修正できる 音楽のテンポが狂う
それぞれが時間軸に同期 フレームスキップが起きない 音楽とゲームのズレを修正できない

結局どれが良いのか

先に結論を言えば、音楽に合わせてゲームを同期する方式もしくは時間軸に対して同期する方式の2択で、状況において使い分けだと思います。

一般に、音楽の再生とゲーム処理では、ゲーム処理のほうが処理落ちが発生しやすいです。
主に描画処理がネックになります。
そのためゲームに合わせて音楽を同期する手法は、音楽は正常に再生できるはずなのに描画のせいでリズムを狂わせる回数がむやみに増えてしまうため、あまり良い手法とは言えません。

残りの2つに関しては、作るゲームや環境に合わせて適切な手法を選ぶことが大切かと思います。
例えば、音に合わせてパズルしたり戦ったりダンジョン入ったりするような、ゲーム部分が長時間続くような音ゲーはリズムの同期がズレることは致命的です。
ですので、音楽に合わせてゲームを同期する方式が適していると言えます。

音楽に合わせて演奏する様なゲームは処理落ちによるリスクが、「ゲームのリズム崩れ」と「ゲーム・音楽のズレ」との兼ね合いになるため判断に迷います。
別の観点で考えた時、「アーケードやコンシューマなど」と「スマホやPCなど」を比較すればスペックのばらつきを考慮することができます。

安定して動く環境があるのであれば、無理して同期させる必要はないため時間軸に対して同期する方式が良いかと思います。
逆に安定した環境でないのであれば、音楽とタイミングを合わせることが大切で音楽に合わせてゲームを同期する方式が良いかと思います。

ゲームの時間 動作環境 おすすめの方式
長時間 - 音楽に合わせてゲームを同期する方式
短時間 安定 時間軸に対して同期する方式
短時間 不安定 音楽に合わせてゲームを同期する方式

さいごに

どの同期方式が良いか、に関しては各方式の特徴と作りたいゲーム、環境などに合わせて適切に判断して選択する必要があると思います。
あくまで、自分が考えたおすすめを載せていますが参考にしていただければ幸いです。

16
9
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
16
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?