frameunabhängig und delay

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

bjh

Betreff: frameunabhängig und delay

BeitragFr, Sep 09, 2011 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

ich hatte keine ahnung, wie ich das thema nennen soll. Wink

gibt es einen unterschied zwischen:
BlitzBasic: [AUSKLAPPEN]
timer=CreateTimer(60)
Graphics3D 0,0,32,1
SetBuffer BackBuffer()

While Not KeyHit(1)
RenderWorld

Flip 0
WaitTimer timer
Wend
End


und

BlitzBasic: [AUSKLAPPEN]
Graphics3D 0,0,32,1
SetBuffer BackBuffer()

While Not KeyHit(1)
timer=MilliSecs()

RenderWorld

Flip 0
Delay 16-MilliSecs()+timer
Wend
End


beides sollte ja die frames auf ungefähr 60 runterbringen.(tut es bei mir auch)

kann es sein, dass das mit delay besser ist als mit waittimer.
ich hab nämlich neulich im forum irgendetwas gelesen, dass irgendetwas mit waitimer is. Very Happy

naja, hoffe jemand weiß da was. Wink

Xeres

Moderator

BeitragFr, Sep 09, 2011 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~

Von Blitz3D nach Allgemein, da nichts 3D spezifisches.

Was soll mit Waittimer sein? Ich weiß jedenfalls nichts von Problemen.
Ich glaube, beide Möglichkeiten sind legitim, wobei delay als Endlosschleife womöglich den Prozessor belastet, während Waittimer dem System die Kontrolle überlässt.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragSa, Sep 10, 2011 0:02
Antworten mit Zitat
Benutzer-Profile anzeigen
achso

sollte ich dann lieber waitimer verwenden, um den prozessor zu schonen oder hab ich das falsch verstanden?

Xeres

Moderator

BeitragSa, Sep 10, 2011 0:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es grade nochmal getestet:
Bei sehr kleinen Werten für Delay sieht man keine Veränderung aber bei 1 Sekunde ist die Prozessorlast merklich.
Ein Timer mit 1 Sekunde Frequenz belastet die CPU nicht.

Selbst mit der geringen Zeit die Delay verbraucht, wird die CPU besseres anfangen können, das Standardwerk zum Thema liegt immer noch richtig Arrow Hurra, 100 % Auslastung
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragSa, Sep 10, 2011 0:27
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich schon mehrmals durchgelesen Very Happy
vielen dank für deine hilfe

ToeB

BeitragSa, Sep 10, 2011 1:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke auch das Waittimer andere Vorteile mit sich bringt. Es wird nämlich die anzahl der "übersprungenen" Frequenzen zurückgegeben, sodass diese Nachberechnet (simuliert) werden können. Auch denke ich das Waittimer zwar mit einer ganzzahligen Frequenz erstellt wird, es aber im Endeffekt genauere "Delays" setz (bzw. setzten kann). Und wie oben schon gesagt, es wird die CPU nicht so dermaßen beansprucht wie Delay Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

FireballFlame

BeitragSa, Sep 10, 2011 4:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ToeB hat Folgendes geschrieben:
Ich denke auch das Waittimer andere Vorteile mit sich bringt. Es wird nämlich die anzahl der "übersprungenen" Frequenzen zurückgegeben, sodass diese Nachberechnet (simuliert) werden können.

Das kann man aber auch mit Delay und Millisecs machen, und zwar wesentlich genauer Wink
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

ZEVS

BeitragSa, Sep 10, 2011 10:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kann auch WaitTimer und Millisecs kombinieren, das Ergebnis ist dann genauso genau wie bei Delay+Millisecs
BlitzBasic: [AUSKLAPPEN]
;intalisation
Local timer = CreateTimer(60), startTime = MilliSecs(), frameTime
Global speedFactor#
;/intalisation
;mainloop
WaitTimer timer
frameTime = MilliSecs()-startTime
startTime = MilliSecs()
speedFactor = frameTime/60
;einfach jede Bewegung *speedfactor und man hat ein genaues Ergebnis
;/mainloop

Dieses Delta-Timing ist zwar die effizienteste Methode, um Frameunabhängigkeit zu erreichen, durch mehrfaches Berechnen der gesamten Bewegung erreicht man aber als einziges realistische Werte, wenn KIs im Spiel sind.

ZEVS

PSY

BeitragSa, Sep 10, 2011 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho,

zu dem Thema gabs schon unzaehlige Threads, aber der folgende von ABREXXES deckt alles ab, was Du dazu wissen musst. Ist uebrigens in der FAQ und Tutorials Section zu finden:

https://www.blitzforum.de/foru...hp?t=25242

L8er,
PSY
PSY LABS Games
Coders don't die, they just gosub without return

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group