Seite 6 von 7

Verfasst: 13.11.2004 23:36
von Danilo
Kaeru Gaman hat geschrieben: aber mal im ernst: mir is das doch banane, wenn mein game
100% CPU zieht...
Anderen Leuten ist es aber nicht egal. :)

Wieso sollte ein Tetris 100% ziehen und den Prozessor unnötig
belasten und aufheizen? Mein 3D-Rendering im Hintergrund
läuft dadurch dann langsamer, aber ich wollte mir doch nur
mal nebenbei die Zeit vertreiben. ;)

Es gibt tausende Spiele die man mal schnell nebenbei spielen
kann, während der Rechner im Hintergrund voll am werkeln ist.
Ihm dann alle Zeit zu klauen ist unfair - wird er ja nie fertig.

Man braucht aber auch nicht 300.000 mal pro Millisekunde
abfragen ob nun schon 25 Millisekunden vorbei sind.
Da reicht auch alle 1 ms nachzufragen.

Es kommt also drauf an was Du für ein Spiel schreibst und
wo (an welcher Stelle) Du den Loop einsetzt.
Im Hauptmenu ist das Spiel fast Idle und stellt nur bissl das
GUI da. Für kleine Spiele wie Tetris etc. braucht man fast
keine Power, je nach Prozessor vielleicht 1%. Die anderen
99% werden nur verheizt - aber OK, es wird ja Winter. ;)

Das UT2004 nicht mitten im Kampf ein Delay(25) reinmacht
ist klar... aber wenn man nur alle 20ms 50 Sprites auf den
Screen haut, ist auf einigermaßen modernen Rechnern noch
genug Zeit übrig. Das machen die heute oftmals "nebenbei".

Lars hat aber schon Recht: Statt dem pollen wie in dem obigen
Code nimmt man dann doch besser nur FlipBuffers.

Wo Power gebraucht wird, soll Power hin. Aber unnötig
verschwenden und aufheizen muß doch nicht sein.

Verfasst: 14.11.2004 01:05
von Lars
Zum einen heißt 100% CPU Auslastung Energieverbauch und das führt
dann auch zu dem von Danilo beschriebenen Problem, dass die Lüfter
aufdrehen.


Zum anderen ist das auch ein bisschen ein Qualitätsmerkmal. Viel zu viele
moderne, große Spiele ziehen auch im Pausenmenu ziemlich viel CPU,
wenn vielleicht auch nicht immer 100%. Das nervt schon, besonders bei
Multiplayer Spielen. Das schnelle Wechseln auf den Desktop, um noch
schnell ein Kommunikationstool zu starten ist dann eine gewisse
Geduldsprobe.

Folglich sollte in die Hauptschleife des Menus und von Pausenmenus ein
Delay(), in die Spielschleife je nach Spiel ein kleines oder gar keins (bei
dem von Danilo erwähnten Tetris sind 100% CPU Auslastung während des
Spiels natürlich nicht einzusehen, beim genannten UT2004 jedoch sehr
wohl).

Verfasst: 14.11.2004 01:10
von Kaeru Gaman
ok... alllright... :D

... voll gepeilt worum es geht... werde versuchen mich dran zu halten...

(kein scherz, ehrlich danke :wink: )

Verfasst: 14.11.2004 11:29
von Kaeru Gaman
Danilo hat geschrieben:Lars hat aber schon Recht: Statt dem pollen wie in dem obigen Code nimmt man dann doch besser nur FlipBuffers.
ääähhh... wie jetzt ?? :shock: :?

...meinst du also FlipBuffers OHNE SetFrameRate und KEIN 'WaitTimer' :?:

...und wie soll ich die schleife dann sync-en ? das Game soll doch auf einem 350MHz genauso schnell laufen, wie auf einem 3GHz...

Verfasst: 14.11.2004 11:55
von GPI
Ich habs bei Crillion so gemacht, das man wählen kann: Bei Multitasking-Freundlich wird ein Delay(1) reingeklatsch, dafür wirds ein bischen langsamer (gerade bei "Schnell" sichtbar).

So kann jeder das haben, was er will...

Verfasst: 14.11.2004 12:34
von Lars
Kaeru Gaman hat geschrieben:und wie soll ich die schleife dann sync-en ? das Game soll doch auf einem 350MHz genauso schnell laufen, wie auf einem 3GHz...
Dazu gibt es einen sehr schönen FAQ Eintrag von Danilo. Du machst das
ganze zeitgesteuert, dadurch ruckelt zwar alles auch auf einem 100Mhz
Rechner vor sich hin, aber alles ist trotzdem gleich schnell wie auch einem
3Ghz Rechner. Bei dem SetFrameRate() Ansatz ist das nicht gegeben,
wenn der Rechner die angegebene Framerate nicht schafft, läuft alles halt
langsamer.

Verfasst: 14.11.2004 12:40
von Kaeru Gaman
ahso... zeitgesteuert meinst du also, die einzelnen funktionen per timer sync-en, aber die hauptschleife mit FlipBuffers so schnell laufen lassen wie's halt geht, gell ?

klingt nach echt saubere lösung :allright:

Verfasst: 14.11.2004 14:09
von Danilo
Kaeru Gaman hat geschrieben:ahso... zeitgesteuert meinst du also, die einzelnen funktionen per timer sync-en, aber die hauptschleife mit FlipBuffers so schnell laufen lassen wie's halt geht, gell ?
http://www.robsite.de/php/pureboard-arc ... php?t=1158
http://www.robsite.de/php/pureboard-arc ... php?t=3244

Verfasst: 14.11.2004 16:11
von Kaeru Gaman
...ok, habe mir beide threads durchgelesen...

...schade eigendlich, dass auf nic's idee mit dem hintergrund-thread, der unabhängig die gfx darstellt, nicht näher eingegangen wurde... war so ähnlich nämlich auch meine idee...

Verfasst: 14.11.2004 19:05
von NicTheQuick
@Kaeru Gaman: Meine Idee habe ich schon umgesetzt. Du hast wohl nur anscheinend den entsprechenden Thread nicht gefunden. Epyx hat mein System in seinem Weihnachtsgame verwendet. Hier ist der entsprechende Thread dazu: http://www.robsite.de/php/pureboard-arc ... c&start=40