年明けから多忙です。仕事が(^▽^;)
まさかこの我輩が仕事に追われるとはまさかまさか・・・。
気づいたら日記書いてなかったです。
ところで表題の件ですが、
ゲームプログラムにおいて、
効果音の再生は、Update処理でするものかな。それともDraw処理かな。
ということが気になりました。
私は、今まで特に何も考えず、
Updateで再生(DXライブラリならPlaySoundMem)するようにプログラミングしていましたが、
よくよく考えると、絵の見え方と効果音がぴったし同期してないと気持ち悪いんじゃないだろうかと思い始めました。
例えば、太鼓の達人みたいなやつ、あれは、
バチで叩く絵が目に見えるタイミングと、
バチで叩く音が耳に聞こえるタイミングがちょっとでもズレると気持ち悪くなるように思います。
・・・と考え始めたら、なにも音ゲーに限らず、全部のゲームがそのような気がします。
(絵と音がズレたら気持ち悪い)
はて、みんなどうやってるんだろうか。
Drawで再生するのかな。
Updateで再生するのかな。
考え始めると気になってソワソワしてしまいます。
仕事どころじゃないです。
だから、そのうち1か月くらい有給休暇を取ってやろうと思います。
ゲームの効果音の再生タイミング
Re: ゲームの効果音の再生タイミング
プレイヤーの入力とゲーム側の応答である程度の時間差があると不快になるんだと思います。
でもそれが「Draw(Update)で再生するとずれてもう一方だとずれ無しに再生される」根拠になるのかというと、そうは言えないような気がします。上手いこと手が加えやすいようにSEの再生だけ分離する・分離できるように、重い処理を避けたり発見しやすく書いていこうと思いました(小並感)
でもそれが「Draw(Update)で再生するとずれてもう一方だとずれ無しに再生される」根拠になるのかというと、そうは言えないような気がします。上手いこと手が加えやすいようにSEの再生だけ分離する・分離できるように、重い処理を避けたり発見しやすく書いていこうと思いました(小並感)
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
Re: ゲームの効果音の再生タイミング
updateでならそうが、drawでならそうが、どっちみちユーザーに新しい絵が見えるのはScreenflip()次第で変わるのでdrawに関係ない処理はupdateですべきじゃないですかね。
Re: ゲームの効果音の再生タイミング
(「音を鳴らしたいです」 → 実際に音が鳴る
までの時間差とかもどんだけあるのかわからないから
タイミングがどうのとかシビアに考えるのをやめることにしよう.
処理がそんなに重くなければ ほとんど問題にならない ことを期待しよう.そうしよう.)
までの時間差とかもどんだけあるのかわからないから
タイミングがどうのとかシビアに考えるのをやめることにしよう.
処理がそんなに重くなければ ほとんど問題にならない ことを期待しよう.そうしよう.)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
Re: ゲームの効果音の再生タイミング
もう少し詳しく書くと、Draw直後のScreenflip()でフリップ後にGPUが描画を開始、更に次のScreenflip()で初めて画面表示、この後モニタで遅延して何フレームも遅れて人間の目に届きます。
と言うことで、update()だ。draw()だに差はありません。
あと脳は絵と音のズレは自動補正する能力があるので、結構ズレても気になりません。
http://www.aist.go.jp/aist_j/press_rele ... 30227.html
と言うことで、update()だ。draw()だに差はありません。
あと脳は絵と音のズレは自動補正する能力があるので、結構ズレても気になりません。
http://www.aist.go.jp/aist_j/press_rele ... 30227.html
Re: ゲームの効果音の再生タイミング
絵と音のズレは無意識に補正しますが、一定のリズムを奏でる上で音と音の間隔のズレには敏感です。
マッハバンドのように視覚にも同様のことが言えます。
マッハバンドのように視覚にも同様のことが言えます。
Re: ゲームの効果音の再生タイミング
>zxcさん
どうもこんにちはっ!
不快さを避けるために、良いプログラムを書くことを心がけることが大事ですよね(^_^)
>Dixqさん
どうも!いつもこのフォーラムにお世話になっております(^▽^)
おっしゃるとおり、絵が見えるタイミングはDrawではなくScreenFlip()によりますね。
私もDrawにコーディングするのは極力避けたかったので、
いまのままUpdateで再生というロジックにしておこうと思います。
>usaoさん
まいどどうも~!
そして、あとは期待しようってことですね。
日頃の行いがよい私なら、きっと神様がなんとかしてくれそうです(^ー^)期待しよう。
>softya(ソフト屋)さん
いつもお世話になっております(^_^)
存じませんでした。貴重な情報ありがとうございます。
Upadateで再生というロジックのままでも安心して進めていけそうに思いました。
>ISLeさん
どうもどうも(^▽^)ヾISLeさんにはお世話になりっぱなしです。
そうか、効果音を再生したい周期が一定なときは要注意ですね。
ありがとございます!
皆さんからいただいたコメントを元に、
私が導き出した結論としては、ユーザーから「なんかいつもと違う(オレの知ってるゲームと違う)」って思われないように、
気を付けてプログラムを書くことが大事である、ということになりました(^▽^) みなさんありがとうございました!
どうもこんにちはっ!
そうですね!zxc さんが書きました: プレイヤーの入力とゲーム側の応答である程度の時間差があると不快になるんだと思います。
不快さを避けるために、良いプログラムを書くことを心がけることが大事ですよね(^_^)
>Dixqさん
どうも!いつもこのフォーラムにお世話になっております(^▽^)
おお、そうでした。Dixq (管理人) さんが書きました: どっちみちユーザーに新しい絵が見えるのはScreenflip()次第で変わるので
drawに関係ない処理はupdateですべきじゃないですかね。
おっしゃるとおり、絵が見えるタイミングはDrawではなくScreenFlip()によりますね。
私もDrawにコーディングするのは極力避けたかったので、
いまのままUpdateで再生というロジックにしておこうと思います。
>usaoさん
まいどどうも~!
それですね。重い処理をさせない、重い処理があるようなら工夫する。usao さんが書きました: 処理がそんなに重くなければほとんど問題にならないことを期待しよう.そうしよう.
そして、あとは期待しようってことですね。
日頃の行いがよい私なら、きっと神様がなんとかしてくれそうです(^ー^)期待しよう。
>softya(ソフト屋)さん
いつもお世話になっております(^_^)
なんと!そのような能力が我々人類に備わっていたとは…。softya(ソフト屋) さんが書きました: あと脳は絵と音のズレは自動補正する能力があるので、結構ズレても気になりません。
http://www.aist.go.jp/aist_j/press_rele ... 30227.html
存じませんでした。貴重な情報ありがとうございます。
Upadateで再生というロジックのままでも安心して進めていけそうに思いました。
>ISLeさん
どうもどうも(^▽^)ヾISLeさんにはお世話になりっぱなしです。
おお、なるほど。これまた勉強になるお話です。ISLe さんが書きました: 一定のリズムを奏でる上で音と音の間隔のズレには敏感です。
そうか、効果音を再生したい周期が一定なときは要注意ですね。
ありがとございます!
皆さんからいただいたコメントを元に、
私が導き出した結論としては、ユーザーから「なんかいつもと違う(オレの知ってるゲームと違う)」って思われないように、
気を付けてプログラムを書くことが大事である、ということになりました(^▽^) みなさんありがとうございました!