パフォーマンスが重視される iPhone ゲームにサウンドを追加したいと考えています。主な選択肢は (1) AVAudioPlayer
、(2) オーディオ キュー、(3) OpenAL の 3 つくらいあるようです。サンプルを再生するためだけに低レベルのコードを何ページも書きたくないので、 を使用したいと思いますAVAudioPlayer
。問題は、 を使用するとパフォーマンスが低下するように見えることです。 を使用して簡単な測定を行ったところCFAbsoluteTimeGetCurrent
、play
メッセージが完了するまでに 9 ~ 30 ミリ秒かかるようです。25 ミリ秒 == 40 fps であることを考えると、これはかなり悲惨です。
もちろん、prepareToPlay
処理速度を上げる方法があります。そのため、いくつかのAVAudioPlayer
サンプルを保持し、事前に準備して、準備したプレーヤーを使用してサンプルを再生する簡単なクラスを作成しました。それでも、前述の約 20 ミリ秒かかります。
このようなパフォーマンスはゲームには使えません。では、iPhoneでまともなパフォーマンスでサウンドを再生するには何を使えばいいのでしょうか? で何か間違っているのでしょうかAVAudioPlayer
? サウンドをAudio Queuesで再生していますか?(2.2が出る前にAVAudioPlayerに似たものを書いたことがあるので、その経験を残しておきたいです。) OpenALを使用していますか?もしそうなら、単純OpenAL でサウンドを再生する方法はありますか、それとも何ページものコードを書く必要がありますか?
アップデート:はい、OpenALでサウンドを再生することはかなりシンプル。
ベストアンサー1
AVAudioPlayer はゲーム オーディオには非常に限界があります。いずれかの例を適用して AudioQueue または OpenAL に取り組むのが間違いなく最善の方法です。その方がレイテンシーをはるかに制御しやすくなります。