Seite 1 von 2

2d Spiel: Frage zu *.png und zu Tileset`s

Verfasst: 23.07.2007 10:21
von squee
Hallo erstmal...


Für die Leute die keine Lust haben viel Geschwafel zu lesen fasse mal alles kurz zusammen. :allright:

----------------------------------------------------------------------------------

- Kann mann mit PB *.png`s laden und weden Transparenzen dargestellt?

- Ist es sinnvoller die Map auf einem Tileset basieren zu lassen oder die ganze Spiele Welt als ein Bild zu laden?

Schon mal vielen Dank! :mrgreen:

----------------------------------------------------------------------------------


Für die die mehr lesen:

Ich habe angefangen ein Rollenspiel mit dem RPG Maker zu erstellen...

Bild: http://www.enterbrain.co.jp/tkool/RPG_XP/eng/capt01.gif

... bin aber schon sehr bald auf meine Grenzen gestosen da der RPG Maker nur wenige Befehle hat.
Nun habe ich beschlossen auf eine richtige Programmiersprache umzusteigen und bin hier gelandet :mrgreen: .

Meine Idee war nun eine einzige Map zu erstellen inder ich fünf Ebenen übereinander habe.

- Die erste Ebene soll für das Hintergrundbild verwendet werden.
- Die zweite Ebene für Objekte die sich unter dem Spiele befinden.
- Die dritte Ebene für den Spieler und NPC`s
- Die vierte Ebene für alles was über dem Spieler zu sehen ist
- Die fünfte Ebene für alles was sonst noch kommen kann^^

Jetzt stellt sich die Frage ob PB ein Bildformat [am liebsten wäre mir *.png] mit Transparenzen unterstützt damit ich die Ebenen einfach übereinander legen kann.

Und dann kommt dann noch die Frage was besser ist wenn ich die Ebenen als jeweils ein Bild Speicher oder ob ich das ganze mit Hilfe von Tilesets mache.


Danke für die Hilfe. <)

link anklickbar gemacht - Kaeru fecit

Verfasst: 23.07.2007 10:36
von Kaeru Gaman
> Kann mann mit PB *.png`s laden

ja.
das programm muss dafür aber zu beginn den befehl UsePNGImageDecoder() enthalten.

> weden Transparenzen dargestellt?

jain.
simple einfarbige transparenz ist ohne probleme mit jedem ladbaren grafiktyp möglich.
(also auch bei BMP und JPG)
du definierst dafür einfach mit TransparentSpriteColor(...) die farbe, die nicht dargestellt werden soll.
für ein RPG-Maker ähnlichen stile sollte das vollauf genügen.

die spezielle ALPHA-Transparenz von PNG, also, weiche transparenzübergänge,
ist etwas komplizierter zu benutzen, aber wie gesagt, für das von dir genannte projekt nicht nötig.


> Ist es sinnvoller die Map auf einem Tileset basieren zu lassen

ja, auf jeden fall, immer.

Verfasst: 23.07.2007 10:38
von a14xerus
PNG kannst du (wenn du UsePNGImageDecoder() verwendest) laden.
Mit den Befehlen TransparentSpriteColor() und DisplayTransparentSprite() kannst du eine Farbe einstellen die Tranzparent dargestellt werden soll, und dann das Sprite zeichnen.
Oder du benutzt direkt Sprite3D

Zur Darstellung: auf jeden fall eien Tilemap benutzen.
Ein Bild für die ganz welt wäre erstens viel zu Speicherfressend, zweitens viel zu langsam in der Darstellung und drittens einfach nich schön ;)
Zum Thema Tilemap gibt es hier einige Threads.
Benutz einfach mal die SuFu und du solltest einiges finden

//edit: da war wohl Kaeru schneller ;)

THX

Verfasst: 23.07.2007 11:15
von squee
Danke :allright:

Verfasst: 23.07.2007 15:21
von Zaphod
Wie sinnvoll Tilemaps in dem Fall sind kannst du dir ganz einfach selbst ausrechnen.

