2D Level Design / Bearbeiten / Speichern von Fragen [geschlossen]


12

Ich dachte darüber nach, ein einfaches 2D-Sidescroller-Spiel wie SuperMario zu machen. Dann habe ich mich gefragt, wie ich die Levels für das Spiel speichern, laden oder erstellen soll. Das erste, woran ich dachte, war ein einfaches Block-PNG zu zeichnen, das das Level repräsentiert und alle Teile, in denen der Spieler laufen kann, in einer bestimmten Farbe (vielleicht Flieder) anordnet. Ich würde das Level in Blöcken oder Kacheln importieren, damit ich nach Kollisionen suchen kann.

meine fragen sind also:
gibt es dafür bessere methoden?
Was sind die professionellen Methoden dafür?
soll ich das mit Tiles und einem auf Tiles basierenden Map Editor machen? (aus irgendeinem Grund mag ich das nicht, aber ich denke, wenn es die beste Methode ist, die ich verwenden würde)
Mit einem Level auf Kachelbasis, wie würden Sie Steigungen erkennen und wie würden Sie sie auf Kollisionen überprüfen?

Antworten:


10

Für ein 2D-MMO verwenden wir http://www.mapeditor.org/ . Wir verwenden mehrere Ebenen für Hintergrund, Hintergrunddekoration, Objekte auf der gleichen Ebene wie die Spieler und Objekte vor dem Spieler. Und eine zusätzliche Ebene mit nur einem roten Quadrat, um Kollisionen zu markieren.

Ich bin nicht sicher, ob dieser Ansatz oder die Software für einen 2D-Side-Scroller geeignet sind, aber es kann sich lohnen, einen Blick darauf zu werfen.


+1. Es ist ein großartiges Werkzeug. Es ist auch Open Source, sodass Sie es bei Bedarf erweitern können.
Janis Kirsteins

Das ist wirklich ein gutes Tool, ich habe es getestet und hatte kein einziges Problem, es in mein Spiel zu importieren.
Simiil

1
OK, jetzt möchte ich wissen, wie man Levels erstellt, die nicht auf Kacheln basieren, wie die Welten in Würmern, aber ich schätze, ich werde dies eines Tages in einer neuen Frage stellen
Simiil,

6

Ein üblicher Weg könnte zum Beispiel nur eine Zeichenfolge sein

0,0,0,0,0,0,1,1,1,0,0,0,2

Wobei 0 ein Block wäre, auf dem man laufen kann. 1 könnten Stacheln und 2 die Ziellinie sein

Sie lesen dies einfach durch eine Textdatei ein (oder lassen es fest im Spiel codieren) und zeichnen den relativen Block, der der Zahl zugeordnet ist, und lassen Ihre Kollisionslogik so behandeln, wie sie eingerichtet ist.

Natürlich können Sie jedes gewünschte Format auswählen und 0 bedeutet vielleicht, dass Sie 5 begehbare Blöcke zeichnen.

Dies ist nur eine Möglichkeit, dies zu erreichen.

http://www.smudgedcat.com/tut_tiledlevel.html Dieser Link ist ein Beispiel in C # unter Verwendung des XNA-Frameworks. es wird Ihnen eine grobe Vorstellung geben (es enthält KEINE Steigungen, aber eine ähnliche Sache könnte verwendet werden, um diese Art von Fall zu definieren)

Grüße Mark


Genau so hat "Excite Bike" seine eigenen Karten auf dem Nintendo erstellt. vc.nintendolife.com/games/nes/excitebike
Stephen Furlani

5

Alt-Text

Viele Spiele verwenden eine Open-Source-Anwendung namens Mappy . Es hat ein eigenes Format, das mehrere Ebenen und andere Funktionen unterstützt. Möglicherweise möchten Sie einer bestimmten Kachel mehrere Datentypen zuordnen.


Ich denke, dass der In-Game-Level-Editor-Ansatz sehr verbreitet ist. Der Entwicklermodus ist ein Insider-Bericht darüber, wie die Levels für ein sehr beliebtes Spiel, Braid, entworfen wurden. Das Spiel hat einen Entwicklungsmodus, in dem Level erstellt / geändert werden können. Die Ebenen selbst haben eine Kollisionsebene, die mit grafischen Kacheln bedeckt ist:

Alt-Text


Ich persönlich empfehle es nicht, aber ein 2D-Demoprogramm für Allegro verwendete eine Art 3D-Modellierungsformat und konvertierte es in ein benutzerdefiniertes In-Game-Format. Der Vorteil war, dass sehr glatte, durchgehende Oberflächen modelliert werden konnten. (Es war ein 2D-Physik-basiertes Skateboard-Spiel.)

Um die Level-Daten des Allegro-Demospiels zu bearbeiten, verwenden wir das kostenlose Open-Source-Tool Blender. Sie erhalten es hier:

http://blender.org

Hier sind Schritt für Schritt Anweisungen, wie es funktioniert:

1) Legen Sie die Datei ademo_export.py in Ihrem Blender-Skriptordner ab. Es ist das Exportskript, das vom .blend-Format in das vom Demospiel verwendete .txt-Format konvertiert. Unter Unix lautet der Pfad:

~ / .blender / scripts / ademo_export.py

2) Laden Sie den .blend File Blender. Geben Sie unter Unix Folgendes aus dem Verzeichnis mit der Datei level.blend ein:

Mixer -w level.blend

(Das -w ist die Verwendung von Fenstermodi, die ich bevorzuge.)

3) Bearbeiten Sie die Ebene. Im Menü unter

Hilfe -> Skripte Hilfe Browser -> Exportieren -> Allegro Demo Game Level

Hier finden Sie einige nützliche Tipps.

4) Speichern Sie die Datei (verwenden Sie vor dem Festschreiben die Komprimierung). Exportiere es als .txt aus dem Export-Menü und wähle Allegro Demo Game Level.

5) Aktualisiere level.dat mit level.txt, das neue Level sollte im Spiel erscheinen.


2

Die 'professionellen' Methoden würden wahrscheinlich einen sehr detaillierten Karteneditor beinhalten, wahrscheinlich in C #, der ihnen die volle Kontrolle über alles geben würde.

Es gibt zwei Hauptansätze; man ist einfacher zu machen, aber nicht so effektiv.

  • Sie können einen Karteneditor verwenden. Entweder schreiben Sie Ihre eigenen oder finden Sie einen bereits existierenden wie Mapeditor, den Nhnb erwähnt. Eigenes zu schreiben wäre gut für eine Lernerfahrung, aber weniger für ein fertiges Produkt.
  • Sie könnten einfach Daten in eine Textdatei eingeben. Das ist einfacher, aber es ist nicht einfach, es noch einmal zu lesen. Sie könnten wahrscheinlich das gleiche aus dem Karteneditor erhalten, aber das wäre automatisiert. Der Nachteil wieder dabei ist , dass Sie keine Spezialeffekte wie bestimmte Fliesen (nicht Kachel hinzufügen können Typen , aber Fliese (13,45) zum Beispiel) besondere Dinge zu tun.

2

Ich hatte ähnliche Gedanken (z. B. wieder Spiele zu schreiben, ein Hobby - Job und andere Verpflichtungen ...)

Ich würde mir ernsthaft überlegen, wie man den 'Map Editor' als Teil des Spiels / der Anwendung entwickeln soll.

Wenn Ihr Spiel jemals über Ihren eigenen PC hinausgeht, wäre Community Content ein großer Segen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.