In dieser Tutorial-Reihe aus dem Jahre 2015 zeige ich euch, wie ihr für das Spiel „Dungeons“ von Realmforge mit Hilfe der Modding-Tools, ein Monstertor im Stil von „Dungeon Keeper“ umsetzt. Im 1. Teil der Reihe planen wir unser Vorhaben und stellen sicher, dass wir alle nötigen Vorraussetzungen schaffen um mit dem Modding anzufangen. Außerdem probieren wir bereits einen ersten Lösungansatz für die Mod aus.

Vorwort

Irgendwo muss man ja anfangen mit dem Dungeons-Modding, dachte ich mir, daher habe ich mich daran gemacht ein Feature aus Dungeon Keeper in Dungeons zu implementieren.
Ich habe mich für die Umsetzung eines Monstertors(aka Eingang) entschieden. Wer Dungeon Keeper gespielt hat, weiß welchen Zweck ein solcher Eingang dient: Einmal erobert
strömen allerlei Monster durch das Tor in die düsteren Katakomben des Dungeon Keepers um im Austausch gegen Kost, Logis und jede Menge Gold, für den bösen Kerkermeister zu kämpfen. Da es so eine Spielmechanik in Dungeons noch nicht gibt, werden wir in dieser Tutorial-Reihe Schritt für Schritt eine solche Funktionalität erarbeiten und umsetzen. Seid gespannt 😉

Genereller Hinweis: Ich gehe hier sehr detailiert in die Materie. Zwar soll dieses Tutorial eher Fortgeschrittene ansprechen, aber dennoch halte ich es für sinnvoll, die Zusammenhänge so detailiert zu beschreiben, dass jeder Schritt nachvollzogen werden kann. Ich entschuldige mich daher bereits im Vorfeld bei allen, denen das evtl. auf die Nerven gehen könnte. ;P

Ich finde allerdings, dass es nie schaden kann, neben dem eigentlichen Tutorial, neue Dinge zu lernen. Daher werde ich stellenweise auch etwas abschweifen um euch einen umfassenden Überblick über die auftretenden Aspekte zu verschaffen. Dies ersetzt aber keinesfalls diverse Grundlagen-Tutorials und
ich werde darauf hinweisen, falls es weiterführende Quellen oder dergleichen gibt, die ihr euch anschauen solltet um alles zu verstehen und nachvollziehenzu können.

Nun aber viel Spaß beim Modden ;D

Die Idee

Bevor man eine konkrete Mod(oder ein Projekt im Allgemeinen) umsetzt, sollte man zunächst eine Vorstellung davon entwickeln,
was man eigentlich genau machen will und diese Idee, sofern sie etwas komplexer ist, auf (virtuelles) Papier bringen.

Das hilft vorallem dabei sich nicht zu stark zu verzetteln und bei seiner Idee zu bleiben, denn schnell fallen einen noch
hunderte andere Ideen ein, und irgendwann läuft man Gefahr nie fertig zu werden. Lasst uns nun genau das für unseren Monstereingang tun. Getreu dem Vorbild Dungeon Keeper, soll unser Monstertor folgende Dinge leisten:

  1.  Das Tor soll, genauso wie die (in Dungeons standardmäßig vorhandenen) Heldentore, zunächst geschlossen sein.
  2.  Wenn der Avatar das Tor öffnet, gehört dieses Tor dem Spieler. Anders als bei „Dungeon Keeper“ lassen wir nicht die Imps/minions das Tor erobern. Der Dungeon Lord muss das Tor also persönlich erobern.
  3.  Sofern der Spieler die gewünschten Unterschlupfe(Lairs) besitzt, werden die entsprechenden Monster gespawnt.
  4.  Die Reihenfolge soll zufällig sein und die Zeitspannen zwischen den Spawns sollen ebenfalls zufällig gewählt werden. Das Ziel soll sein, dass die Monster nicht zu schnell und im übertriebenem Maße gespawnt werden, um das Balancing zu erhalten.
  5.  Ein Tor soll nur eine bestimmte Anzahl Monster anlocken können, sobald ein Tor eine gewisse Anzahl Monster gespawnt hat, soll es seinen Dienst einstellen, und sich wieder schließen. Der Spieler muss sich dann ein neues Tor suchen und kann das Tor nicht mehr öffnen.
  6. 6.) Ein gespawntes Monster soll zu einem gewählten Sammelpunkt gehen, sobald es gespawnt wurde.

Puh, dass ist eine ganze Menge Implementationsstoff, aber keine Sorge: Ich werde jeden Schritt mit euch genau durchgehen und genau erklären wie wir all das entsprechend umsetzen können.

Nachdem wir also nun wissen was genau wir machen wollen, kann es mit dem Modding losgehen!

