Discussion:
2D-Tilemaps Engine?
(too old to reply)
Ralf Geiger
2004-06-29 14:20:51 UTC
Permalink
Hallo,

ich hätte da mal eine Frage. Und zwar wollte ich mal für ein 2-Spiel eine
Tilemap-Engine schreiben. Als Hilfswerkzeug wollte ich das Programm
Tilestudio nehmen. Mein Problem ist nur, das Tilestudio die einzelnen Tiles
(Einzelgrafiken/Fliesen) nacheinander in einer Grafik speichert. Ich müßte
also die gesammte Grafik laden und Ausschnitte in einer bestimmten
Reihenfolge auf den Bildschirm ausgeben. Nur wie gestalte ich dies in Java?

Früher hab ich in BlitzBasic Programmiert und da sah das folgendermaßen aus:

Level1Bitmap = LoadAnimImage ("graphics\Level1.bmp", 32, 32, 0, 15)
// Grafik mit 15, Einzelbildern laden, die eine größe von 32*32 Pixel haben.
Mit dem Zählen bei 0 anfangen.

MaskImage Level1Bitmap, 255, 0, 255
// Hintergrund setzen

Function DrawTile (map, x, y, tile)
Select map
Case LAYER_Level1_Map1
DrawImage Level1Bitmap, x, y, tile
// Male Grafik an Position-X,Y mit dem ausgewähltem Ausschnitt (Tile).

--------

Im Netz hatte ich mal folgenden Text gefunden:

i'm writing for midp1.0 and i have simple question about on screen tiles
drawing methods.
what is the best choice?

1. load one image with N tiles and draw them using setClip() and
drawImage()
2. load one image with N tiles then cut all of them in separate images and
then just use drawImage()

well... maybe there's another nice and fast method?


Wie würde das mit setClip() und drawImage() aussehen? Oder hat jemand gar
eine ganz andere Lösung gefunden?

Wie würde man von einer eingeladenen Grafik Einzelelemente in ein neues
Image kopieren?



Wäre Euch für Hilfe echt Dankbar.

Ralf
Syren Baran
2004-07-27 08:24:16 UTC
Permalink
Post by Ralf Geiger
Hallo,
ich hätte da mal eine Frage. Und zwar wollte ich mal für ein 2-Spiel eine
Tilemap-Engine schreiben. Als Hilfswerkzeug wollte ich das Programm
Tilestudio nehmen. Mein Problem ist nur, das Tilestudio die einzelnen Tiles
(Einzelgrafiken/Fliesen) nacheinander in einer Grafik speichert. Ich müßte
also die gesammte Grafik laden und Ausschnitte in einer bestimmten
Reihenfolge auf den Bildschirm ausgeben. Nur wie gestalte ich dies in Java?
Hängt ein bisschen von dem Gerät ab.
In MIDP2.0 gibts dafür extra eine Game-API. (javax.microedition.lcdui.game).
Einige MIDP1.0 Geräte (mir fällt spontan Siemens ein) habe die selbe API
unter einem anderen Namen.
Post by Ralf Geiger
Wie würde das mit setClip() und drawImage() aussehen? Oder hat jemand gar
eine ganz andere Lösung gefunden?
Ich programmiere z.Z. für Nokia-Geräte, da gibts eine gute Erweiterung
unter com.nokia.mid.ui .
Unter DirectGraphics gibts sog. drawPixels Methoden. Diese Methoden sind
ca. um den Faktor 5 schneller als drawImage (wenn man die Transparenz
nicht benötigt).
Und dann die Sprites direkt als short[][] in den Sourcecode einbauen,
bei kleinen Tiles verliert man da auch keinen Platz.
Danach lässt sich das ganze schön mittels System.arraycopy in einen
Buffer kopieren.
Diese Methode funktionert halt nicht unter allen Geräten, ist aber sehr
flott. (in MIDP2.0 hat das Graphics Object eine ähnliche Methode namens
drawRGB )
Post by Ralf Geiger
Wie würde man von einer eingeladenen Grafik Einzelelemente in ein neues
Image kopieren?
Dürfte unter MIDP1.0 nur mit herstellerspezifischen Erweiterungen
funktionieren, unter MIDP2.0 gibts entsprechende Image.createImage
Methoden, die auch ein existierendes Image als Parameter annehmen.
Post by Ralf Geiger
Wäre Euch für Hilfe echt Dankbar.
Ralf
Gruss,
Syren

Loading...