Sprite Candy - Scrollende Map

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Iguan

Betreff: Sprite Candy - Scrollende Map

BeitragFr, Jan 06, 2012 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute

Bevor ich mich an mein erstes Projekt (Space Shooter) mit "Sprite Candy" haran wage, wollte ich mal eure Meinung zu meinen Ideen wissen. Hauptsächlich geht es mir erstmal um die Landschaft die vorbeizieht (von rechts nach links).
Auf Jedenfall möchte ich einen kleinen Editor Basteln, mit dem ich die einzelnen Tiles der Landschaft platzieren kann. Die Tiles sind alle mindestens 16x16 pixel gross, können aber auch 16*32, 128x32, 512x16 etc sein... (im 16er Raster also). Da eine ImageResource-Datei nicht ausreichen wird um eine abwechlungsreiche Landschaft zu erzeugen, dachte ich da an so ca. 7-10 stück in der grösse von 512x512 pixel.


Idee 1:
HUD erstellen, Layer erstellen, einem 2D-Array Sprites hinzufügen (mit dem Befehl HUD_CreateImage) (Position gemäss den Editordaten). Dabei würden einige Array-Zellen leer bleiben, da manche Sprites ja grösser als 16x16 Pixel sind.
Anschliessend alle diese Sprites einer Gruppe hinzufügen und dann die ganze Gruppe von links nach rechts bewegen.

Nachteil:
Da es viele Sprites geben kann, wird das wohl eher langsam


Idee 2:
Gleich wie Idee 1 nur werden einzelne Spalten der Landschaft (rechts) nacheinander erstellt und der Landschafts-Gruppe hinzugefügt, sobald diese in den sichtbaren Bereich kommen. Verlassen Sie das Bild auf der linken Seite werden sie von der Gruppe entfernt und gelöscht.


Idee 3:
Den Layer zwei Bildschirme weit mit Sprites bepflastern, und anschliessend den ganzen Layer um eine Bildschirmbreite nach links bewegen. Danach den zweiten Bildschirm (nicht sichtbar, da rechts ausserhalb des Bildschirmes ist) mit den neuen Tiles zeichnen..und wieder den ganzen Layer nach links verschieben etc...


Idee zur Kollisionsabfrage:
Da kleine Explosionen gezeichnet werden müssen, wenn ein Schuss auf die Landschaft trifft, dachte ich daran, den Editor so zu bauen, dass man frei definierbare Kollisions-Polygone setzen kann (Entlang der Landschafts-Kante). Sobald ein Schuss im Poygon ist, wird er gelöscht und eine Explosion auf seine Koordinaten gesetzt.
Ich weiss, dass Sprite Candy bereits Funktionen mit Collisions-Shapes anbietet, jedoch denke ich, dass wenn jedes Tile der Landschaft so ein Shape besitzt, das ganze ziemlich träge wird...




Nun zu meinen Fragen:

Was denkt Ihr darüber?
Und wie würded Ihr das ganze Lösen? Ich hoffe jemand kennt sich ein wenig mit "Sprite Candy" aus - falls nicht und Interesse vorhanden: http://www.x-pressive.com/SpriteCandy/

Gibt es bessere varianten eine Tile-Map mit SpriteCandy zu realisieren? Ich habe leider keine Code-Beispiele diesbezüglich gefunden... Rolling Eyes


mfg

Iguan

Xeres

Moderator

BeitragFr, Jan 06, 2012 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Von SpriteCandy verstehe ich nichts, aber die spaltenweise Anzeige (2) klingt doch gut.
Die Kollision sollte durch das Array doch ausreichend genau sein? Da würde ich nicht all zu große Geschütze auffahren.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Iguan

BeitragFr, Jan 06, 2012 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Array-Kollisionsabfrage genügt deshalb nicht, weil gewisse Tiles z.B 128x64 gross sind und dabei Schräge kanten haben können... Beispiel: Tile eines Berges
 

PhillipK

BeitragFr, Jan 06, 2012 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal:
Fall 2 klingt am besten. habe allerdings auch keine ahnung, wer oder was Sprite Candy ist Smile

Zum anderen: Wenn du die Sprite-Candy interne kolli nicht nutzen willst, nimm trotzdem die array variante.
Es wird - so vom lesen - ein viel größerer aufwand, die richtigen Collision-Polys mit der Landschaft zu erstellen und zu bewegen, als ein kleineres Tile-kolli-system zu schreiben.

Ich dachte da an gewisse Kollisionsmasken. du musst die maske natürlich nicht auf 16x16 auflösen, es würde (je nach gamespeed) auch ein kleineres raster tun. Zb 4x4 Smile
Am ende musst du nurnoch position des Schusses auf das Array-raster brechen (also hier: Posx/16 und Posy/16 + versatz des mapscrollings) und mit der entsprechenden Maske vergleichen.
Vorteil wäre, das du deine Tiles gleich mit maske im editor "erstellen" kannst und sie nur zusammen verwendest. Nachteil wäre, das du ein tile was einmal kollidiert und einmal background ist, 2x erstellen müsstest (oder das ganze entsprechend anders organisieren müsstest)

Naja, viele wege führen nach rom Smile

Iguan

BeitragFr, Jan 06, 2012 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für eure Meinung... das mit der Array-Kollision kommt leider nicht in Frage, wie ich es schon vorhin geschrieben habe, gibt es auch grössere Sprites, wessen Bildinhalt nicht rechtwinklig zum Raster ist....


PS:
Sprite Candy ist eine Engine, die 2 Dimensionales Bildmatrial auf 3D-Sprites legt. Dadurch kann der Speed der Grafikkarte voll ausgenutzt werden. Hier ist nochmals der Link: http://www.x-pressive.com/SpriteCandy/

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group