WonderWitch.Com ■TOPネタ
・技その27「PCMボイスの再生」
「再生中の処理落ち」の検証

掲示板にて、「voice_play関数を使うと処理落ちする」という書き込みがありましたので、検証してみました。
まず、素材となるWAVファイルは、Windowsの「サウンドレコーダー」でサンプリングしました。マイクに喋って、録音しています。
【Download】“voice.wav”(12khz/8bit/モノラル)


それから、「小技その10」で紹介した「A列車でGO!」を改造して、PCMボイスの再生機能を付け加えてみました。敵を撃ち落とすと「どっかーん」と喋ります。
【Download】「A列車でGO!(爆発音をボイスにしたバージョン)」(lzhファイル/WonderWitch用/“ago.fx”と“voice.fr”をWonderWitchに転送して遊んでください)

、、、で、何回か「どっかーん」と鳴らしながら遊んでみましたが、処理落ちしてるかどうか、よくわかりませんでした。

処理落ちについてですが、対策としてループ内の「処理の負荷を減らす」か、「処理の周期を遅くする」方法が考えられます。負荷を減らすには、たとえば「スペラン-X」のキャラクター移動では、「1周ごとに1ピクセル動かす」ところを、「2周ごとに2ピクセル動かす」よう変更したりしています。こうすると、動きがカクカクしてきますが、(液晶表示が遅い)携帯ゲーム機では、処理を間引いても全く気になりません。

あと、以下のように「処理が重くなったら、ウエイトをしない」という方法があります(たいしたテクニックじゃないですが)。
・チック時間をバックアップする。
・処理を行う。
・もし、バックアップ時間と現在のチック時間が一緒なら、ウエイト(sys_wait関数呼び出し)する。

【Download】「A列車でGO!(処理落ち防止?バージョン)」(lzhファイル/WonderWitch用)
こちらがその処理を組み込んだ対策版です。ただ、もともと処理落ちしていないっぽいので、その効果のほどはよくわかりません。

あと、タイマ割り込みで、処理の同期を取る方法がありますが、技術的にイロイロ難しそうです。処理落ち対策について、もっといい方法をご存知の方はご連絡ください。

■TOP ▲BACK >NEXT

Presented by WonderWitch.Com 運営委員会