AOQML: Anzeige von Dungeon-Karten

AOQML: Anzeige von Dungeon-Karten

Beitragvon Lowlander » Sa 09 Mai, 2009 00:11

Moin Moin,

schon seit gestern oder so gibt es folgendes neues Tag:
Code: Alles auswählen
<scene room="b00">
...
<maze prefix="bilder/quests/..." postfix=".png" unknown="bilder/quests/.../unknown.png" rows="10" columns="16" feed="48"/>
</scene>


Das führt dazu, dass an der Stelle die Teile eines "Dungeons" (i.w.S.: kann also auch ein Dorfplan oder sonst was sein) angezeigt werden, die der Held schon besucht hat. Dafür muss die Karte in Quadrate der Kantenlänge 'feed' (hier 48 Pixel) zerschnitten werden. Die Spalten werden dann mit a-z, die Zeilen mit 00-99 durchnummeriert - und entsprechend Dateien unter dem als prefix= genannten Pfad abgelegt. Der Dateityp wird durch den postfix (hier png) bestimmt. Die Größe der Karte als Zahl der Abschnitte wird mit rows und columns angegeben.

In Kombination mit der Angabe des zur Szene gehörigen Raumes als Attribut im scene-Tag wird dann die Karte automatisch Stück für Stück mit dem Weg des Helden durch den Dungeon vervollständigt. Es empfiehlt sich, die jeweiligen Haupt-Szenen der Räume genau so schematisch zu benennen.

Am besten packt man das maze in ein include oder retain, damit man es ggf. zentral ändern kann. Der Default-Prefix ist außerdem "bilder/quests/QUESTNAME/" und der Default-Postfix: ".png". Der Default für die Kachel, die verwendet wird, wenn der Held die Stelle nicht kennt, ist im selben Verzeichnis unknown.png. Wenn das passt, kann man die Attribute auch weglassen.

Hier ein Beispiel mit einer Orientieren-Probe:

Code: Alles auswählen
<!-- lib-Szene => zu dieser Szene keine Pfeile im Graphen anzeigen, weil das unübersichtlich wäre -->
<scene lib="true">
   <challenge talent="Orientierung" mod="-3">
       <failure>
          <p>Irgendwie hast du jetzt gerade völlig die Orientierung verloren.</p>
          <store name="sys:rooms">:<get name="sys:from"/>:<get name="sys:room"/>:</store>
       </failure>
   </challenge>

   <maze rows="10" columns="12" feed="48"/>
   
       <!-- aus "/lib/_erfahrung": sammelt beim erstmaligen Besuch dieser Szene ein paar EP -->
   <replay name="wenig-erfahrung"/>
</retain>


Beim Fehlschlagen der Orientieren-Probe passiert hier folgendes: Die System-Variable, die sich die Räume merkt, wird auf den vorherigen und aktuellen Raum zurückgesetzt - alles andere hat der Held dann erstmal vergessen - sprich: wird in der Karte erstmal nicht mehr angezeigt.

Am besten die Karte, die meist viel Platz verbraucht, ganz unten, direkt unter der <paths>-Navigation anzeigen.

Und noch ein paar Tipps:
- Hindernisse, die mit Proben bewältigt werden müssen, wobei der Held aber die andere Seite des Hindernisses sieht (z.B. Falltore) am besten auf einer Kachel implementieren - dann muss man nur die Variable sys:from auswerten, um zu prüfen, auf welcher Seite der Held ist.
- Hindernisse, die mit Proben bewältigt werden müssen, wobei der Held die andere Seite nicht sieht, am besten in den zwei angrenzenden Raum-Szenen implementieren

Auf jeden Fall über das vorstehende Problem schon beim Zeichnen der Karte Gedanken machen, sonst geht hinterher das Gefummel los.
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Zurück zu Antamar®-Archiv



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

cron