Nehmen wir mal an, du willst eine Level darstellen. Du begnügst dich schon mit einer sehr kleinen Map von nur 10 mal 10 Bildschirmen, bei einer Auflösung von 800*600 Pixeln. Deine Spielwelt ist also 8000*6000 Pixel groß. Du willst den alphakanal von PNGs als transparenz nutzen, arbeitest also mit 32 bit Farbtiefe (also 4 byte). Dann brauch eine Ebene deiner map 8000*6000*4 byte Arbeitsspeicher, das sind 192 000 000 byte was rund 184 MegaByte sind. Das ganze jetzt mal 5 für deine 5 Ebenen, dann brauch alleine deine winzige Map 915 Megabyte Ram.

Da das ganze quadratisch wächst, bist du bei interessant großen levels schnell bei einigen Gigabyte Ram.



Das ganze jetzt nochmal für Tilemaps.
Du nimmst zum Beispiel Tiles von einer größe von 20*20 Pixeln und arbeitest mit Utopischen 1000 verschiedenen Tiles.
Ein Bildschirm der größe 800*600 bestünde dann aus 40*30 Tiles.
Deine 10*10 Bildschirm großen Levels also insgesammt aus 400*300 Tiles.
Du kommst mit einem Long pro Feld und Ebene aus... aber lass uns mal annehmen du möchtest richtig viel Platz verschwenden und nutzt 5 longs pro ebene, also 20 Byte pro ebene.

Dann brauch dein Level 400*300*20*5 Byte Ram + 1000*20*20*4 Byte für dein gesammtes Tileset, das sind 12000000 + 1600000 Bytes, also 13600000 Bytes, was etwa 13 MegaByte entspricht.

Verfasst: 23.07.2007 15:42
von squee
:? Boa so viele Zahlen

Naja... ich hab nicht vor nen Gothic 3 Remake zu schreiben :mrgreen:

Die Map wäre höchstens 1024px auf 768px

Aber danke, des brinkt mich weiter ich glaube die Rechnung kann ich gut gebrauchen!!!

Ich glaub deutlicher hätte man mir des nicht machen können :allright:

Verfasst: 23.07.2007 16:27
von Kaeru Gaman
> Die Map wäre höchstens 1024px auf 768px

das wär ja kaum map zu nennen... :?

wie auch immer...
selbst für sehr kleine maps sind tilemaps weit praktischer, auch aufgrund dessen,
dass du kollisionen bzw. unpassierbare felder direkt über die map checken kannst.
du braucht im endeffekt kein einziges SpriteCollision für sowas,
du rechnest das alles über koordinaten.

aber dazu kommst du erst später, mach erstmal an der map selber weiter. ;)

Verfasst: 23.07.2007 19:30
von Zaphod
Mit map meine ich nicht nur sowas wie eine Übersichtskarte, sondern quasi den Spielbereich. Selbst rpgs von 1990 hatten Levelgrößen von mehreren Bildschirmen Größe.

Das Jump and Run Turrican hatte sogar auf dem C64 Levels von mehr als dreißig Bildschirmen breite und höhe ;)

Verfasst: 23.07.2007 19:36
von squee
:shock: UPS...

Da hab ich was vregessen zu sagen... sry

Also wer von euch hat schon mal einen der alten Final Fantasy Teile gespielt?

Die Bilder in der Map werden mit nem 3d Tool erstellt und wenn mann z.B.: mit dem Chara nach oben läuft dann wird die Grafik des Charas in bestimmten Abständen immer kleiner dadur ensteht eine Art 3d Effeckt^ 8)
[aber ich einige schen werden sich wiederholen desswegen ist glaub des Tileset doch besser...]

Weil ich das machen Will bin ich im RPG Maker auch an meine Grenzen gestoßen.

Die Map muss also nicht größer als 1024px auf 768px sein. :mrgreen:

Verfasst: 23.07.2007 19:42
von Zaphod
Wir meinen hier mit Map quasi die gesamte Spielwelt, nicht die Bildschirmgröße. Die Bildschirmgröße und damit der Teil der Welt der gleichzeitig gezeigt wird, spielt keine Besonders große Rolle für den Speicherbedarf.
Bei einer Tilemap wird immer nur ein kleiner Teil der gesamten karte gezeichnet.