Diablo 2 Modding Guide – Einführung in Ds1Edit

So, lange hab ich´s versprochen und immer wieder aufgeschoben, aber jetze is jenuch – hier kommt der Crash-Kurs zum
derzeit wohl besten Leveleditor für Diablo2 bzw. LoD.
Ein ganz dickes Dankeschön geht natürlich an Paul Siramy, der dieses tolle Tool programmiert hat. Bevor Gerüchte oder
Vermutungen entstehen, ich habe damit gar nix zu tun gehabt, das ist einzig und allein sein Verdienst und auch der Vorarbeit
von Iselveo und Clannad zu verdanken, ohne die Paul wesentlich mehr Arbeit gehabt hätte.
Im Sinne der deutschen D2-Modding-Gemeinde ein dickes Dankeschön an sie!

So, jetzt gehts aber los, viel Spaß bei der Lektüre!


Wie versprochen hier eine Einführung in das Leveleditieren mit dem netten Tool von Paul Siramy. Da
offenbar einige von Euch Probleme haben damit umzugehen und einige Funktionen auch nicht ganz schlüssig sind, werd ich hier
mal das Wesentliche erläutern, sodass ihr am Ende in der Lage seid:

  • die mitgelieferten Levels zu editieren
  • beliebige andere Levels aus D2 / LoD zu editieren
  • Objekte und Tiles bestimmter Karten in (fast) jeder beliebigen zu verwenden

Als Voraussetzung ist es erforderlich, dass ihr zumindest wisst, wie man Dateien aus den MPQs extrahiert (z.B. mit MPQView),
wie man TXT-Dateien verändert (z.B. mit D2Excel) und wie man diese wieder in die MPQ-Dateien einfügt (etwa mit MPQ2K). Das reicht
im Grunde für die meisten Sachen völlig aus. Falls ihr davon noch nichts versteht, solltet ihr Euch den Anfänger-Guide in der
Mod-Sektion der D2de-Hauptseite zu Gemüte führen, in dem all diese Sachen erklärt werden.

Wir beginnen damit, das Tool erst einmal runterzuladen
hier

Zur Auswahl stehen zwei Versionen, eine für Windows und eine für MS-DOS (auf die ich hier nicht weiter eingehe, die aber genauso
funktioniert wie die Windows-Variante).
Ich empfehle die Windows-Variante, mit der hatte ich eigentlich keine Probleme. Wichtig ist, dass ihr zusätzlich zur
Windows-Variante auch noch die mit aufgeführte alleg40.zip downloaded. Sie enthält eine dll-Datei, die ins selbe
Verzeichnis gehört, wo auch der Editor (winds1_edit.exe) abgelegt ist. Ohne diese dll wird der Editor nicht laufen, es sei denn
ihr habt sie zufällig auch schon im Systemverzeichnis von Windows.

Das Tool ist sofort startbereit, sobald ihr es extrahiert habt. Bevor ihr aber anfangt, wild irgendwelche .bat oder .exe Dateien
zu starten und euch zu wundern warum nix passiert, müssen wir erst noch einige Einstellungen vornehmen, denn der Editor braucht
Informationen aus den txt-Dateien, damit er die Karten korrekt darstellen kann.
Mit unter den extrahierten Dateien befindet sich eine Ds1edit.ini, die macht ihr mal auf (mit Wordpad zum Bleistift).
Ziemlich am Anfang findet ihr folgende Zeilen:

d2data =
d2exp =
Patch_d2 =
mod_dir =

Diese sagen dem Editor, wo er bestimmte Informationen herkriegt. mod_dir ist ein optionales Verzeichnis, dass ihr nicht
unbedingt braucht, was aber bestimmte Sachen einfacher macht. Erstellt einfach einen neuen Ordner, am besten im Verzeichnis des
Editors und tragt in den obigen Zeilen bei mod_dir den entsprechenden Pfad ein ( z.B. C:/Diablo2/Mods/Editor/Hilfsordner ).
In diesem Verzeichnis könnt ihr z.B. für den Editor veränderte mpq-Dateien ablegen, dazu erkläre ich später noch etwas. Wenn ihr
kein zusätzliches Verzeichnis wollt, lasst ihr den Eintrag kurzerhand frei.
Ganz analog tragt ihr die Pfade zur d2data.mpq, d2exp.mpq und zur Patch_d2.mpq ein, diese Dateien befinden
sich im Diablo2 Hauptverzeichnis. Bei der Patch_d2 aufpassen, dass ihr die originale Datei angebt und nicht die eines Mods, das
könnte sonst zu Problemen führen. Genau zu diesem Zweck ist auch das Mod_Dir Verzeichnis da.
Wenn der Editor nun gestartet wird, schaut er zunächst im mod_dir nach und verwendet die Dateien dort (z.B. aus der
gemoddeten Patch_d2). Was er dort nicht findet, sucht er als nächstes in der (originalen) Patch_d2, dann d2exp und schließlich in
der d2data. Ihr seht schon, auf diese Weise verwendet er stets die aktuellste Version der benötigten Dateien, gegebenenfalls auch die von Euch gemoddeten.
Weiter unten in der Ds1edit.ini findet ihr weitere Einstellmöglichkeiten für den Editor, die ihr bei Bedarf verändern könnt, wenn Euch beim Arbeiten mit dem Tool bestimmte Einstellungen (Helligkeit, Scrollspeed etc.) nicht recht sind. Hier sind wir nun erst einmal fertig, speichert die .ini und schließt sie.

Nun schauen wir mal, wie der Editor gestartet wird. Dazu werfen wir mal einen Blick in das Verzeichnis, wo ihr ihn abgelegt habt.
Ihr seht dort unter anderem folgende Dateitypen:

.ds1 – die eigentlichen Leveldateien. Darin sind alle Informationen über das Aussehen der Gebiete und deren Besonderheiten
abgelegt, z.B. wo Wände stehen, wie der Boden aussieht oder wo sich besondere Sachen wie Lichtquellen, benutzbare Objekte oder
Wegpunkte befinden. Nicht darin gespeichert sind hingegen Sachen wie z.B. welche Monster dort auftauchen (bis auf einige
Ausnahmen), wo zufällige Objekte (Schatztruhen, Fässer, Krüge etc.) stehen und einige weitere Dinge.
Grundsätzlich sind zwei Arten von Levels zu unterscheiden. Zum Einen gibt es Levels, die immer gleich aussehen – das sind zum
Beispiel die Gebiete der Aktbosse (Andariels Halle, Kammer des Weltsteins) oder die Städte (Lut Gholein, Harrogath). Sie bestehen
immer nur aus einer einzigen .ds1 Datei.
Zum Anderen gibt es Levels, die bei jedem neuen Spiel neu erzeugt werden. Das sind etwa die meisten oberirdischen Gebiete, bestes
Beispiel ist der Dschungel im dritten Akt. Diese Gebiete werden so generiert, dass das Spiel aus einem Pool von vielen .ds1
zufällig welche auswählt und sie wie bei einem Puzzle nebeneinander legt sodass am Ende daraus ein großes Gebiet entsteht.
Beispiel: die Wildnis im ersten Akt. Für sie stehen etwa 130 verschiedene .ds1 Dateien zur Auswahl aus denen für jedes Gebiet
(Blutmoor, Kalte Ebene etc.) eine bestimmte Anzahl ausgewählt und daraus das fertige Level gebaut wird. Die einzelnen Gebiete im
ersten Akt werden tatsächlich aus jeweils genau 100 .ds1 zusammengesetzt. Einige davon werden nur in bestimmten Gebieten
verwendet (etwa der Monolithenkreis), andere hingegen durchaus auch mehrfach, so zum Beispiel die Randbegrenzungen des
Gebietes.

.bat – zu jeder .ds1 gibts im Ordner eine zugehörige .bat. Mit diesen wird der Editor gestartet und öffnet jeweils die
passende .ds1. Rechtsklickt mal auf eine .bat und wählt „Bearbeiten“. Im folgenden seht ihr, welche Befehle die .bat ausführt
(das Beispiel ist für die tristram.bat).

@echo off
win_ds1edit <tri_town4.ds1 11 300 > debug_tristram.txt

Die erste Zeile solltet ihr immer mitschreiben (schaltet nur aus, dass alle abgearbeiteten Befehle angezeigt werden), ansonsten
ist sie aber unwichtig. Danach folgt die Anweisung mit dem Programm „win_ds1edit“ die Datei „tri_town.ds1“ zu
öffnen. 11 und 300 sind wichtige Parameter, zu denen komme ich später (sie sind davon abhängig, welche Karte ihr öffnen
wollt). Schließlich wird noch eine Debug-Datei mit dem Namen „debug_tristram.txt“ erstellt, in der ihr eventuell
auftretende Fehler nachlesen könnt.

Nun könnt ihr testhalber mal die Tristram.bat starten und euch Tristram im Leveleditor angucken.

Eine kleine Befehlszusammenfassung:

