Seite 2 von 3
Re: TileEngine. Wie funktionierts
Verfasst: 17.06.2010 12:00
von PureLust
Wie wohl vermutlich jeder hier (ausser ts-soft vielleicht

) hatte auch ich mal angefangen eine Tile-Engine zu schreiben (
hier mal eine uralte erste Demo davon).
Das geplante Konzept sah sowohl Unterstützung für verschiedene ISO-Ansichten wie auch für 2D-Draufsicht vor.
Auch waren mehrere Layer sowie frei bewegliche Tile-Objekte angedacht.
Wie viel wir (PeBo und ich) damals davon noch tatsächlich umgesetzt hatten kann ich nicht mehr genau sagen.
Bei Interesse schau ich aber gerne noch mal nach ob ich noch irgendwo den Source habe.
Greetz, PL.
Re: TileEngine. Wie funktionierts
Verfasst: 20.06.2010 12:37
von Codusa
@PureLust
Wäre echt cool thx!
Demo kann ich leider nicht testen, da Norton sie raushaut
@a14xerus
Eine Frage habe ich noch:
Wie fülle ich das Map-Array mit den Tiles?
Code: Alles auswählen
For k = startY To endeY
For i = startX To endeX
Map(i, k)\Layer1 = #GrassTile
Next
Next
"Array-Index ausserhalb der zulässigen Grenzen"
Wollte zum Testen mal GrassTiles anzeigen lassen...
Re: TileEngine. Wie funktionierts
Verfasst: 20.06.2010 13:45
von hörmi
Code: Alles auswählen
For k = startY To endeY
For i = startX To endeX
If i<ArraySize(Map(),1) And i>=0
If k<ArraySize(Map(),2) And k>=0
Map(i, k)\Layer1 = #GrassTile
EndIf
EndIf
Next
Next
Re: TileEngine. Wie funktionierts
Verfasst: 20.06.2010 13:50
von Codusa
hörmi hat geschrieben:Code: Alles auswählen
For k = startY To endeY
For i = startX To endeX
If i<ArraySize(Map(),1) And i>=0
If k<ArraySize(Map(),2) And k>=0
Map(i, k)\Layer1 = #GrassTile
EndIf
EndIf
Next
Next
Ich versteh nicht wirklich wo der Fehler lag, aber er ist wech
DANKE

Re: TileEngine. Wie funktionierts
Verfasst: 20.06.2010 14:13
von hörmi
dein startx/y kann negative werte annehmen bzw endex/y kann größer werden als dein Array groß ist und deshalb musst du überprüfen ob dein k und i innerhalb der grenzen ist
Re: TileEngine. Wie funktionierts
Verfasst: 20.06.2010 14:24
von Codusa
Ok, danke nochmal!
Weisst du wie ich den unschönen Effekt weg bekomme, dass die Tiles wenn sie sich überlappen nur teilweise transparent sind?
Ich beutze ja Rauten...
Re: TileEngine. Wie funktionierts
Verfasst: 20.06.2010 14:52
von hörmi
Ich weiß nicht genau was du meinst, hast du vll ein beispiel
Re: TileEngine. Wie funktionierts
Verfasst: 20.06.2010 15:44
von NicTheQuick
Dazu musst du z.B. 'DisplayTransparentSprite()' verwenden und den Teilen des Bildes, die durchsichtig sein sollen, die festgelegte Transparenz-Farbe geben.
Ich glaube es gibt auch noch Masken oder noch einfacher die Verwendung von PNG-Bildern mit Alpha-Kanal. Aber ich habe das selbst nie wirklich benutzt. Deswegen werden sicherlich noch ein paar Antworten von den Experten hier kommen.
Re: TileEngine. Wie funktionierts
Verfasst: 20.06.2010 16:20
von Codusa
Ein Beispiel habe ich leider nicht (Screenshot geht auch nicht

)
Ich benutze Sprite3D und es ist auch Transparent nur an den Stellen nicht , wo sich zwei Transparente Flächen
von den Sprites überlappen...
Hoffe es ist so verständlicher.
Könnte das was mit Sprite3DBlendingMode() zu tun haben?
Ich kenn mich da leider nicht aus, probier aber Heute Abend mal die verschiedenen Modi aus.
Re: TileEngine. Wie funktionierts
Verfasst: 20.06.2010 16:40
von a14xerus
muss ja nich iso sein.
also nich diagonal, kannst ja auch rechteckige "normale" tiles machen. dann gibt es keine überlappenden stellen.
also warum das jetzt bei dir nicht funktioniert mit der transparenz weiß ich nich
@ tiles zum test füllen:
fülle nicht in dieser schleife die tiles. das is quatsch
fülle einfach beim laden des spiels einmal das ganze array.
so wie du es jetzt machst überschreibst du vorm zeichnen (diese for k = startX to endeX - schleife ist nur fürs zeichnen zuständig) alles das , was dann angezeigt wird.
udn daher auch der Fehler (wie schon geschrieben musst du überprüfuen ob der anzuzeigende bereich überhaupt im bereich der map (des arrays) liegt).