音楽ベースのゲームを作成しようとしています (「私の歌うモンスター」に似ています)。アイデアは、シーンからいくつかの異なるキャラクターを配置および削除できるシーンがあるということです。各キャラクターには、そのための固有の mp3 ファイルがあります。歌う。
私は cocos2dx でゲームを構築していますが、サウンドについては、現在 Android で MediaPlayer API を使用しているカスタム エンジンを使用しています。すべてのサウンドを同期させるために、シーンがロードされたときにすべてのサウンドを再生し、シーンにいるキャラクターに応じてミュートおよびミュート解除します。問題は、古いデバイスではサウンドが同期していないように見えることです.mp3ファイルをロードする前に、それらを事前にキャッシュする方法が必要だと思います.
すべての mediaPlayers を事前に作成して prepare() メソッドを使用してから、それらをハッシュマップに保存し、シーンが開始されたときに play() を使用してすべてを再生しようとしました。残念ながらそれは機能せず、トラックはまだ同期していません。MediaPlayer の仕組みがわからないので、事前に作成しようとすることが事前キャッシュに相当するかどうかはわかりません。標準の cocos2dx サウンド エンジンはサウンドプールを使用しますが、これは大きなファイルには適していないことを理解しています。また、キャッシュ メカニズムがあるかどうかもわかりません。Ios では、openAL を使用するサウンド エンジンが既にあり、テストした ipad 4 では問題なく動作しました。
トラックを同期するにはどうすればよいですか? 別のサウンド エンジンを実装しますか? おそらくopenSLに基づいていますか?または、何らかの方法でタイマーを保持し、それを使用してトラックを同期します。
すべてのトラックを同期させることが最も重要なゲームのサウンドをどのように設計しますか?