+ = vergößert die Ansicht
– = verkleinert die Ansicht
Pfeiltasten & Maus = Verschieben des Bildschirmausschnitts
Linksklick = Selektieren der anvisierten Tile
Strg + Linksklick = mehrere Tiles auswählen
Strg + C = ausgewählte Objekte kopieren
Strg + X = ausgewählte (sichtbare) Objekte löschen
Strg + U = letzte Aktion rückgängig machen
Strg + S = Speichern der aktuellen Karte unter <name>_00x.ds1
Tab = Durchschalten der Editier-Modi: 1. Wände & Fußboden, 2. Objekte, 3. NPC-Wege (noch nicht funktionsfähig)
Space = Durchschalten der „Walkable„-Info
F1-F4 = Ein/Ausblenden der Fussboden-Layer
F5-F8 = Ein/Ausblenden der verschiedenen Wand-Layer
Einfg (im Objekt-Modus) = neues Objekt einfügen
Rechtsklick = bearbeiten des ausgewählten Objekts oder der Tile
Esc = Editor beenden (Achtung, keine weitere Abfrage ob ihr speichern wollt!)

Versucht spaßenshalber einfach mal nen Zaun oder ein paar Steine in Tristram hin- und her zu schieben, zu löschen, die
verschiedenen Modi durchzuschalten etc.

Ihr wollt auch andere Karten als nur die mitgelieferten öffnen? Nur Geduld, das kommt später.

Nun wollen wir aber nicht nur kopieren und löschen, sondern die Levels komplett umbauen. Wie machen wir das? Nun, zuvor ist
nochmals ein wenig Theorie erforderlich.

Wie ihr bereits beim Scrollen festgestellt haben dürftet, setzen sich die Levels aus „Kästchen“, auch
Tiles genannt zusammen. So bewegt sich z.B. beim Scrollen der Cursor immer um eine
Tile weiter.

Auf dieser Tile können nun (abhängig vom Level) jeweils bis zu 4 verschiedene Fussboden(Floor)- und
Wand(Wall)-Grafiken abgelegt werden, d.h. es gibt bis zu 4 Wall- und Floor-Layer. Zusätzlich dazu
können auf der Tile noch „Objekte“ abgelegt werden, dazu etwas später. Warum brauchen wir nun bis
zu 4 Wand- und Fussboden-Layer? Ganz einfach, damit sie sich überlappen können. Bestes Beispiel ist
ein Haus, oder eine Hütte. Auf einer Tile wird dann etwa die Wand-Grafik abgelegt, auf der
gleichen, aber im zweiten Layer-Slot die zugehörige Dach-Grafik und weil uns das zu schnöde ist, auch noch ein vor dem Haus
stehender Baum im dritten Wand-Slot.

Ein gutes Beispiel ist Harrogath, öffnet das mal mit dem Editor und schaltet nacheinander mit F5-F8 die einzelnen Wand-
Layer ein und aus, dann seht ihr dass sich einzelne Gebäude oftmals aus vielen überlappenden
Grafiken zusammensetzen.
Genau gleich arbeiten die Floor-Layer. Nihlathaks Podest in den Hallen der Qualen ist so ein
„doppelter“ Fussboden, bei dem das Podest (eine Floor-Tile) über den normalen (braun-matschigen) Fussboden (ebenfalls eine
Floor-Tile) gelegt wurde.

Testet das mal im Editor durch. Ein Rechtsklick auf eine Tile öffnet ein Auswahlmenü, in dem ihr
sowohl für den Fussboden eine Tile (oder aber mehrere übereinandergestapelte, wenn die Schaltbuttons Floor1, Floor2 / Wall1,
Wall2 etc. zu Verfügung stehen)aussuchen könnt.

Probiert mal einfach in Tristram ein Haus zu löschen (mit F1 den Fussboden wegschalten, Haus selektieren und dann Strg+X) und es
dann wieder Tile für Tile wieder aufzubauen.

Mitunter findet ihr im Auswahlmenü weitere Buttons: Roof dient dazu Häusern Dächer zu verpassen. Die korrekte Plazierung
der Tiles ist etwas schwierig, aber wenn man ne Weile rumfummelt klappt auch das. Ein weiteres
Problem ist es, einzustellen, dass die Dächer transparent werden sobald man das Haus betritt. Dazu dienen (vermutlich) spezielle
Tiles, zu denen ich gleich komme.

Special Tiles sind Tiles, die ganz besondere Funktionen innehaben. Sie legen z.B. fest, wo das Townportal in der Stadt
entsteht, wo die Leiche liegt und ähnliches. Als Faustregel gilt hierbei: Wenn ihr nicht genauestens wisst, was eine einzelne
Special-Tile macht, solltet ihr sie beim Editieren möglichst nicht rausschmeißen sondern an ihrem Platz lassen. Wäre wohl dumm,
wenn ihr vergesst in Harrogath die TP-Tile zu legen und euer Held dann bei teleportieren im Nimmerland landet.


Eine wichtige Sache gibt es beim Rumbasteln mit
Tiles und Walls zu beachten. Wie ihr aus dem Spiel ja wisst, kann
euer Held nicht über bestimmte Flächen der Karte (Lava, Flüsse) laufen und auch nicht auf gespenstische Weise durch Wände
hindurch. Dies wird durch die sogenannte Walkable-Info realisiert. Drückt im Editor mal die
Space-Taste und ihr schaltet diese ein. Ein weiterer Druck liefert euch die Detailansicht, in der die einzelnen
Tiles noch genauer aufgeschlüsselt werden.

Jede Tile setzt sich nochmals aus 5 mal 5 „Unter-Tiles“ zusammen.
Diese entstehenden 25 Kästchen könnt ihr euch quasi als die möglichen Standorte der Charaktere auf einer
Tile vorstellen. Wenn ihr Euch im Spiel bewegt, läuft euer Held also von der
Sub-Tile einer Tile zu einer anderen
Sub-Tile einer anderen Tile.
Nun kann jedes dieser 25 entstehenden Kästchen eine unterschiedliche Walkable-Einstellung besitzen.
Die erweiterte Darstellung (also nach zweimal Space-Taste drücken) zeigt Euch, was in einer Sub-Tile
erlaubt ist und was nicht. Es gibt zum Beispiel die Möglichkeit dass die Sub-Tile nur das
Hindurchlaufen des Charakters behindern, dies gälte z.B für alle Wände. Dann gibts welche, die für Schüsse nicht durchdringlich
sind, oder das Überspringen mit dem Barbaren-Skill Leap/Leap-Attack verhindern.

Wenn ihr also Eure Karten baut, vergesst nicht zu überprüfen, ob Euer Charakter am Ende auch überall laufen kann wo er es soll.
Es ist ziemlich frustrierend ne Karte zu basteln und die Fußboden-Tiles akribisch auszulegen, nur um
hinterher festzustellen, dass man da gar nicht drüber laufen kann.
Anmerkung: Bei den meisten Floor-Tilesets gibt es ziemlich am Anfang im Ausahlmenü welche, die
keinerlei Einschränkungen haben. Wenn ihr Euch Karten anguckt, werdet ihr feststellen, dass große Gebiete einzig und allein mit
diesen Dingern ausgelegt sind. Was aber im Editor eintönig und sich wiederholend aussieht, wird nachher im Spiel anders aussehen.
Diese Tiles sind nämlich nur repräsentativ für einen Pool von anderen Tiles, aus denen nachher im Spiel der Fussboden gebaut
wird.
Also keine Angst, wenn es im Editor eintönig aussieht, muss es nicht unbedingt im Spiel auch so aussehen.

So, nun wisst ihr bereits, wie man die Wände und Fussboden-Grafiken verändert und damit fast das gesamte Level umbauen kann. Zu
Fragen wie „Wie kann ich die Kartengröße verändern?“, „Wie kann ich die Tiles aus anderen Karten verwenden?“ oder „Wie kann ich
die Anzahl Layer in einer Karte erhöhen?“ komme ich später.
Zunächst gibt es noch eine Sache, die beim Editieren der Karten wichtig ist: Objekte. Das sind
Dinge, mit denen ihr interagieren könnt, oder die besondere Effekte haben. Beispiele fürs Erstere sind z.B. die Menschen in der
Stadt, Schatztruhen oder auch Wegpunkte. Beispiele fürs zweite wären etwa Fackeln, die die Umgebung beleuchten oder Feuer auf dem
Boden, die euren Charakter verletzen, wenn er durch sie hindurchläuft.
Öffnet nochmal die Karte von Tristram und schaltet in den Objekt-Modus (einmal die Tab-Taste drücken). Ihr werdet feststellen,
dass der Bildschirm regelrecht überflutet ist mit Objekten. Größtenteils handelt es sich dabei um
Feuer, teilweise findet ihr aber auch andere Sachen, z.B. den Spawnpoint von Griswold (also die Stelle der Karte, an der Griswold
erstellt wird, wenn Euer Char in seine Nähe kommt), die Spawnpoints einiger Champion-Monster, Cains Käfig (Cain´s Gibbet) oder
aber Wirts Leiche. All dies sind Objekte.

Das Editieren dieser läuft im Grunde genauso wie bei Wänden und Fussböden. Mit linksklicken selektiert ihr sie (teilweise is das
etwas hakelig), Strg+X löscht und Strg+C kopiert. Um neue Objekte einzufügen, drückt ihr die
Einfg-Taste (ja, rechts oberhalb von Return, noch ein Stück, nicht die da, DIE DA, über Entf ^^). Nun wird ein
Objekt dort in die Landschaft gestellt (meistens Gheed). Ein Rechtsklick darauf öffnet Euch ein
Auswahlmenü, in dem ihr nun was Passendes aussuchen könnt.
Unter der Spalte Type 1 findet ihr die meisten NPCs wieder, auch einige andere Sachen sind da mit drin z.B. die Spawnpunkte von
Superunique-Monstern. Diese könnt ihr problemlos in Karten jedes Aktes setzen (z.B. Charsi in die Harrogath-Karte). Anders sieht
es aus mit Objekten vom Type 2, die sind aktabhängig und können nur in den passenden Karten gesetzt werden. Ihr werdet vielleicht
bemerken, dass sehr viele ein „?“ als Beschreibung haben, das kommt daher, dass viele noch nicht bekannt sind (wer Spaß dran hat,
kann ja mal experimentieren).

Noch ein Hinweis: Vermeidet es besser, besondere Objekte mehrfach zu setzen, Wegpunkte etwa. Könnte
sein, dass das zum Crashen des Spiels führt.

Ihr habt nun also erfolgreich Tristram umgebaut, abgespeichert und seid zufrieden mit Eurer Arbeit, aber wie krieg ich denn jetzt
die neue Karte in mein Diablo 2 Spiel?
Ganz genauso wie mit allen anderen Dateien. Ihr fügt sie kurzerhand mit MPQ2K oder einem anderen Programm in die Patch_d2.mpq
ein. Hinweis für die Pfade: Die Karten sind unter data\global\tiles versteckt, dann geht´s weiter mit

..\act1\..
..\act2\..
..\act3\..
..\act4\..
..\expansion\..
je nachdem, in welchen Akt eure Karte gehört und dann kommt noch ein Unterordner (etwa „town“ für das Jägerinnen-Camp). Die
kompletten Pfade stehen übrigens in der lvlprest.txt, dort einfach nachgucken, wenn ihr nicht wisst wohin mit der Datei.

Nun wisst ihr das Wesentliche zum eigentlichen Editieren der Karten und ich empfehle, zur Vertiefung ein bissel damit zu üben.
Weiter gehts mit eher organisationstechnischen Aspekten, sprich:

  • wie kann ich andere Karten als den vorgegebenen öffnen?
  • wie kann ich mehrere Karten gleichzeitig öffnen?
  • wie kann ich andere Tiles für meine Karte verwenden?
  • wie kann ich die Anzahl Layer erhöhen? (benötigt Iselveo´s Editor)
  • wie kann ich die Kartengröße verandern? (benötigt Iselveo´s Editor)

Wie kann ich andere Karten als den vorgegebenen öffnen?

Zunächst braucht ihr natürlich erst einmal die passende .ds1 Datei zur entsprechenden Karte. Am besten ihr schaut dazu in der
lvlprest.txt nach, dort steht in der äußersten linken Spalte eine Kurzbeschreibung der Karte und weiter rechts folgen in
einigen Spalten der Name und Pfad der passenden .ds1. Häufig findet ihr für ein Gebiet mehrere Dateien vor. Das liegt daran, dass
die meisten Gebiete bei jedem Spielstart anders aussehen, also gibt es für ein und dasselbe Areal mehrere Varianten. Das fünfte
Level des Turms der Gräfin etwa: Es gibt eine Variante mit Ausrichtung des Levels nach nordost und eine nach nordwest. Möglich
sind prinzipiell bis zu sechs Varianten pro Level, also könntet ihr theoretisch bis zu sechs verschiedene Varianten des
Turmlevels erstellen.
Aber zurück zum eigentlichen Problem: Ihr habt nun also die entsprechende .ds1 extrahiert und im Ordner des Leveleditors
abgespeichert. Der nächste Schritt besteht darin, eine neue .bat-Datei zu erstellen. Dazu erzeugt ihr einfach eine neue
.txt-Datei und benennt diese in .bat um. Der Dateiname ist eigentlich egal, wählt einen passenden, damit ihr wisst, welche
.bat welche Karte öffnet. Alternativ könnt ihr allerdings auch eine der bereits vorhandenen .bats umändern, braucht also keine
neue erstellen. Hängt lediglich davon ab, wie ihr das Ganze organisiert: für jede .ds1 eine passende .bat oder aber nur eine
.bat, die für die jeweilige Karte angepasst wird.

Als nächstes müssen wir die Aktion, die die .bat ausführt bestimmen. Dazu rechtsklickt ihr auf sie und wählt „Bearbeiten“.
Unabhängig davon, ob ihr eine bestehende .bat geöffnet habt, oder eine neue erstellt habt, tragt ihr nun folgendes ein:

@echo off (hatte ich oben schonmal erwähnt, einfach so hinschreiben)
win_ds1edit <Name der zu öffnenden Karte> Parameter 1 (siehe unten)
Parameter 2 (siehe unten) > debug_<Kartenname>.txt

Friemeln wir das mal auseinander:

win_ds1edit <Name der zu öffnenden Karte> ist die Anweisung, mit dem Programm win_ds1edit
die Karte mit dem nachfolgenden Namen zu öffnen.

Parameter 1 ist quasi eine Bestimmungszahl, welches Tileset für die Karte verwendet wird. Ihr
findet sie in der lvltypes.txt in der ersten Spalte. Geht einfach zur der Zeile, zu der euer Level gehört und verwendet
die Zahl in der Spalte Id als Parameter.
Beispiel: Sagen wir mal, ihr wollt eines der Harem-Level des Palastes im 2. Akt verändern. Der dazu passende Parameter wäre
dann die Nummer 14.

Parameter 2 ähnelt Parameter 1 und bestimmt die Zeile in der lvlprest.txt. Sucht einfach die
Zeile, in der der Dateiname eurer Karte steht und verwendet die Zahl in der Spalte Def als zweiten Parameter.
Wider das Beispiel Harem-Level: Wir wollen die Datei Harem2.ds1 (das erste Level des Harems, das ohne Monster) öffnen, das wäre
also Def 353.

> debug_<Kartenname>.txt sorgt lediglich dafür, dass ein Fehlerprotokoll erstellt wird,
indem ihr alle vom Programm abgearbeiteten Schritte und eventuell aufgetretene Fehler nachvollziehen könnt. Der Name kann
schnurzegal sein.

Das ist Alles. Die .bat speichern und dann starten, dann sollte das Level korrekt geladen werden. Im Grunde ganz einfach, ihr
müsst nur eben bei den Parametern sorgfältig sein, wenns nicht klappt liegt es meistens daran.

Als Beispiel nochmal den kompletten Eintrag in die .bat zu Öffnen der Datei Cathy3.ds1
(Kapelle des Klosters im ersten Akt):


@echo off
win_ds1edit Cathy3.ds1 9 257 > debug_Cathedral.txt

Wie kann ich mehrere Karten gleichzeitig öffnen?

Mitunter kann es sinnvoll sein gleich mehrere Karten parallel zu bearbeiten, z.B. weil ihr Elemente der einen Karte in die
andere übernehmen wollt oder weil ihr die andere zum Vergleich braucht. Auch für diesen Fall ist Ds1Edit gerüstet und erlaubt
euch, bis zu zehn verschiedene Karten gleichzeitig zu öffnen.

Zu diesem Zweck brauchen wir eine neue Datei, diesmal eine .ini. Erstellt sie wie ihr schon die .bats erstellt habt, einfach ne
neue .txt Datei einfügen und dann in .ini umbenennen. Das ganze natürlich im Editor-Verzeichnis. In die .ini hinein tragt ihr
dann die zu öffnenden .ds1 Dateien mit den dazugehörigen Parametern. Das Ganze sieht also wie folgt aus:

<Param1> <Param2>
Name der .ds1 Datei

wobei <Param1> wie im vorhergehenden Abschnitt beschrieben aus der lvltypes.txt kommt und <Param2> aus der
lvlprest.txt. Das Ganze könnte also wie folgt aussehen:

2 43 FallCmp5.ds1
2 43 FallCmp6.ds1
2 43 FallCmp7.ds1
2 44 FallCmpBish.ds1
20 529 DockTown3.ds1

Habt ihr alle dateien, die ihr öffnen wollt drin stehen, speichert das Ganze ab und öffnet nun eine .bat (entweder eine neue,
oder eine bereits bestehende). Der Eintrag dort muss nun wie folgt aussehen:

@echo off
win_ds1edit <Name der .ini> > debug.txt

D.h., win_ds1edit öffnet nun nicht mehr eine einzelne .ds1, sondern alle, die in der .ini stehen. Probiert es mal aus. Im
Editor selbst schaltet ihr über die Zahlen-Tasten (1-0) zwischen den einzelnen Karten hin- und her.

Beim Kopieren zwischen den Karten ist Vorsicht geboten: Stimmen die Parameter (in der .ini) nicht exakt überein, kann es
passieren, dass Teile des Kopierten verschwinden, da nicht alle Karten diesselben Tiles verwenden. Mehr zu dieser Thematik
(andere Tiles für die Karten) folgt in den nächsten Abschnitten.

Wie kann ich andere Tilesets in meiner Karte verwenden?

