Mapeditor Problem

Previous topic - Next topic

S.O.P.M.

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]
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Schranz0r

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 ;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

S.O.P.M.

#2
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?
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Schranz0r

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.
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

S.O.P.M.

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 : (
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

WPShadow

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...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

S.O.P.M.

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.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

S.O.P.M.

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.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Schranz0r

ne is korrekt, hatte ich auch so in meinem zweiten Post beschrieben.
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard