Hi,
ich arbeite ja momentan an einem TileEditor.
Es funktioniert momentan folgendermaßen: Das Tile ist aus einer Grafik, mit jeweils Tiles, der Größe 32x32 pixel. Diese werden in mein Programm eingelesen und sind jeweils als Objekte der Klasse Tile gespeichert. Nun kann damit gezeichnet werden. Hierbei enthält das JPanel, worauf gezeichnet werden soll, ein 2d-Array, pro Layer. Es gibt insgesamt 3 Layer. Layer 1=Grass, ... Layer 2=Steine, Häuser, Objekte,... Layer 3=Alles was über allen Objekten erscheinen soll, z.B. Vögel, Wolken,...
Wurde auf ein Tile geklickt und auf dem Zeichenpanel gezeichnet, werden Positionen des 2d-Arrays des Zeichenpanels belegt, mit der TileID.
Beim Speichern der Karte, geht das Programm jede im 2d Array gespeicherte Tile-ID durch und speichert sie in ein txt-File. Hierin steht die x,y-Koordinate des Tiles auf der Karte, auf welchem Layer es sich befindet und die tile ID. In der ersten Zeile steht noch der Name der Grafik-URL.
Soll nun die Karte in ein Spiel geladen werden.
Die Text-Datei wird Zeile für Zeile ausgelesen. Das SPiel liest, die URL aus der ersten Zeile und teilt die Tiles der Grafik in gleicher Weise in ID`s wie mein TileEditor. So wird die Map gezeichnet.
Problem ist nur, dass wenn die Karte größer ist als der Spielbildschirm müssen sich ja alle Objekte mitverschieben, wenn der Player nach unten geht, z.B. In einer Karte mit sagen wir 20*20(also 20*32px horizontal und 20*32 pixel vertical) wären das schon 400 Tiles, deren x,y Werte verschoben werden müssten. Liege ich falsch, oder sind das nicht etwas zu viel Berechnung für den pc?
EDIT:
Also 400 x Aufrufe der Gameloop pro Sekunde. Das kommt dann schon auf 16 000, bei 20 Aufrufen pro Sekunde... Ich bin ja noch ziemlich neu in diesem Gebiet... Vielleicht liege ich ja voll daneben und der rechner schafft millionen berechnungen die sekunde
ich arbeite ja momentan an einem TileEditor.
Es funktioniert momentan folgendermaßen: Das Tile ist aus einer Grafik, mit jeweils Tiles, der Größe 32x32 pixel. Diese werden in mein Programm eingelesen und sind jeweils als Objekte der Klasse Tile gespeichert. Nun kann damit gezeichnet werden. Hierbei enthält das JPanel, worauf gezeichnet werden soll, ein 2d-Array, pro Layer. Es gibt insgesamt 3 Layer. Layer 1=Grass, ... Layer 2=Steine, Häuser, Objekte,... Layer 3=Alles was über allen Objekten erscheinen soll, z.B. Vögel, Wolken,...
Wurde auf ein Tile geklickt und auf dem Zeichenpanel gezeichnet, werden Positionen des 2d-Arrays des Zeichenpanels belegt, mit der TileID.
Beim Speichern der Karte, geht das Programm jede im 2d Array gespeicherte Tile-ID durch und speichert sie in ein txt-File. Hierin steht die x,y-Koordinate des Tiles auf der Karte, auf welchem Layer es sich befindet und die tile ID. In der ersten Zeile steht noch der Name der Grafik-URL.
Soll nun die Karte in ein Spiel geladen werden.
Die Text-Datei wird Zeile für Zeile ausgelesen. Das SPiel liest, die URL aus der ersten Zeile und teilt die Tiles der Grafik in gleicher Weise in ID`s wie mein TileEditor. So wird die Map gezeichnet.
Problem ist nur, dass wenn die Karte größer ist als der Spielbildschirm müssen sich ja alle Objekte mitverschieben, wenn der Player nach unten geht, z.B. In einer Karte mit sagen wir 20*20(also 20*32px horizontal und 20*32 pixel vertical) wären das schon 400 Tiles, deren x,y Werte verschoben werden müssten. Liege ich falsch, oder sind das nicht etwas zu viel Berechnung für den pc?
EDIT:
Also 400 x Aufrufe der Gameloop pro Sekunde. Das kommt dann schon auf 16 000, bei 20 Aufrufen pro Sekunde... Ich bin ja noch ziemlich neu in diesem Gebiet... Vielleicht liege ich ja voll daneben und der rechner schafft millionen berechnungen die sekunde
Zuletzt bearbeitet: