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).