|
|
Dungeons Wichtig für jedes Fantasy Rollenspiel sind Dungeons um ausreichend Erfahrungspunkte für das Leveln zu erhalten. Da ich das Spiel primär für mich selbst entwickle scheiden vorgefertigte Dungeons weitgehend aus und eine besondere Herausforderung ist die automatische Generierung der Spielewelt. Erstellung eines automatisch gefüllten Raum im Dungeon Markierung des Raumes mit der Positionsflagge Jeder Raum wird mit einer Positionsflagge markiert, die genau in der Mitte platziert wird. In den Skills ist die ID der Flagge, die Breite des Raumes, die Länge des Raumes und der Drehwinkel hinterlegt. Dadurch kann der Raum angesprochen werden und das Einsetzscript weiß über die entsprechenden Ausdehnungen bescheid.
Bild: Standardraum des Dungeons mit Positionsflagge in der Mitte SKILL1 = ID, SKILL2= Breite, SKILL3 = Länge, SKILL4 = 90 Grad Drehung Der Raum ist jetzt markiert und das Markierungsflag wird jetzt mit der Action ITEM_LOCATION verbunden. Diese Aktion enthält die Steuerschleife des Raumes.
Der Aktionsstack Innerhalb des Spieles ist ein Stack hinterlegt in dem Aktionen für die Markierungsflaggen abgelegt werden können. Diese Markierungsflaggen prüfen periodisch über die verbundene Aktion ITEM_LOCATION ob für Ihre ID eine Aktion auf dem Stack vorhanden ist. var locstack_id[1000];
// Ablage der Flaggenid für die Aktion auf dem Stack
Der Aktionsstack kann jetzt aus jedem Bereich des Programmes beliebig gefüllt werden und mit der eingestellten Verzögerung (abhängig von der Wartezeit in der Aktion ITEM_LOCATION) wird die Aktion vom Stack gelesen und ausgeführt. Beispiel: Füge Gegenstand bei der Positionsflagge ein slot=locstack_init(502,125);
// Aktion 125 Füge Gegenstand ein für Flagge ID 502 Die Aktion ITEM_LOCATION wird jetzt automatisch den Gegenstand einsetzen.
Raum automatisch befüllen Umfangreicher als das Einsetzen von Monstern und Gegenständen ist das automatische Befüllen eines Raumes mit Möbeln. Die Befüllung wird über den Aktionsstack gesteuert und kann wieder zu jedem Zeitpunkt des Spieles angestossen werden. Beispiel: Starte automatischen Raumaufbau an der Positionsflagge 502 slot=locstack_init(502,250);
Der Raumtyp gibt die als eigene Scripten vorgefertigten Räume an. Mit dieser Information kann dann die Erstellung um die Positionsflagge angestossen werden. Die Abmessungen der Gegenstände im Raum sind bekannt und auch die Abmessungen des Raumes sind in der Positionsflagge gespeichert. Diese Informationen werden dem Erstellungsscript zugeführt und der Raum danach möbliert. Beispiel: Script zum automatischen Füllen eines rechteckigen Raumes function create_room1(roomx,roomy,rotate) { // Setze Regal ein // Setze Bett ein // Setze Tisch ein // Setze Truhe ein // Truhe ist verschlossen // Fülle Truhe automatisch Für das befüllen von Truhen und Regalen sind weitere vorgefertigte Scripten vorhanden, die dann Gegenstände abhängig vom Level des Spielers und der Schwierigkeit des Dungeons erzeugen. Bild: Das Ergebnis ist ein Raum gefüllt mit Bett, Tisch, Truhe und Regal
|