Nachdem ich Narses Tutorial zum Protokoll gelesen hatte, wollte ich zwecks Übung eins von diesen Weltraumshootern proggen.
Dabei hab ich ein Spielfeld von 3000*3000 Einheiten (je ein Pixel). Da dies zu groß für einen Bildschirm ist, sieht man am Rand in einer Art Radar, wo man sich auf dem Spielfeld befindet. Wenn man mit der Maus klickt, startet man einen Timer und alle 200ms wird ein Schuss erzeugt. Dieser behinhaltet vier Real-Werte: x/y Position sowie geschwindigkeit. Zusätzlich noch ein Bild.
Alle paar Zeitabstände sendet der Server dan den Befehl für die Ausführung alles zu bewegen.
Aber bereits bei mehr wie 50 Schüssen reicht die Rechenleistung nicht mehr -.- .
Ich habe mir gedacht, dass es daran liegt, dass es viele Bilder auch auserhalb des Bildschirms zeichnet.
Also habe ich versucht, mit einer IF - Abfrage zu testen, ob das Bild auf dem Bildschirm wäre. Falls nicht, wird es nicht verschoben, sondern nur seine Positionsvariablen angepasst. Allerdings trug dies nichts zur Performance bei.
Wieso ist das bei so relativ wenigen Bildern bereits so lahm (Beispiel Spiele wie Warcraft - da wird weitaus mehr gemalt).
Und wäre es vielleicht besser, wenn ich auf die ganze Form ein großes Image ziehe und die Schüsse als Shapes bewege.
(Aber selbst wenn - die abzuschiesenden Ufos sollen nicht nur ein Shape sein sondern schon etwas besser aussehen - wie mache ich es dann mit denen?).
Eine andere Überlegung von mir war, dass ich einen zweiten Thread starte, der fürs Bilder verschieben verantwortlich ist (mit einer Schleife), während der andere nur rechnet. Aber so werden a) Viele Bildsequenzen übersprungen und b) war es auch nicht viel schneller.
Irgendwelche vorschläge wie ich das machen könnte?
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 16.09.2008 um 12:48