ArrayList sehr viel schneller als Array?

Rastarockett

Mitglied
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?
 
Eine ArrayList verwendet intern ein Array also wird der Unterschied nicht so dramatisch sein. Was du beschreibst ist aber ein ganz anderer Anwenungsfall.
Ein deiner Liste hatest du eine Hand voll Werte. In deinem Array hast du jetzt ca 1000*1000 Werte.. das ist schon ein Unterschied ;-)
 
Im übrigens gibts die Klasse Point, die eben für x/y Koordinaten gemacht wurde.
Ich versteh aber nicht ganz wieso sämltiche Koordinaten in einer Collection landen sollen? Soll quasi die Bewegungsspur aufgezeichnet werden?
 

Neue Themen


Zurück
Oben