2d, Top-Down-Karte mit verschiedenen Ebenen

7

Also erstelle ich ein 2D-Top-Down-Spiel auf Sprite-Basis (gekachelt) und arbeite gerade an Karten (im Moment ein Karteneditor, aber es werden meine Karten erstellt, also im Grunde das gleiche Ding).

Das Szenario

Also denke ich über Effizienz nach und erstelle eine Karte in Teilen. In jedem Stück habe ich vor, "Schichten" zu haben. Grundsätzlich habe ich vor, es auf ein Level unter dem Helden und ein Level über dem Helden zu rendern, wobei der Held offensichtlich dazwischen gerendert wird. Es wird wahrscheinlich auch eine Ebene geben, die dem Helden ebenbürtig ist, aber ich bin noch nicht ganz da. Ich mache mir noch nicht einmal Sorgen um Ereignisse oder Interaktionen. Ich suche nur nach einem Helden auf dem Bildschirm.

Für die Bewegung muss ich natürlich wissen, welche Kacheln in welche Richtung bewegt werden können. Mein Plan im Moment ist, dass jede Kachel 8 Bits bekommt (4 'können in Richtung' Bits eintreten, 4 'können in Richtung gehen'). Dadurch kann ich die Bewegung begrenzen und sogar eine Richtungsbewegung in eine Richtung zulassen.

Das Dilemma

Dies funktioniert hervorragend für viele Szenarien. Es ermöglicht mir, eine Karte in im Wesentlichen 3 Ebenen, einer Zeichenfolge, zu speichern, und gibt mir Flexibilität für die Zukunft. Ich kann jedoch keine Karten erstellen, die selbst Ebenen haben. Ein gutes Beispiel ist eine Brücke, bei der der Benutzer unter oder über die Brücke gehen kann, ohne dass ungültige Bewegungen zulässig sind. Ich kann keine Plattform erstellen und keine Bewegung darunter zulassen. Dies sind Dinge, die ich gerne in mein Spiel aufnehmen möchte.

Meine Idee

Theoretisch könnte ich mehrere Heldenschichten zulassen und dann mehrere Sätze von Unter- und Oberschichten (oder Sandwichschichten) zulassen. Dies verkompliziert jedoch mein System und macht die Bewegung zwischen Karten möglicherweise schwierig (Wenn sich der Held auf der dritten Ebene am Rand einer Karte befindet, dies aber der zweiten Ebene auf der anderen Karte entspricht, wie kann ich Bewegung zulassen oder nicht zulassen).

Meine Frage

Gibt es eine bessere Möglichkeit, mehrere Karten mit mehreren Ebenen wie dieser zu verwalten, bei denen eine Benutzerebene auf verschiedenen Ebenen auf verschiedenen Karten "verbunden" sein kann?

Oder auch...

Mache ich das auf die harte Tour? Gibt es eine Standardmethode für den Umgang mit 2D-Kacheln von oben nach unten, die mir einfach nicht bekannt sind?

Dinge zu beachten oder das könnte hilfreich sein

  • Dies erfolgt in Javascript (in JSON übertragen)
  • Der Status muss schnell übertragen werden, daher sollten eine Karten-ID und eine x / y / Richtung ausreichen, um einen booleschen Wert für "Verschieben" zu erhalten
  • Karten haben keine Standardgröße (obwohl sie sich in einer bestimmten Anzahl von Kacheln befinden)
  • Es ist hilfreich, ein Editor-Tool zu erstellen, damit andere helfen können. Daher ist etwas hilfreich, das ich in einem Tool erstellen kann
  • 'Teleportations'-Standorte müssen wahrscheinlich vorhanden sein, um Karten erstellen und zu und von verschiedenen Kartensätzen zu gelangen (die nicht unbedingt verbunden sein müssen), wurden jedoch noch nicht erstellt (im Moment mit Ereignissen zusammengewürfelt).
LoveAndCoding
quelle

Antworten:

2

"Unter Held" Level und ein "Über Held" Level

Warum müssen diese Schichten für den Helden relevant sein? Sollte es nicht das Gegenteil sein, da der Held ein aktuelles Level hat, auf dem er sich befindet? Befindet sich der Held auf Stufe 1, werden alle Stufen über Stufe 1 nach oder über dem Helden gezogen. Dies funktioniert für eine beliebige Anzahl von Ebenen, sodass Sie nicht auf zwei Ebenen beschränkt sind. Sie können den Spieler verfolgen lassen, auf welchem ​​Level er sich befindet, und ihn mit der grundlegenden Kollisionserkennung ändern. Eine Wand-zu-Wand-Reihe von Kacheln oben auf einer Treppe kann den Spieler auf Ebene 1 setzen, wobei der Spieler auf ähnliche Weise auf Stufe 0 am unteren Ende der Treppe gesetzt werden kann.

Sie würden nur eine Kollisionsprüfung für die aktuelle Ebene durchführen, sodass Sie im Falle eines Untergangs der Brücke direkt darunter gehen könnten, wenn auf Ebene 0 kein Hindernis vorhanden wäre, während alle oben genannten Ebenen nur gerendert würden.

ClassicThunder
quelle
Weißt du, ich hatte ursprünglich wegen des Editors von diesem Ansatz abgewichen, aber ich denke, du hast Recht, das wird am sinnvollsten sein. Ich denke, ich mache einfach Ebenen im Editor, gruppiert nach Ebenen, und mache ebenenbasierten Bewegungsraum. Vielen Dank
LoveAndCoding