WonderWitch.Com
■TOP>ネタ |
「再生中の処理落ち」の検証 掲示板にて、「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用) こちらがその処理を組み込んだ対策版です。ただ、もともと処理落ちしていないっぽいので、その効果のほどはよくわかりません。 あと、タイマ割り込みで、処理の同期を取る方法がありますが、技術的にイロイロ難しそうです。処理落ち対策について、もっといい方法をご存知の方はご連絡ください。 |