Darstellungsfehler bei BMP's ?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag 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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag 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).
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ok... alllright... :D

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

(kein scherz, ehrlich danke :wink: )
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag 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...
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag 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.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag 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
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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
Antworten