HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0916
pumpkin正確な時間を計る8解決


pumpkin

リンク

2015/9/16(Wed) 07:24:56|NO.71725

タイムアタック系のゲームを作ろうと思っています
今まではrepeat、loopするたびに変数に加算していって、それをタイムにしていたんですが
それだと正確な時間にはならないなと思ったので…

正確な時間を計るような命令とかないですか?



この記事に返信する


skyblue

リンク

2015/9/16(Wed) 16:28:55|NO.71731

タイマーAPIはありますがOSの仕組み上完全に正確なのはありません。



スペース

リンク

2015/9/16(Wed) 16:44:43|NO.71732




pumpkin

リンク

2015/9/16(Wed) 21:13:07|NO.71744

もう少し質問いいですかね?
時間を計ることと関係があるかは分かりませんが…

wait命令とawait命令の違いがよく分かりません。
>wait命令と似ていますが、 await命令は前回waitした時間からの待ち時間を指定します。
>これにより、描画速度の違いなどから時間が早く過ぎることを防止することができます。
ヘルプにはこう書いてあったのですが、これがどういう事なのか想像しづらいです。

多少ズレがあってもいいので、repeatするたびに変数に加算していき、それをタイムにする方法をとります。
wait命令のヘルプに
>await命令を使うとwait命令よりも高精度で細かいウエイトが可能
とあるので、この方法もawait使った方が良いということでいいですかね…



b

リンク

2015/9/16(Wed) 21:26:09|NO.71745

>wait命令とawait命令の違いがよく分かりません。
簡単です。
waitは10ms (10ミリ秒)ごとawaitは1msごとに処理を待機させます。
awaitのほうがwaitより1/10倍の待機時間です。

つまり
wait 1 = await 10
ということ



GENKI

リンク

2015/9/16(Wed) 22:10:41|NO.71746

個人的にはd3timer命令がお手軽でおすすめです。

#include "d3m.hsp" t1 = d3timer() mes "" + t1 + " msec" await 1000 t2 = d3timer() mes "" + t2 + " msec" t = t2 - t1 mes "経過時間:" + t + " msec"



motchy

リンク

2015/9/16(Wed) 22:16:24|NO.71747

>wait命令と似ていますが、 await命令は前回waitした時間からの待ち時間を指定します。
>これにより、描画速度の違いなどから時間が早く過ぎることを防止することができます。

>ヘルプにはこう書いてあったのですが、これがどういう事なのか想像しづらいです。

私の理解では、例えば wait 3 とあれば wait 命令が発動されたその瞬間から素直に 30ms 待つわけで、
await 3 とあれば前回 wait/await 命令が発動した瞬間から 3ms 経過するまで待つということです。
(待ち時間の尺度が10倍違うということは b さんの指摘するとおりです。)

まぁ、await に関しては実際の処理時間が長すぎる場合は設定した時間よりも遅いループになりますが。


repeat /* 何らかの処理 : 所要時間 5ms */ await 20 loop
このループは 20ms 間隔で回ります。(理想的に)

一方、


repeat /* 何らかの処理 : 所要時間 5ms */ wait 2 loop
このループは 25ms の周期で回ります。(理想的に)



motchy

リンク

2015/9/16(Wed) 22:19:34|NO.71748

追記。

「"前回"waitした時間から...」とありますが、"初回"は多分、即時発動でしょうね。
要するにループの入り始めとかです。と言っても、あまり気にならないと思いますが。



pumpkin

リンク

2015/9/17(Thu) 19:16:27|NO.71767

つまりawaitは処理時間も含めた時間を指定できるわけですね…
ということは時間じゃなくてカウントなら…正確にできますね

時間にこだわることもないので、カウントでタイムアタックゲーム作ることにします
分かりやすい回答ありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.