Millisekunden
Übersicht

MedaBetreff: Millisekunden |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
bei der Suche nach einer geeigneten Sprache für mein Spiel bin ich auf blitzbasic gestoßen. Um mir sicher zu sein, ob es wirklich für mein Projekt geeignet ist, habe ich eine Frage zum Thema "Millisekunden". Wie bei den meisten Sprachen gibt es einen Befehl zum Abfragen der Millisekunden, die seit dem Start von Windows vergangen sind. Allerdings ist die Genauigkeit trügerisch, denn z.B. bei Pascal ist die Abfrage nur auf etwa 1/200 Sekunde genau, obwohl sie eigentlich auf 1/1000 genau sein sollte. Für die allermeisten Spiele reicht auch 1/200 Sekunde, aber damit sind fließende langsame Geschwindigkeitserhöhungen (Bewegung alle 100ms, dann schon alle 99ms und so weiter) nicht möglich. In Delphi gibts zur Lösung dieses Problems HiRes-Timer, die manchmal funktionieren, manchmal aber auch nicht. Meine Frage daher: Wie schaut es mit blitzbasic aus? Ist da die Abfrage der Millisekunden tatsächlich auf 1/1000 genau, oder tritt da genau die selbe Ungenauigkeit auf wie bei anderen Sprachen? Danke Meda |
||
![]() |
mahe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habs gerade mit BMax ausprobiert.
Auf jeden Fall ist es auf 1/1000 genau wenn das Programm sonst nichts zu tun hat. Aber ich denke nicht, dass sich das bei Belastung ändert. |
||
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ, |
Meda |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mahe hat Folgendes geschrieben: Ich habs gerade mit BMax ausprobiert.
Auf jeden Fall ist es auf 1/1000 genau wenn das Programm sonst nichts zu tun hat. Aber ich denke nicht, dass sich das bei Belastung ändert. Z.B. Delphi zeigt auch 1/1000 Sekunden an, aber trotzdem ist es ungenauer. Das zeigt sich, wenn man ein Objekt mit irgendeiner "krummen" und relativ kleinen Zahl als Zwischenraum zwischen den Schritten laufen lässt - das Ding "ruckelt" manchmal. Oder wenn du einen genauen Intervall in ms abfragst und dann überprüfst, wie viele Ms wirklich vergangen sind. Da gibts dann ab und an große Ausreißer. Meda |
||
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also wenn man Intervalle abfragt, dann bekommt man manchmal 0, 1, 2, 3 etc. Millisekunden zurück.
Also um z.B. die Laufzeit von Funktionen zu testen, da schreibt man ja: Code: [AUSKLAPPEN] time = millisecs()
for i=1 to 1000000 MeineFun() next debuglog "Verbrauchte Zeit: "+(Millisecs()-time) Damit bekommt man, je nachdem wie Aufwendig die Funktion ist, schon den genauen Betrag zurück. Also fließende Bewegungen sind in BMax kein Problem, selbst wenn die Bewegung <1Pixel ist. Positionsangaben kann man ja durch Float weicher machen, und die DrawImage Funktion von BMax zeichnet Bilder auch auf 1/2 Pixel noch ein. (Also man sieht einen Unterschied zwischen 1 und 1/2 Pixel Veränderung). |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Das zeigt sich, wenn man ein Objekt mit irgendeiner "krummen" und relativ kleinen Zahl als Zwischenraum zwischen den Schritten laufen lässt - das Ding "ruckelt" manchmal.
Was aber nichts mit einer Ungenauigkeit von Millisecs zu tun hat. Der Screen wird ja mit einer gewissen refreshrate bedient, i.d.R. irgendwo zwischen 30 und 100 flips/Sekunde. Nehmen wir mal beispielsweise an dein Monitor liefert 60 Bilder/Sekunde. Nun willst Du deine Figur 100 Pixel pro Sekunde bewegen. 100/60 = 1.666667 Pixel pro Bildschirmaufbau. Wo ist deine Figur also jeweils ? durchlauf - reale Position - Gezeichnete Position 0 - 0 - 0 1 - 1.6667 - 1 2 - 3.3333 - 3 3 - 5 - 5 4 - 6.6667 - 6 5 - 8.3333 - 8 .... Du siehst, zwischen 3. und 4. durchlauf scheint die Bewegung zu stocken, da nur ein Pixel weiter bewegt wird, dies ist aber ganz normal. btw. fällt dieses Flickern spätestens dann nicht mehr auf wenn mehrere Objwkte bewegt werden und unser Auge abgelenkt ist. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group