Einzelnen Beitrag anzeigen

Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#6

AW: Welt bewegt sich um Spieler

  Alt 11. Nov 2010, 17:09
Fui-Tak's Methode ist schon ganz gut, Aber ich würde zb anstatt Texturname, ne ID verwenden oder direkt XY koordinaten für die Tile, da es bei Tilefgames für gewöhnlich gebräuchlich ist, eine Datei zu haben, in der alle für den/das Level benötigten statischen grafiken sind.

Hinzu kommt noch, dass es vielleicht praktischer wäre, anstatt die map zu scrollen, eine neue Komponennte abzuleiten.

z.B. von TImage(nehm ich immer fürs zeichnen ).
Die nennst du VIEW, und die besitzt auch gleichzeitig die zwei neuen Attribute Pos_X/Pos_Y.
Alle Views werden in einer Liste gespeichert.

Dann bastellst du dir eine Render routine. Dieser Routine wird der View übergeben(also pro zyklus ein aufruf pro View in der liste). Die routine zeichnet dann in Abhängigkeit der View Attribute Pos_X/Pos_Y die Map und deren Objekte auf den Übergebenen View. Das gibt dir z.B. automatisch die Möglichkeit Splitscreens zu erstellen(vielleicht brauchst dus jetzt nicht, aber mal nen denkanstoss).
Anhand der View Position und der Größe der View in Pixeln kannst du mithilfe der Tile größe ersteinmal unter anderem bestimmen, wieviele Tiles überhaupt in den View passen UND darauf einfach die angegebenen tiles um die Viewposition zum rendern abfragen und Somit jedemenge rechenleistung sparen.

Dank des 2d Arrays aus dem die Map erstellt wurde, sind auch automatisch die nachbarfelder bekannt, was das suchen nach Soliden blöcken unter anderem für Kollision erleichtert.

Gleichzeitig sollte deine Map nocheinmal in grobe regionen unterteilt werden(z.B. 32*32 Tiles, jenachdem wie gross ein tile ist). Wenn ein Objekt erstellt wird(item oder sonstiges dass sich zur laufzeit ändert, also auch spielerfigur) Wird es anhand seiner Position in die Region eingeordnet(jede region hat zb ne liste mit den beinhaltenden objekten), so ist es leichter und performanter nach dynamischen beweglichen objekten zu suchen, um events oder kollision auszulösen)
Verlässt ein Objekt seine aktuelle region, muss es selbstverständlich in die neue eingeordnet und aus der alten entfernt werden.

Und jetzt habe ich wieder von allem und nichts erzählt

Also wiegesagt, das obrige sind nocheinmal ein paar techniken die es dir vereinfachen sollten das Spiel zu verwalten, und somit sogar ne kleine enginen Bilden(DAs obige sind zb Strukturen die ich nutze wenn ich 2d/ 2dTileengines Schreibe)


MFG
Memnarch
  Mit Zitat antworten Zitat