moin moin.
Ich habe in letzter Zeit nen kleines Jump'n'run mit Delphi programmiert und hab nu folgendes Problem:
Wenn vor dem Start des Programms iTunes gestartet ist (ob musik läuft oder nicht is schnurz) dann läuft das spiel ruckelfrei mit butterweichen 40 fps (-->Win GDI. DirectX oder OGL wollte und will ich nicht benutzen, auch wenns einfacher ist). Ist das aber nicht der fall, stottert das mit 9-10 fps rum, auch wenn der speicher sonst frei ist!
Das Problem tritt nicht auf, wenn ich vor dem Laden eines Levels in die ursprüngliche Auflösung spring (1280x1024) und nach dem Laden wieder in die des Spiels (400x300 (verkneift euch bitte etwaige kommentare
)). Auf die Möglichkeit würde ich aber nur im Notfall zurückgreifen, da ich zwischen den Leveln ein paar Grafikeffekte eingebaut hab, die durch das andauernde Ändern der Auflösung aber für die Katz wären.
Ich hab keine Ahnung woran sowas liegen könnte, wär froh, wenn von euch da einer ideen hätte.
Damit ihr ne ungefähre ahnung habt, wie der spielablauf funktioniert, hier grob meine gameloop
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure Gameloop solange blabla nicht true ist machma
Anfangszeit = GetTickCount Überprüfe ob die und die und die Taste gedrückt wurde und reagiere entsprechend; Zeichne alles;
wenn anfangszeit - Gettickcount weniger als 30 dann warte nochn bisschen; Fps-Anzeige; Application.Processmessages;
ende; end; |
(wie gesagt nur grob
)
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt.
//Edit @Christian S.: und ich dachte die Codetags wären für sonen pseudo-code da ...
Ideale sind wie Sterne: Man kann sie zwar nicht erreichen, aber man kann sich sehr wohl an ihnen orientieren.