Seite 5 von 7

Verfasst: 13.11.2004 16:37
von Danilo
Kaeru Gaman hat geschrieben:...btw ich seh grad, du hast da ein Delay(10) in der Schleife.. wieso denn das ?
Das Delay() ist auskommentiert.
Kaeru Gaman hat geschrieben:FlipBuffers synct doch mit der framerate, die ich vorher setzen kann... jedenfalls bei 3.30...
FlipBuffers lief dann aber auch immer auf Volllast.

In einem Spiel braucht man kein Delay, schliesslich soll das
Ding mit voll Power laufen können. Die CPU ist ja schliesslich
zum arbeiten da, nicht zum idlen. ;)
Bei so kleinen Tests kann man aber ruhig mal ein Delay
reinmachen, wenn eh fast keine Power gebraucht wird -
zum Beispiel um mal schnell 5 Sprites über'n Screen zu
schmeißen.

Bei mir laufen die Prozessoren (2) im Leerlauf mit ~35°C - 37°C,
und die Prozessorlüfter sind mit SpeedFan runtergeregelt auf 70%.
Wenn die Prozessoren auf Last laufen und sich dann auf 45°C
erwärmt haben, regeln die Lüfter wieder hoch - und das vermeide
ich mit dem Delay, wo nicht volle Power nötig ist. :)

Verfasst: 13.11.2004 17:54
von Kaeru Gaman
>FlipBuffers lief dann aber auch immer auf Volllast.

...äähh, bitte ??? :shock:

wie muss ich das denn jetzt verstehen ?

Verfasst: 13.11.2004 18:03
von Danilo
Kaeru Gaman hat geschrieben:>FlipBuffers lief dann aber auch immer auf Volllast.

...äähh, bitte ??? :shock:

wie muss ich das denn jetzt verstehen ?
FlipBuffers() zog 100% CPU-Time während es nur gewartet
hat bis es switchen soll (auf die Begrenzung von SetFrameRate).

Hast Du keinen CPU-Monitor installiert, den Du immer im
Blickfeld hast? Sowas ist als Entwickler Pflicht.

Kannst ja mal ausprobieren mit SetFrameRate + FlipBuffers auf PB 3.30.
Hat sich aber vor kurzem geändert, ist also in der aktuellen
Version OK.

Verfasst: 13.11.2004 18:08
von Kaeru Gaman
...ok ic... (nein, den moni hab ich nich an... thnx for the tip)

...das 'setframerate' ist in 3.30 die einzige syncronisationsmöglichkeit...

...in der neuen version zieht es keine 100% mehr ? wär ja gut...

...wenn ich die neue version erstmal habe, werde ich vielleicht auch eher mit 'elapsedtime' arbeiten...

Verfasst: 13.11.2004 18:14
von Danilo
Kaeru Gaman hat geschrieben:...wenn ich die neue version erstmal habe, werde ich vielleicht auch eher mit 'elapsedtime' arbeiten...
Das alte FlipBuffers() war auch immer an die Monitor-Refresh-Rate
gebunden, wenn man kein SetFrameRate nutzte.
Jetzt ist es optional möglich nicht auf den Retrace zu warten,
wodurch Du auch mal schnell ein paar hundert FPS bekommen
kannst.
Ist eh eine bessere Idee unbegrenzt laufen zu lassen und alles
per Faktor "Zeit" zu steuern.

Naja, wirst dann schon sehen mit der neuen Version... ;)

Verfasst: 13.11.2004 18:44
von Kaeru Gaman
*zustimmung*

ich denke auch, die komfortabelste lösung wäre:

Code: Alles auswählen

#Duration = desired_milliseconds_per_turn

Repeat

    time = ElapsedTime()

    ... Hauptschleifeninhalt ...

    Repeat : Until ElapsedTime() > time + #Duration

Until Exit_Main_Loop_Condition
...einwände oder anregungen ? :D

Verfasst: 13.11.2004 18:58
von Andre
Kaeru Gaman hat geschrieben: ...einwände oder anregungen ? :D
Es gibt schon Code-Beispiele für zeitgesteuerte Game-Loops, sollten sowohl im CodeArchiv als auch hier im Forum (ggf. im Archiv) zu finden sein. U.a. auch von Danilo.... :wink:

Verfasst: 13.11.2004 19:04
von Kaeru Gaman
@André

mercí !

...hier ist sooooo viel information vorhanden, dass ich garnich weiss, wo ich anfangen soll... :shock:

...könnte nen vollen monat damit verbringen, alles aufzuarbeiten was hier geposted wurde und rauszuziehen, was ich gebrauchen kann... :wink:

Verfasst: 13.11.2004 22:58
von Lars
Kaeru Gaman hat geschrieben:[c]Repeat : Until ElapsedTime() > time + #Duration[/c]
Das ist ja gar fürchterlich <)

Diese Schleife verbraucht 100% CPU, dann kannst du sie dir auch
schenken. Da muss noch ein [c]Delay(1)[/c] oder auch [c]Delay(5)[/c] rein.

Zum Thema zeitgestäuerter Ablauf solltest du mal in die FAQ gucken :wink:

Verfasst: 13.11.2004 23:03
von Kaeru Gaman
@Lars

...mit Delay(1) bin ich einverstanden....

aber mal im ernst: mir is das doch banane, wenn mein game 100% CPU zieht... zeig mir das game, bei dem du nebenbei noch x andere aufgaben fahren kannst... mir gehts hier um ein game, nich um ne application...

...wenns richtig brennt, bleibt sowieso keine CPU zeit für anderen schmonz übrig,
ohne das es anfängt zu ruckeln ! (<- bewusst geplenkt)