Hi,
ich führe im Moment ein paar Optimierungsarbeiten bei meinem Tron 2D Remake Game durch. Mein Kommilitone, der die K.I. schreibt, hätte gerne die Spieler Koordinaten in einem Array, ich hatte sie bis jetzt in einer Integer ArrayList.
Bisher habe ich das so gelöst: Bei jedem Repaint des Spielfelds wird an zwei Arraylists die aktuelle x und y Koordinate des Spielers und an weiteren zwei die des Gegners angehängt. Das offensichtliche Problem ist eigentlich, dass ich bei der Collision Detection vor jeder Bewegung VIER Arraylisten komplett durchsuchen muss Komischerweise ist die Performance aber absolut ok :applaus:
Jetzt aber mache ich das mit einem zwei-Dimensionalem Int Array, bei dem jede Zelle für ein Pixel auf dem Spielfeld steht. Ist in dem Pixel der Gegner, schreib ich da eine 2 rein, wenn da der Spieler ist eine 1 und sonst bleibt da eine 0.
Jetzt dauert aber alleine das repainten des Spielfelds, bei dem ich einmal das Ganze Array durchsuchen muss, so lange, dass die Peformance so runter geht, dass das Spiel unspielbar wird. Die Collision Detection habe ich jetzt sogar deaktiviert, aber es hilft nichts.
Sind Arrays also wirklich sooooo viel langsamer als ArrayLists?
ich führe im Moment ein paar Optimierungsarbeiten bei meinem Tron 2D Remake Game durch. Mein Kommilitone, der die K.I. schreibt, hätte gerne die Spieler Koordinaten in einem Array, ich hatte sie bis jetzt in einer Integer ArrayList.
Bisher habe ich das so gelöst: Bei jedem Repaint des Spielfelds wird an zwei Arraylists die aktuelle x und y Koordinate des Spielers und an weiteren zwei die des Gegners angehängt. Das offensichtliche Problem ist eigentlich, dass ich bei der Collision Detection vor jeder Bewegung VIER Arraylisten komplett durchsuchen muss Komischerweise ist die Performance aber absolut ok :applaus:
Jetzt aber mache ich das mit einem zwei-Dimensionalem Int Array, bei dem jede Zelle für ein Pixel auf dem Spielfeld steht. Ist in dem Pixel der Gegner, schreib ich da eine 2 rein, wenn da der Spieler ist eine 1 und sonst bleibt da eine 0.
Jetzt dauert aber alleine das repainten des Spielfelds, bei dem ich einmal das Ganze Array durchsuchen muss, so lange, dass die Peformance so runter geht, dass das Spiel unspielbar wird. Die Collision Detection habe ich jetzt sogar deaktiviert, aber es hilft nichts.
Sind Arrays also wirklich sooooo viel langsamer als ArrayLists?