Hallo alle zusammen,
habe eine Frage zu Tiles. Welche Tile-Größe bevorzugt ihr? Muss ich wirklich jedes einzelne Tile passent zeichnen? Kann man das mit einem Editor realisieren? Wenn ja hat da jemand eine Empfehlung? Muss dann ja auch in GLBasic umgesetzt werden.
Würde mich über jede Hilfe freuen.
Gruß Markus
kommt auf dein Spiel drauf an was du machen willst.
Normal nimmt man 32 x 32.
Editor kannst du dir selber schreiben, weil so kannst du alles mit einbauen was du für dein Spiel brauchst ( Enemys, Coins, Startpunkt, Ziel usw).
das wäre glaube ich noch ne Nummer zu groß. Ich bräuchte es nur um die Map zu zeichnen, alles andere würde ich ohne machen.
Wäre schön wenn es dafür was gibt.
Nix für GLB, solltest du schon selber machen.
Hi,
schau Dir das mal an.
http://www.glbasic.com/forum/index.php?topic=1507.0 (http://www.glbasic.com/forum/index.php?topic=1507.0)
Es nutzt zwar nicht alle Features von Tiled aber für eine einfache Map reicht das.
Was noch sehr einfach ist ist das hier :)
Einfacher Tile Editor,
einfacher Loader.
Genutzt wird hier nur die *.smp Datei,
die *.bmd Datei wird noch nicht beachtet.
Denn Editor gibts hier:
http://devlinslab.blogspot.com/ (http://devlinslab.blogspot.com/)
Code und beispiel Gfx gibts hier:
http://www.deuteriumoxid.com/glbasic/Smp_loader.zip (http://www.deuteriumoxid.com/glbasic/Smp_loader.zip)
// --------------------------------- //
// Project: Smp_loader
// Start: Monday, June 30, 2008
// IDE Version: 5.308
GLOBAL level AS Tsmp
level = smp_loader("test.smp")
LOADANIM "gfx.png",0,32,32
WHILE TRUE
FOR j = 0 TO level.hight-1
FOR i = 0 TO level.width-1
IF level.map[i][j] = 1 THEN DRAWANIM 0, 1,i*level.tilex,j*level.tiley
IF level.map[i][j] = 2 THEN DRAWANIM 0, 2,i*level.tilex,j*level.tiley
IF level.map[i][j] = 3 THEN DRAWANIM 0, 3,i*level.tilex,j*level.tiley
IF level.map[i][j] = 4 THEN DRAWANIM 0, 4,i*level.tilex,j*level.tiley
NEXT
NEXT
SHOWSCREEN
WEND
FUNCTION smp_loader AS Tsmp : l_map$
LOCAL l_temp AS Tsmp
LOCAL l_ctrl
LOCAL l_get
LOCAL l_width, l_hight
LOCAL l_x,l_y
l_temp.name$ = l_map$ // Name übergeben
l_ctrl = OPENFILE(0,l_map$,TRUE) // Überprüfung ob die map vorhanden ist
IF l_ctrl = TRUE
// FOR i = 0 TO 6 /// ersten 7 bytes sind für den Editornamen
// READBYTE 0,l_temp.chr[i] //l_get
// NEXT
READSTR 0,l_temp.version$,7 /// ersten 7 bytes sind für den Editornamen
READBYTE 0,l_temp.sys //l_get
IF CHR$(l_temp.sys) = "B" //B ist für byte, W für word
READBYTE 0,l_temp.width //l_width
READBYTE 0,l_temp.hight //l_hight
REDIM l_temp.map[l_temp.width][l_temp.hight] //map[l_width][l_hight]
// mapsize[0] = l_width-1
// mapsize[1] = l_hight-1
ELSE
READWORD 0,l_temp.width //l_width
READWORD 0,l_temp.hight //l_hight
REDIM l_temp.map[l_temp.width][l_temp.hight]
// mapsize[0] = l_width-1
// mapsize[1] = l_hight-1
ENDIF
READBYTE 0,l_temp.tilex //tile[0]
READBYTE 0,l_temp.tiley //tile[1]
FOR l_y = 0 TO l_temp.hight -1 //l_hight-1
FOR l_x = 0 TO l_temp.width -1 // l_width-1
READBYTE 0,l_temp.map[l_x][l_y] //map[l_x][l_y]
NEXT
NEXT
ELSE
PRINT "Error: No find file "+l_map$,10,10
PRINT "Push any key",10,30
SHOWSCREEN
KEYWAIT
ENDIF
CLOSEFILE 0
RETURN l_temp
ENDFUNCTION
TYPE Tsmp
name$ //Name der map
version$ // Aufname der ersten 7 bytes für den Editornamen
tilex // Tilegrösse
tiley
width // Map grösse (Tile einheiten)
hight
sys // Byte oder Word grössen
// chr[7] // Aufname der ersten 7 bytes für den Editornamen
map[0][0] // Mapdaten
ENDTYPE