Hinweis: Wie eingangs erwähnt, kann es sich lohnen auch einen komplexeren, umfassenderen Plan zu erstellen, je nach Größe
und Komplexität wird dies sogar zwangsläufig notwendig. Da es sich bei unserem Monstertor aber um ein relativ kleines Feature
handelt, soll uns diese einfache Liste für dieses Tutorial reichen.

Vorbereitung

Versichtert euch zunächst, dass ihr alle erforderlichen Tools habt um mit dem Modding zu beginnen. Ihr benötigt auf jeden Fall:

  1. Dungeons(logo ;). Da das Tutorial VOR Veröffentlichung von Dungeons: The Dark Lord geschrieben wurde, beziehe ich mich hier ausschließlich auf das Hauptspiel OHNE Erweiterung!
  2. Den Dungeons Map-Editor. Ich würde dazu empfehlen ihr installiert die „gimme_editor„-Mod von imi(zu finden hier: Download). Alternativ kann man auch die config-Datei bearbeiten, sodass ihr den Map Editor verwenden könnt. Ich würde aber Ersteres empfehlen da es so deutlich leichter ist, den Editor zu starten!
  3. Einen Editor zum Erstellen und Bearbeiten von Lua-Dateien(z.B. NotePad, NotePad++, LuaEdit, etc.). Wie viele Funktionalitäten ihr braucht hängt von euch ab. Mir reicht meistens NotePad und NotePad++ aber viele Leute lieben ja „Auto Correction“ und dererlei Schnick Schnack 😉
  4. Einen Editor zum Bearbeiten und Erstellen von XML-Dateien, hier gilt das selbe wie oben: NotePad reicht, aber nehmt was immer euch gefällt! Ich nutze für beides Notepad++.

Nachdem ihr alles installiert habt, kann es mit dem Modding endlich los gehen!

Erste Lösungsansätze

Irgendwo müssen wir anfangen und am wichtigsten ist immer, sich zu Beginn zu überlegen wie man eine bestimmte Sache umsetzen will bzw. welche Möglichkeiten es gibt, ein bestimmtes Ziel zu erreichen. Sofern es für euer spezielles Problem keine bekannte und erprobte Lösung gibt bzw. kein so tolles Tutorial wie dieses hier(*hust* Eigenlob *hust*),  müsst ihr versuchen, aus dem was ihr habt, eine eigene Lösung zu basteln.

Offenkundig scheint es zunächst am einfachsten zu sein, das bereits vorhandene Heldentor als Ausgangspunkt zu nutzen um es Monster spawnen zu lassen. Probiert es im Editor einmal aus. Startet den Dungeons-Map-Editor, und geht im Haupt-Panel auf das  „Scene Editing„-Panel. Gebt dort im Search-Feld „gate“ ein. Sucht dort das „derived_l0_room_herogate“ und platziert es dann irgendwo auf der Map. Nun verbindet das Tor mit dem Throne-Room indem ihr im Map-Editor einen Gang vom Throne-Room zum Heldentor zieht, sodass wir später testen können
ob unser Experiment erfolgreich war. Ihr solltet euch immer solche Testlevels bauen, die euch das Testen möglichst
einfach machen. Das erleichter die Arbeit ungemein! Sind Tor und entsprechende Gänge platziert, geht in zum „Object Edting„-Panel und wählt das eben erstellte herogate aus.

Geht auf die „Components-Liste“ und sucht die Komponente „HeroEntrance“ und klickt darauf. Danach sollte sich die Liste
mit den Eigenschaften der Komponente öffnen. Sucht nach dem Eintrag „ClassDistribution“ und klickt rechts auf  die Schaltfläche mit den drei Punkten(„…“). Im sich darauf öffnenden Fenster könnt ihr jetzt per Hinzufügen eurer Monster hinzufügen. Der obere Wert gibt an wieviel Pretige ihr haben müsst, damit diese Helden gespawnt werden. Der zweite Wert ist der Name eures Helden. Wir nehmen „derived_l0_m_skeletonwarrior„.

 

Hier sehr ihr einen Screenshot was ihr bis zu diesem Zeitpunkt haben solltet:

(Bild anklicken für eine größere Version)

Schließt das Fenster danach. Speichert dann die Karte ab. Das geht im „Scene Editing„-Panel ganz unten. Einfach einen Namen angeben z.B. „testmap1“ und dann auf „Save“ drücken. Eine Statusnachricht verfärbt sich grün und meldet „Save successful!“ wenn alles funktioniert hat.

Beendet den Editor und startet das Spiel neu. (Ihr könntet auch den grünen Knopf im Editordrücken, das klappt bei mir allerdings nicht. Der Editor ist etwas verbuggt weshalb das Spiel abstürzt, wenn ich versuche, die Map direkt über den Editor zu starten. Sollte es bei euch funktionieren, dann freut euch also wie ein Keks :D)

Wenn ihr den Weg nehmen wollt, den ich nehme, startet also das Spiel neu und geht dann im Hauptmenü auf „Einzelspiel“ und wählt eure „testmap1″(oder wie ihr sie genannt habt) aus. Nach kurzer Ladezeit sollte eure Karte geladen werden. Versucht dann einmal mit eurem Dungeon Lord das Tor mit rechten Maustaste zu öffnen. Sofern keine Fehlermeldung kommt, wird entweder kein Monster gespawnt, es wird fehlerhaft gespawnt (oder sogar ganz verrückt: es werden hunderte Helden direkt bei eurem Dungeonherz gespawnt 8O) Wie dem auch sei: Es wird nicht funktionieren, zumindest nicht so wie es soll…

Offenbar ist es nicht möglich einfach dem Heldentor Monster zu übergeben, obwohl der Editor nicht merkt, dass die Eingabe falsch ist. (an die Entwickler: hint!hint!) Warum hab ich böser Tutorialschreiber euch das nun machen lassen, oder zumindest versucht euch dazu zu bewegen, wenn ihr zu denen gehört die nicht nebenbei immer jeden Schritt mitverfolgen? 😉 Es ist wichtig festzustellen, dass Probleme sich oft auf verschiedene Weise lösen lassen oder eine offensichtlichen Lösung doch nicht
zum gewünschten Ziel geführt hat(wie in unserem ersten Versuch). Rauszufinden ob und warum es nicht funktioniert, kann kann hin und wieder  ein paar Stunden in Anspruch nehmen, je nach dem wie komplex das Problem ist oder wie schwierig die Modding-Tools zu bedienen sind! Manchmal kann es sogar Tage dauern!(bei experimentierfreudigen Leuten wie mir zumindest) Wenn etwas also nicht funktioniert, scheut euch nicht darüber nachzudenken andere Wege einzuschlagen, wenn ihr mal gar nicht weiter wisst, könnt ihr mich auch gerne über das Kontakt-Formular kontaktieren. Vielleicht kann ich euch ja weiterhelfen 😉

Zurück zu unserem Problem: Unsere erste Idee hat nicht funktioniert. Eine andere Idee Monster aus dem Heldentor zu spawnen wäre, aus den Monstern sozusagen Helden zu machen. Dazu muss man nur eine vorhandene Helden-Datei aus dem Ordner object_description/characters duplizieren(z.B. den l0_h_adventurer) und diese dann so abändern, dass der Abenteuerer zum Skelettkrieger wird(oder was auch immer). Zu finden sind diese Dateien im Hauptordner von Dungeons unter: „<euer Installationsverzeichnis>\Dungeons\data\object_descriptions\characters“ Um aus einem Helden ein Monster zu machen, muss man theoretisch nur Mesh-Dateien ändern und man hat (theoretisch) das was man will.

Auch das klappt, ihr ahnt es sicher schon, leider nicht wie gewünscht. Zwar funktioniert das, es wird sogar als Spawnvorschau das Skelett angezeigt und auch korrekt gespawnt, leider bewegt sich das Monster dann aber animationslos über den Boden, reagiert nicht auf Feinde wie den Lord und kann auch sonst nicht mit der Spielwelt interagieren. Der Grund ist relativ logisch: Das Monster hat weniger Animationen als die Helden.
Er kann also nicht Bewundern oder Truhen benutzen. Außerdem hat das Monster immernoch das Verhalten des Helden, und schließlich wollen wir ja Monster für unseren Lord rekrutieren. Offenbar ist also auch das nicht die richtige Idee.

Wie schaffen wir also, dass unsere Monster bei einem Tor gespawnt werden? Damit beschäftigen wir uns dann im 2. Teil dieser Tutorialreihe!

Zusammenfassung

In diesem Teil haben wir uns mit der Planung der Idee, den Vorraussetzungen fürs Modding, sowie mit einer ersten Umsetzungidee beschäftigt. Im nächsten Teil werden wir uns dann weiter damit befassen eine Lösung zu erarbeiten und die geplanten Features Schritt für Schritt umzusetzen.

Ich hoffe euch hat es bis hier hin gefallen. Wir sehen uns in Teil 2 😀

Der IndiVisualCoder

Datenschutz und Urheberrechtshinweise:

Alle hier gezeigten Bilder, Namen und als solche markierte Code-Ausschnitte sind Eigentum von Kalypso-Media und Realmforge und dürfen auch entsprechend nur unter den geltenden
Urheberrechtsbestimmungen verwendet werden.

Der gesamte Text dieses Tutorials sowie die selbstgeschriebenen Code-Beispiele sind (sofern nicht anders angegeben) von mir selbst erstellt. Zitate und Verlinkungen zu diesem Tutorial sind ausdrücklich erwünscht. Veränderungen, Wiederveröffentlichungen, Hinzufügen zu Bundles oder andere Nutzungen sind hingegen ausdrücklich nur mit meiner Erlaubnis zu tätigen. Vielen Dank! 🙂