Nun schauen wir uns mal an, wie wir die Tiles aus anderen Levels verwenden können. Das Ganze ist etwas kompliziert, wenn ihr es
jedoch ein paar mal gemacht habt, ist es halb so schlimm.
Desweiteren gleich vorneweg noch eine weitere Anmerkung: Es ist im Allgemeinen nicht möglich, Tiles aus anderen Akten ohne
unschöne Farbeffekte zu importieren. Der Grund dafür ist, dass D2/LoD für jeden Akt eine eigene 256-Farben Palette verwendet.
Wenn ihr jetzt Tilesets aus anderen Akten verwendet, werden diesen durch die unterschiedliche Palette andere Farben zugeteilt
als vorgesehen, was mitunter nicht wirklich toll aussieht. Bei einigen klappt es recht gut (Akt5 Tiles sehen auch im 1.Akt
passabel aus), bei anderen weniger (Akt4 Tiles im 1. Akt – die kriegen pinkfarbene Flecken). Zur Not kann man die .dt1 Dateien
ändern (in denen sind die Grafiken der Tiles abgelegt) um das hinzukriegen, darauf gehe ich aber an dieser Stelle nicht ein.

Beginnen wir einfach mal. Schnappt euch die Datei lvltypes.txt und öffnet sie. Darin steht nun, welche .dt1s für welches
Level verwendet werden. Untereinander seht ihr dort die verschiedenen Leveltypen und jeweils rechts davon in den Spalten
File1-31 die verwendeten .dt1s mit ihren Pfadnamen. Aber was sind .dt1 Dateien denn eigentlich?
Wie oben erwähnt enthalten die .dt1s im Wesentlichen die Grafiken, die auf die Tiles gelegt werden – etwa eine Wand oder ein
Baum. Zusätzlich ist die „Walkable“-Info dort abgespeichert, d.h. welche Sub-Tile begehbar ist etc. und noch eine Reihe anderer
Dinge, die uns aber nicht zu interessieren brauchen. Die Grafiken können sowohl die der Fussböden als auch der Wände sein. Wenn
ihr euch den Leveleditor wie einen Lego-Kasten vorstellt, dann sind die .dt1s quasi einzelne Baukästen, von denen jeder bestimmte
Bauteile enthält (einer die Bäume, ein anderer Steine usw.).
Wie kriege ich raus, in welcher .dt1 die Tile versteckt ist, die ich brauche? Gute Frage, zu der ich hier wieder Absätze
schreiben könnte. Am besten ihr überlegt in welchem Level die Tile auftaucht und probiert dann die in Frage kommenden .dt1s
durch. Alternativ könnt ihr Euch Tools runterladen, etwa die DT1Tools (wieder von Paul Siramy) oder aber Cv5.2. Mit beiden könnt
ihr Euch die .dt1s direkt angucken. Weitere Infos in den entsprechenden Readme-Dateien.

Wie mache ich nun neue .dt1s für ein bestimmtes Level verfügbar? Ihr ahnt es schon: indem ich die entsprechenden Einträge in
die richtige Zeile kopiere. Angenommen ihr wollt die Friedhof-Tiles im ersten Akt auch im Lager der Jägerinnen verbauen,
dann kopiert ihr den Eintrag Act1/Graveyard/graveyrd.dt1 aus der Wilderness-Zeile in eine freie Zelle der Town-Zeile
(File 11).
An dieser Stelle wieder ein wichtiger Hinweis: Vermeidet es besser irgendwelche .dt1s zu löschen oder durch andere zu
ersetzen – führt in 99% aller Fälle zu Ärger. Nur wenn ihr Euch absolut
sicher seid, dass keine einzige Tile der .dt1 in dem betreffenden Gebiet verwendet wird, könnt ihr sie rausschmeißen.

Hier sind wir nun fertig, speichert die lvltypes.txt ab und schließt sie.

Als nächstes knöpfen wir uns die lvlprest.txt vor und jetzt wird es etwas mathematisch. Sucht zunächst mal die Zeile der
.ds1 Datei, die ihr editieren wollt heraus und scrollt ganz nach rechts bis zur Spalte Dt1Mask. Dort findet ihr nun eine
Zahl und wundert Euch, woher die kommt.

Im Grunde ist es recht simpel. Diese Zahl ist eine Summe aus Zweierpotenzen und dient als Maske für die lvltypes.txt.
Genauer gesagt, diese Zahl bestimmt, welche der File-Spalten in der lvltypes.txt für die entsprechende .ds1 Datei
auch wirklich geladen werden.

Schauen wir uns das mal an:

File1 entspricht einem Wert von 2^0 = 1
File2 entspricht einem Wert von 2^1 = 2
File3 entspricht einem Wert von 2^2 = 4
File4 entspricht einem Wert von 2^3 = 8
File5 entspricht einem Wert von 2^4 = 16
File6 entspricht einem Wert von 2^5 = 32
File7 entspricht einem Wert von 2^6 = 64
File8 entspricht einem Wert von 2^7 = 128
File9 entspricht einem Wert von 2^8 = 256
File10 entspricht einem Wert von 2^9 = 512
File11 entspricht einem Wert von 2^10 = 1.024
File12 entspricht einem Wert von 2^11 = 2.048
File13 entspricht einem Wert von 2^12 = 4.096
File14 entspricht einem Wert von 2^13 = 8.192
File15 entspricht einem Wert von 2^14 = 16.384
File16 entspricht einem Wert von 2^15 = 32.768
File17 entspricht einem Wert von 2^16 = 65.536
File18 entspricht einem Wert von 2^17 = 131.072
File19 entspricht einem Wert von 2^18 = 262.144
File20 entspricht einem Wert von 2^19 = 524.288
File21 entspricht einem Wert von 2^20 = 1.048.576
File22 entspricht einem Wert von 2^21 = 2.097.152
File23 entspricht einem Wert von 2^22 = 4.194.304
File24 entspricht einem Wert von 2^23 = 8.388.608
File25 entspricht einem Wert von 2^24 = 16.777.216
File26 entspricht einem Wert von 2^25 = 33.554.432
File27 entspricht einem Wert von 2^26 = 67.108.864
File28 entspricht einem Wert von 2^27 = 134.217.728
File29 entspricht einem Wert von 2^28 = 268.435.456
File30 entspricht einem Wert von 2^29 = 536.870.912
File31 entspricht einem Wert von 2^30 = 1.073.741.824

Die „Maske“ besteht nun aus der Summe der Zahlen der verwendeten Spalten. Angenommen wir möchten die .dt1s verwenden,
die in der lvltypes.txt in den Spalten File1, File6, File7 und File 13 stehen, dann wäre die Summe folglich:

1 + 32 + 64 + 8129 = 8226

Diesen Wert tragen wir dann in der Spalte Dt1Mask in der lvlprest.txt ein.

Noch ein Beispiel: Wie kommt man auf den Masken-Wert 959 in der Spalte „Act 1 – Town 1“? Dazu sehen wir in der
lvltypes.txt in der Zeile „Act1 – Town“ nach und stellen fest: Dort gibt es Einträge in File1-6 und File8-10. Demzufolge
ist nach Adam Ries

1 + 2 + 4 + 8 + 16 + 32 + 128 + 256 + 512 = 959

Also werden alle dort aufgeführten .dt1 Dateien auch wirklich geladen und verwendet.

Ihr habt sicher gemerkt, dass ich stets das „verwenden“ betont habe. Dies hat auch seinen Grund: Zu einem Leveltyp in der
lvltypes.txt können durchaus eine ganze Menge .ds1 Dateien gehören, aber offensichtlich nutzen nur wenige davon wirklich
auch alle in der lvltypes.txt als verfügbar eingestellte .dt1s.
Diese scheinbar umständliche „Maskierung“ dient lediglich zur Performance-Verbesserung: Warum sollte auch das Spiel 20
megafette Grafikdateien für jede einzelne .ds1 laden(.dt1s bewegen sich in Dateigrößen von einigen Dutzend kB bis hin zu mehr
als 2 MB!), wenn am Ende nur 3 davon auch wirklich benötigt werden. Daher solltet ihr bei euren Maps auch diese Seite
betrachten, denn damit kann man unter Umständen die Performance etwas verbessern.

Habt ihr nun also die Werte in der Dt1Mask entsprechend verändert, wird die lvlprest.txt abgespeichert und
zugemacht. Nun packt ihr beide Dateien (lvltypes.txt und lvlprest.txt) in die Patch_D2.mpq, oder halt direkt ins mod_dir
Verzeichnis, wenn ihr denn eines erstellt habt. Falls ihr die Dateien in die Patch_d2 gepackt habt, müsst ihr noch sicherstellen,
dass der Editor diese auch lädt (d.h. eventuell den Eintrag in der Ds1edit.ini umändern).

Fertig! Von nun an könnt ihr in den Levels, die ihr in der lvlprest.txt entsprechend markiert habt auch andere Tiles
verwenden. Falls es nicht klappt und der Editor die Karte nicht lädt, sondern stattdessen das .bat-Fenster die Befehle
runterscrollt und den Editor dann beendet, habt ihr bestimmt beim Berechnen des Dt1Mask-Wertes einen Fehler gemacht
(is bei mir die Hauptursache). Zur näheren Untersuchung ist auch die debug-Datei enorm nützlich, die euch nämlich genau angibt,
an welcher Stelle und warum der Ladevorgang beendet wurde.

Guide von Red Havoc

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert