GLBasic forum

Other languages => GLBasic - de => Topic started by: S.O.P.M. on 2011-Jun-14

Title: Mapeditor Problem
Post by: S.O.P.M. on 2011-Jun-14
Hi,

für ein Projekt eines Zelda-Klons habe ich einen minimalistischen Mapeditor geschrieben. Kurz zur Erläuterung: Die Map wird in einem dreidimensionalen Array gespeichert, wobei die erste Dimension für die Ebene und die letzten beiden für die x- und y-Position eines Blocks der Map genutzt werden. So gibt es zum Beispiel eine Vorder-, eine Hintergrund- und eine Kollisionsebene. Für einen Block der Map wird als Wert die Indexnummer eines Tiles aus einem Tileset oder von einer einzelnen Datei gespeichert. Egal, ob ein Tileset (tiles.png) vorliegt oder ob jedes Tile als einzelne Datei (tile0.png, tile1.png, ...), in jedem Fall macht der Editor aus Performancegründen intern einzelne Sprites daraus, da ich feststellen musste, dass DRAWANIM erheblich langsamer ist als DRAWSPRITE, selbst wenn es nur wenige Animationsstufen sind!

Nun kommt das Problem: ich habe keine Transparenz mehr! Ich lade das Tileset und dann zeichne ich jede Animationsstufe und speichere mit GRABSPRITE ein Sprite davon. Diese Sprites haben dann keine Transparenz mehr, die ich aber brauche. Wie kann ich aus einem Tileset einzelne Sprites mit Transparenz machen? Ich wäre für eine Lösung sehr dankbar. INLINE ist für mich kein Thema in diesem Fall!

Gruß
S.O.P.M.

[attachment deleted by admin]
Title: Re: Mapeditor Problem
Post by: Schranz0r on 2011-Jun-14
Verstehe das Problem nicht ganz...
Deine Tilesets haben aber Tranzparenz oder?

Gibt genau 2 Methoden um dein Problem zu fixen:

1. Du hast ein Tileset mit einer Farbe die du als Tranzparente-Farbe setzt -> SETTRANSPARENCY RGB_Farbe

2. Du machst dir eine "2D Cam" die nur das zeichnet was auch wirklich auf dem Bildschirm ist.
Performanceboost ohne ende ;)  -> http://www.glbasic.com/forum/index.php?topic=966.msg5005#msg5005

Am besten machst du beides ;)
Title: Re: Mapeditor Problem
Post by: S.O.P.M. on 2011-Jun-14
Ich habe es so, wie du in Punkt 1 erwähnst. Nur fürchte ich, berücksichtigt GRABSPRITE die transparente Farbe nicht. Zu 2: Mache ich bereits so, ich zeichne selbstverständlich nur, was auf dem Bildschirm ist.

Nachtrag:
Habe es nochmal genauer überprüft und es scheint wirklich so, ein mit GRABSPRITE erzeugtes Sprite hat keine transparente Farbe! Gernot, kannst du dazu etwas sagen?
Title: Re: Mapeditor Problem
Post by: Schranz0r on 2011-Jun-15
Setz doch einfach die transparente Farbe auf RGB(255,0,128) ekelhaftes Pink :D
Wenn du jetzt ein ein Grabsprite machst, setze hinter das eigentliche Bild einfach wieder diese Farbe.
Halbtranzparent geht so natürlich nicht.
Title: Re: Mapeditor Problem
Post by: S.O.P.M. on 2011-Jun-15
Genau dieses Pink verwende ich auch! Zuerst setze ich die transparente Farbe auf einen Farbwert, der nirgends im Tileset vorkommt, damit alles angezeigt wird. Dann lade ich das Tileset mit LOADANIM. Danach setze ich die transparente Farbe auf eben dieses Pink, gebe mit DRAWANIM jede Kachel aus und erstelle mit GRABSPRITE die einzelnen Sprites, die dann jedoch keine Transparenz aufweisen : (
Title: Re: Mapeditor Problem
Post by: WPShadow on 2011-Jun-16
Verwendest du *.png - Dateien? Ich frage, weil ich, abhängig vom jeweiligen Programm, oft das selbe Programm habe.

Mit Paint.Net z.b. geht es ganz normal, speichere ich die selbe Datei mit normalem Paint oder einem anderen Programm, dann wird die Farbe angezeigt, obwohl sie im Grunde identisch ist...
Title: Re: Mapeditor Problem
Post by: S.O.P.M. on 2011-Jun-16
Ja, verwende png Dateien. Ich speichere sie auch inzwischen mit Paint.NET ab, weil man da die Bittiefe einstellen kann. Das Windows Paint speichert png Dateien mit 32 Bit, deshalb klappt das nicht. Liegen png Dateien mit 32 Bit vor, verwendet GLBasic den transparenten Kanal, bei 24 Bit die transparente Farbe.
Title: Re: Mapeditor Problem
Post by: S.O.P.M. on 2011-Jun-16
Ich hab das Problem lösen können, allerdings glaube ich, hier trotzdem einen Bug gefunden zu haben. Solange man noch nicht mit SETTRANSPARENCY eine transparente Farbe festgelegt hat, arbeitet GRABSPRITE mit der transparenten Farbe, die Standard ist - also dieses wunderhübsche Pink. Hat man jedoch SETTRANSPARENCY einmal aufgerufen, ignoriert GRABSPRITE diese Farbe. Daher habe ich hinter die mit LOADANIM ausgegebenen Tiles jeweils ein Pinkes Quadrat gezeichnet, dann geht das.
Title: Re: Mapeditor Problem
Post by: Schranz0r on 2011-Jun-16
ne is korrekt, hatte ich auch so in meinem zweiten Post beschrieben.