• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

Einführung in Ds1Edit - Leveleditieren von Diablo2/LoD

RedHavoc

Well-known member
Ex-Staffmember
Registriert
6 April 2002
Beiträge
2.144
Punkte Reaktionen
0
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.
Dies ist nur der erste Teil, ich werde über´s WE und vielleicht nächste Woche noch Ergänzungen machen (worauf ich dann hier hinweise) und Bilder zur Veranschaulichung einfügen (@Lilly: die lade ich dann als Komplettpack hoch, damit du weniger Arbeit hast ;) ), aber das, was hier steht reicht für den Einstieg völlig aus.

Ich hab mich bemüht, das Tutorial so ausführlich und einfach wie möglich zu schreiben, wenn aber trotzdem noch Sachen unklar sind, bzw. ich zuviel rumgelabert hab, postet ruhig hier rein. :)

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! :D

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


Edit1: Bilderchen zur besseren Verständlichkeit zugefügt.

Edit2: Ein Appendix mehr.

Edit2: Und noch ein Appendix mehr.
 
-------------------------------------------------------------------------------

Einführung in Ds1Edit - Leveleditieren in Diablo2/LoD

-------------------------------------------------------------------------------


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 :D

-> 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. :D

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.

tile.jpg


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.

layers.jpg


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)

buttons.jpg


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.

walkable.jpg


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

objects.jpg


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. :D 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 :clown:

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[/i] 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.
 
Hi Red Havoc!

:D Was soll ich da noch großartig noch was zu sagen auser.... :D

JJJJJJUUUUUUUUUUUHHHHHHHHUUUUUUUUUUUUUUU
und
BIG DANKESCHÖN *freu*

hast du spitze gemacht!

MFG: RELATIV
 
schön, sehr schön...aber warum mehrere Posts? :confused:

Ansonsten :top: und *verschieb*

:D

achja *fixier* ;)
 
Mehrere Posts deshalb, weil

1. meine "Verbindung durch den Server unterbrochen wurde", wenn ich probiert habe, alles auf einmal zu posten. Komischerweise hab ich inzwischen festgestellt, dass es doch funktioniert, wenn man es mehrmals hintereinander versucht.

2. zu Übersichtlichkeitszwecken beim Editieren.

3. ich dadurch nen Extra-Post kriege
baeh.gif
:D
 
1. Schreib mit Word :p

2. so machst du mir bloß das konvertieren schwerer :rolleyes: Hoffentlich weiß er nicht, dass ich bloß ein wenig mehr scrollen muss

3. :motz:

4. :D

5. Danke, dass du mir die Pics hochlädst, hab ich ganz übersehen ;)
 
*Schubs wegen internen Dingen* :)
 
So, Guide ist erledigt, ab ins Archiv :D
 
Zurück
Oben