[過去ログ] ゲームプログラミング相談室【Part5】 (970レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
393(6): 03/11/08 21:38 ID:eeIVVo6R(1/4) AAS
質問です。
timeGetTimeの返す値って、PC起動してから時間が立つほど不正確になるもんなんですか?
Cで音ゲーを作っていて、メッセージループはポーリングにしてます。
で、降ってくるモノとかの移動距離を
「(今のtimeGetTime()の値 - 前回ループ時のtimeGetTimeの値)/1000*1秒間に移動したい距離」
のようにして算出しているのですが、
PC起動してから長時間たっていると、動きがガクガクするのです。
省1
398(1): 03/11/08 22:59 ID:5O2oS72Q(3/3) AAS
なんかありえないなぁ。
逆行したってことは、timeGetTime()の値が逆行したってことだよね?>>393の計算方式なら。
とりあえず、timeGetTime()のログでも取っておいて本当に逆行してるのかを確かめたほうがいいね。
(違うところが原因のような気がするけど…)
>ポーリングの場合の移動量の算出方法って、↑以外にもあるんでしょうか?
1秒あたりの画面更新回数を一定に保って(60回とか)、
毎回「1秒間に移動したい距離/更新回数」を座標に足すという方法。
省1
399(2): 393 03/11/08 23:10 ID:eeIVVo6R(4/4) AAS
今、
timeGetTime()の値が前回と同じなら"a"を、
値がければ改行とその値をログに出すようにしたところ、
tgt=[3113327.000000]aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
tgt=[3113343.000000]aaaaaaaaaaaaaaaaaaaaa
tgt=[3113390.000000]aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
tgt=[3113405.000000]aaaaaaaaaaaaaaaaaaaaa
省14
400(2): 03/11/08 23:23 ID:/QRkzjvM(1) AAS
>393
ム板からこんにちわ
とりあえず
>「(今のtimeGetTime()の値 - 前回ループ時のtimeGetTimeの値)/1000*1秒間に移動したい距離」
このあたりの完全なソースを晒すべし。
ひとつだけ言えるのは、直線を移動するだけなら
「ある時間(今-前)で移動する距離」を加算していくより、
省4
402(1): 393 03/11/09 11:53 ID:WRV9yPc0(1/3) AAS
AA省
403: 393 03/11/09 12:25 ID:WRV9yPc0(2/3) AAS
現在、起動後13時間ほどたっているがカクカク具合は起動時と大してかわらず…。
UD起動してなかったのが関係ありそう。
>>400
わざわざム板からありがとうございます。
>絶対時刻(今-基準時間)から位置を計算した方が誤差が少ないかと。
やってみます。オブジェを最初に表示したとこを基準にするか。
>表示位置はサウンドデータの再生位置を取得した方が正しいように思える。
省11
406: 393 03/11/09 13:23 ID:WRV9yPc0(3/3) AAS
>>404
最終的に座標(floatで持っている)の計算に使うから、最初からfloatにしてしまっていました。
ソース見直して、timeGetTime関係はすべてDROWDに直し、float使うのは座標の計算のときだけにして、
Sleep(1)もいれると、カクカクがだいぶ改善されました(完全になくなってはいない。)
>環境のせい
おっしゃるとおりです…。まだまだヘボプログラマーだなぁ。
sleepとSleepがあるとは知りませんでしたよ。
省2
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s