Wie Programmiert man ein 2D Top Down RPG Spiel?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Am besten beginnt ihr mit dem üblichen Analyseprozess, der euch bewusst macht, was ihr wollt und was ihr braucht. In der Spieleprogrammierung redet man hier von einem Game Concept (Lastenheft) und einem Game Design Document (Pflichtenheft). Auf Gamasutra findet sich ein wegweisender, mehrseitiger Artikel dazu: The anatomy of a design document.

Ihr werdet merken, dass ihr euch wahrscheinlich mit mehreren verschiedenen Themen ausführlicher beschäftigen müsst, wenn es gut werden soll.

  • Game Design und Game Logic
  • Software Architektur - speziell für Spiele
  • Bestimmte Algorithmen wie A*
  • Projektdesign - Code Konventionen, Strukturierung, gemeinsames Arbeiten über ein Versionverwaltungssystems, u.ä. - lies dazu hier
  • Storytelling
  • Video-, Grafik und Audiogestaltung - sowie die Handhabung der entsprechenden Software dazu
  • Datenserialisierung

Der letzte Punkt ist beispielsweise schon einmal einer jener, welcher als Basisfunktionalität geführt werden dürfte und bei dem entschieden werden muss, wie flexibel er gestaltet werden soll. Welchen Einfluss sollen Spieler auf Spieldaten haben?

Für eine eigene Engine wird dies also ein wichtiges Thema - ebenso Probleme wie Grafikrendering oder Audio- und Textwiedergabe. Ihr solltet euch da bestehende Bibliotheken nehmen, um einiges an Aufwand einzusparen. Je nachdem, wie komplex die Engine werden soll, könnten noch Themen wie GUI-Design oder Scripting / Themen der theoretischen Informatik (Grammatiken, u.ä.) hinzukommen. Mein Ratschlag wäre aber, es so einfach wie möglich zu halten und lediglich Bibliotheken zusammenzunehmen, die die jeweiligen Funktionalitäten bieten. Umso komplexer eine Engine wird, umso mehr entfernt ihr euch von dem eigentlichen Ziel, das gewünschte Spiel zu entwickeln. Einfach ist so ein Unterfangen auch nicht.

Weiterhin ist es notwendig, dass ihr mehr recherchiert und euch über den üblichen Aufbau von solchen Spielen informiert. Open-Source-Projekte finden sich in diesem Bereich ja auch zuhauf. Im Folgenden kann ich ein paar Methodiken anreißen:

Üblicherweise bauen Spiele auf einer draw loop auf, die, wie es der Name schon sagt, das Zeichnen der einzelnen Spielelemente übernimmt. Elemente, die im Spiel gezeichnet werden sollen, müssen in dieser Schleife also registriert werden. Ein simples Beispiel zur Veranschaulichung:

Snake snake = new Snake();

void draw() {
  while(true) {
    snake.draw();
    wait(timePerFrame);
  }
}

Elemente, die in ihr gezeichnet werden, können noch weiter unterteilt werden. So könnten in der draw-Methode für die Schlange die einzelnen Segmente gezeichnet werden.

Das zu zeichnende Spielfeld wird in ein Raster aufgeteilt (Tilemap). Damit das Spiel mehr Räumlichkeit bekommt, unterteilt man es in verschiedene z-Ebenen. Diese werden durch die Reihenfolge, in der man zeichnet, bestimmt.

Hat man also eine Wiese, einen Spieler und einen Baum, dann zeichnet man diese auch in der genannten Reihenfolge, sodass der Baum im Vordergrund liegt, die Wiese hingegen im absoluten Hintergrund.

Eine simple Tutorial-Serie, die auch in deutscher Sprache ist, findet sich hier. Sie eignet sich zur Erklärung wesentlicher Grundelemente.

Welche Überlegungen habt ihr euch denn bisher gemacht? Woran genau hängt es? Planung, Verständnis der Umsetzung von Top-Down-Ansichten, generell Spielentwicklung, oder was?

Top-Down im Sinne von oben herab (Snake, die ersten GTA) oder eher 2.5D (Binding of Isaac)?

PS: Wir Programmieren nicht mit Unity sondern wollen eine eigene Engine benutzen

Unity ist nicht die einzige Engine. Warum entwickelt ihr nicht nicht in Unreal, GM, CryEngine, oder sonst einer anderen Engine?

Habt ihr eure eigene "Engine" bereits entwickelt?

Wenn ihr bereits programmieren könnt, dann braucht ihr keine Tutorials. In deutscher Sprache werdet ihr sowieso kaum welche finden - schließlich programmiert man auch auf Englisch.

Woher ich das weiß:Berufserfahrung

Cyrius773 
Fragesteller
 12.08.2018, 21:47

Nein die Engine haben wir noch nicht entwickelt und mir ist bewusst das man in Englisch Programmiert aber mir fällt wieso auch immer der Anfang schwer...

Wenn ich dann einmal drin bin hab ich fast keine Probleme mehr...

0

In welcher Sprache wollt ihr den das Spiel programmieren bzw. welche Sprachen könnt ihr den? :)


Wir Programmieren nicht mit Unity sondern wollen eine eigene Engine benutzen

Überlegt euch das nochmal gut. Ich weiß, dass man gerade als Programmieranfänger ganz heiß darauf ist, seine eigenen Sachen zu programmieren, aber ich behaupte mal, euch ist nicht bewusst, was ihr da vorhabt.

Um euch zu verdeutlichen, was da auf euch zu kommt, wenn ihr eure eigene Engine programmiert: http://preshing.com/20171218/how-to-write-your-own-cpp-game-engine/ Das its C++, das kann deutlich mehr als Java, nur um euch mal zu zeigen, was da so abgeht bei einer eigenen Engine.

Sonst kann ich euch zum Stöbern empfehlen:

Es hat schon Gründe, warum eine Engine wie Unity so populär ist :)