Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.07.2007, 12:04

CPU-Auslastung bei meinem ersten Spiel

Hallo,ich bin noch ein absouluter Newbie im Bereich c++.
Mit dem Buch C++ Für Spieleprogrammierer habe ich mir jetzt einige Basics angeeigneet, und das letzte Spiel, welches in dem Buch entwickelt wird, umgebaut zu einem Pacman-Clone.

Leider habe ich beim Ausführen des Programms immer eine Auslastung der CPU von etwa 50%.

Leider kenne ich hierfür nicht die Ursache, würde mich aber sehr über tips freuen.

Ich habe mein gesamtes Projekt noch einmal hochgeladen.

Hier sind Die Source-Files und die Projekt-Datei zu finden:
http://www.ga-gaming.de/Pacman.rar

Mit Grüßen,
Padjon

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

25.07.2007, 12:21

Baumal nach deinen Berechnungen ein Sleep( 0 ) in den Code ein. Das sollte den die übeschüssige Prozessorlast freigeben.
@D13_Dreinig

3

25.07.2007, 12:32

Ich habe Sleep ans ende meiner Game-Run Schleife gesetzt.

Leider 0 Auswirkung auf die Auslastung. Liege immernoch bei 40-50% Auslastung.. Schwankend.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

25.07.2007, 12:41

Tjah, möglichweise braucht deine Anwendung ja so viel Power? :) 40% sind ja jetzt nicht unbedingt massig.
@D13_Dreinig

5

25.07.2007, 12:44

An meinem 2.Rechner sinds 100 % :D

Ich mein, das ist ein Pacman-Clone.

Irgendwas muss ich doch prinzipiell falsch gemacht haben.

Das Spiel ist in 2D und hat keine langen Berechnungen durchzuführen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

25.07.2007, 13:04

Und Sleep( 0 ) hat auch keine Auswirkungen auf deinem 2. Rechner?
@D13_Dreinig

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

7

25.07.2007, 13:15

50% Auslastung kommen zustande, weil du vermtl zwei CPUs hast und dein Spiel nur auf einer läuft. Ein einzelnes Sleep(0) am Ende der Hauptschleife bringt so gut wie gar nichts, du solltest das schon solange machen, bis eine Zielzeit für den Frame erreicht wurde:

C-/C++-Quelltext

1
while (Framezeit < Zielzeit) Sleep(0);

8

25.07.2007, 13:34

Hallo,

auch das ha nicht funktioniert, insofern ich es den richtig gemacht habe.

Ich habe zwar 2 CPU'S , bin aber beim rumprobieren auch schon einige male über 50% gekommen.

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

9

25.07.2007, 14:25

schreib einfach mal am ende deiner hauptschleife

C-/C++-Quelltext

1
2
for (int i = 0; i < 10000; i++)
    Sleep(0);

Dann wirst du schon sehen, dass die Auslastung zurückgeht. Dann noch einzusehen, dass auch die andere Methode Auslastung rausnimmt ist ein triviales Problem ;)

10

25.07.2007, 15:37

Hallo,
ich habe die oben genannte schleife in meine Run-Schleife eingebaut.

Also wird die Schleife nun ständig aufgerufen so lang das Spiel läuft.

Jedoch hat dies nichts an dem Auslastungsproblem geändert..

weiterhin zwischen 40-50 %

Werbeanzeige