Entity Verwaltung in einem 2D Spiel

GentleXD

Aktives Mitglied
Hallo,

ich habe mal wieder ein Problem. Ich versuche gerade alle meine dynamic Entitys zu verwalten, in meinem 2D Spiel.

Momentan speichere ich jedes Entity in einer ArrayList und jedes Entity wird immer gerendert und geupdatet. Da es momentan nur den Spieler als Entity gibt. Außerdem werden zum Beispiel bei Collisions Abfragen zwischen einem Entity und den anderen Entitys alle Entitys durchlaufen und die Collision Abfrage wird für jedes Entity gemacht.

Nun habe ich überlegt die Entitys meiner Welt in Chunks aufzuteilen. Also zum Beispiel ist meine Welt 6000 * 100 Blöcke groß. Nun habe ich Chunks die 100 * 100 groß sind dann hätte ich 60 Chunks. Jeder Chunk hat dann eine Liste mit Entitys die sich momentan in dem Chunk aufhalten. Nun habe ich aber ein paar Probleme was passiert wenn sich ein Entity zum Beispiel im ersten Chunk also in den Koordinaten 0, 0 bis 100, 100 aufhält und dann sich bewegt und zu 150, 90 geht und somit im zweiten Chunk wäre müsste ich dann jedes mal alle Chunks durchgehen und dann jedes Entity und abfragen in welchem Chunk es sich befinden müsste und wenn es nötig ist den Chunk ändern ? Außerdem haben meine Entitys 2 Methoden Update und Render. Update verändert die Daten und Render zeichnet. Jetzt könnte ich alle Entitys eines Chunks nehmen in dem sich der Spieler befindet und nur die in der Umgebung rendern aber ich muss ja theoretisch alle Entitys updaten die sich in der ganzen Welt befinden ?

Oder gibt es noch andere Systeme die vllt. effizenter sind ?

Lg Alex
 

JuKu

Top Contributor
Du musst bei den Bewegungen die Entities in andere Chucks verschieben, wenn es denn nötig ist.
Angenommen jeder Chuck ist 100*100 Blöcke groß, dann bekommst du den aktuellen Chuck so:
Java:
int chuckX = (int) xBlock / 100;
int chuckY = (int) yBlock / 100;

Deine Update Methode sollte den aktuellen Chuck kennen und evtl. einen Listener aufrufen:
Java:
//Move Entity in update method

if (currentChuckX != chuckX || currentChuckY != chuckY) {
    //call listener Ort move entity to new chuck
}

Entweder übernimmt die update Methode selbst das Verschieben, oder sie ruft einen Listener / Observer auf.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S ECS: "deep copy" einer Entity-Vorlage Spiele- und Multimedia-Programmierung 9
E Rendering order auf einem ismetrischen Grid Spiele- und Multimedia-Programmierung 8
P Wie kann ich einem Programm hinter eine GUI verstecken? Spiele- und Multimedia-Programmierung 12
J (Libgdx) animation nur einmal in einem Event aufrufen Spiele- und Multimedia-Programmierung 1
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
P selectedItem aus einem Methodenerstellten JPanel auslesen. Spiele- und Multimedia-Programmierung 5
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G Collision Detection in einem 2D Sandbox Game. Spiele- und Multimedia-Programmierung 2
E Einem A*-Pfad folgen Spiele- und Multimedia-Programmierung 27
G Auf einem Stick bewegen Spiele- und Multimedia-Programmierung 5
windl MP3-Tags von einem Inputstream auslesen Spiele- und Multimedia-Programmierung 5
U DPI von einem Bild definieren Spiele- und Multimedia-Programmierung 5
X Erklärung zu einem Tic Tac Toe Spiel Spiele- und Multimedia-Programmierung 1
C Hilfe bei einem Mosaikspiel Spiele- und Multimedia-Programmierung 16
M [JOGL] Maus über einem gezeichnetem Objekt abfragen? Spiele- und Multimedia-Programmierung 5
P Winkel von einem Punkt zum anderen berechnen Spiele- und Multimedia-Programmierung 9
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
S Java3D: Primitives zu einem Objekt kombinieren Spiele- und Multimedia-Programmierung 7
Fl4sh1 Datum und Uhrzeit von einem Ereignis ausgeben lassen Spiele- und Multimedia-Programmierung 3
P Frage zu einem Projekt "Einarmiger Bandit" 3 Walzen / 9 Zeichnungen BLUEJ Spiele- und Multimedia-Programmierung 10
K Grundsätzlicher Spieleaufbau an (m)einem Beispiel Spiele- und Multimedia-Programmierung 4
S Problem mit Sichtfeld/Licht in einem Raster Spiele- und Multimedia-Programmierung 5
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
A Drehen von einem Image Spiele- und Multimedia-Programmierung 4
F Bot updaten von einem Browser game Spiele- und Multimedia-Programmierung 7
W Java3D: Kanten die hinter einem Objekt liegen werden gezeigt Spiele- und Multimedia-Programmierung 2
B Reset bei einem Spiel Spiele- und Multimedia-Programmierung 16
C auf einem PC kein mp3 unter Java Spiele- und Multimedia-Programmierung 6
A Steuerung des Bewegungsflusses bei einem Netzwerkspiel Spiele- und Multimedia-Programmierung 18
R Mehrere Shader in einem Program Spiele- und Multimedia-Programmierung 8
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
Z Kugeln aufgrund von Daten aus einem Array verschieben Spiele- und Multimedia-Programmierung 2
S Probleme mit JMenu in einem JFrame mit BufferStrategy Spiele- und Multimedia-Programmierung 2
K Kanten anzeigen lassen in einem Shape3D-Objekt Spiele- und Multimedia-Programmierung 4
A Interaktion von J3D in einem Applet Spiele- und Multimedia-Programmierung 4
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
H Speichern und Öffnen von einem Zeichenprogramm Spiele- und Multimedia-Programmierung 4
A Wie kann ich die Dateigröße aus einem tiff auslesen? Spiele- und Multimedia-Programmierung 2
hdi mehrere Threads/Tasks in einem synchronisieren -> TaskPoo Spiele- und Multimedia-Programmierung 36
N Farberkennung und -ersetzung in einem Bild Spiele- und Multimedia-Programmierung 2
F Umsetzung von einem Partikelsystem Spiele- und Multimedia-Programmierung 4
J Java3D Rotationsproblem bei einem 3D-Maennchen Spiele- und Multimedia-Programmierung 3
B Frage zur Spielsteuerung bei einem rundenbasiertes Spiel Spiele- und Multimedia-Programmierung 5
K Seitenlänge aus einem Würfel lesen Spiele- und Multimedia-Programmierung 3
K Einzelne Pixel in einem Bild lesen Spiele- und Multimedia-Programmierung 5
T Kollisionsabfrage von einem Stein mit einem Ball Spiele- und Multimedia-Programmierung 5
G Einen gif oder jpg Datei aus einem Graphics Objekt o. JFrame Spiele- und Multimedia-Programmierung 2
A 3D Gegenstand in einem 2D Koordinatensystem darstellen. Spiele- und Multimedia-Programmierung 3
K Hilfe bei Grafikeinbindung in einem Spiel Spiele- und Multimedia-Programmierung 6
D Image.getGraphics() in einem Frame Spiele- und Multimedia-Programmierung 4
G Bufferimage bei einem Frame Spiele- und Multimedia-Programmierung 4
I Zweite Kamera in einem SimpleUniverse Spiele- und Multimedia-Programmierung 6

Ähnliche Java Themen

Neue Themen


Oben