Wie
Befehle geschrieben werden

Liste der verfügbaren
Befehle:
Befehlsliste
detailliert (jeder Befehl ausführlich
beschrieben) (als RTF-Datei)
Befehlsliste tabellarisch (alle
Befehle in präziser, tabellarischer Form)
Interaktive
Web-Formulare zur Befehlsabgabe (Aktivierung durch Spielleiter
vorher nötig)
Ein Beispiel eines Befehlsskripts
Eine allgemeine
Erklärung, wie man Befehle schreibt:
Um einen Spielzug
zu erstellen, must du folgendes tun:
- Verwende
das interaktive Web-Formular,
oder:
- Erstelle
einen Befehlsskript mit der GPU oder
einem Editor und sende es per E-mail (turn#cjgames.com) an uns.
- Befehlsdatei
Spieler versenden
ihre Befehlsskripte für Mysticora
im einfachen Text-Format (ASCII), wobei jeder Befehl
in eine
separate Zeile geschrieben wird.
Der Befehlstext kann innerhalb einer E-Mail, oder als angefügte
Textdatei übermittelt werden. Wenn eine Text-Datei angefügt
ist, muss diese eine ".TXT", ".ASC"
oder ".MYS" Datei sein. Falls es keine dieser Dateitypen
ist, wird die Datei ignoriert. Der Dateiname ist nicht relevant,
d.h. es könnte beispielsweise "MeinZug.TXT" sein.
Die Befehlsdateien, die von der GPU
generiert werden, sind auch nur Textdateien.
Diese E-mail wird an folgende Adresse gesandt: turn#cjgames.com mit der Betreffzeile: Mysticora game #'Spielnummer'
Die Betreff-Zeile des E-Mails sollte die Spielnummer beinhalten,
z.B. "Mysticora Spiel #1".
Es ist auch möglich, den jeweiligen Zug anzugeben. Dies muss
hinter der Spielnummer stehen und mit mindestens einem Leerzeichen
getrennt sein, z.B. "Mysticora Spiel #1 Zug #27".
Beachtet bitte, dass - aus Sicherheitsgründen und als Schutz
gegen Spams - ihr immer eure Standard-EMail-Adresse, wie sie bei
CJ Games registriert ist, verwendet; andere Adressen werden nicht
akzeptiert. Es ist möglich, zwei Standard-Adressen bei CJ
Games registrieren zu lassen.
Wenn ein Spieler
ein mehrere E-Mails für einen anstehenden Zug abgibt, dann
wird nur der zuletzt abgeschicke zur Auswertung verwendet. Damit
ist es dem Spieler möglich, einen Zug zu korrigieren, indem
er einfach seine Befehle überarbeitet und nochmals vor dem
nächsten Zugabgabetermin einsendet.
- Befehlsskript
Einklammerung
Des Skript,
das eingeschickt wird, muss mit dem Start-Befehl "beginne_mys"
und dem End-Befehl "beende_mys" eingeklammert sein.
Der Start-Befehl beinhaltet zudem die notwendigen persönlichen
Angaben zur Autorisierung. Keine anderen Befehle dürfen in
diesen beiden Zeilen stehen.
Beispiel:
beginne_mys(1, 734, "Hans Musterman", 582, "mysecret")
....
beende_mys()
Alle Texte, die vor oder hinter diesen Schlüsselbefehlen
stehen, werden vom Programm ignoriert.
- Befehlsname und Parameter
Fast alle Spielerbefehle haben folgende Struktur:
<Befehlsname>(<Datum>,<Wiederholversuche>,<Parameter1>,<Parameter2>,
... )
Wennn die Parameter für die Anzahl der Wiederholversuche
und das Spieldatum weggelassen werden, wird das Programm die "Default-Werte"
benutzen. Der Wert für ein fehlendes Datum wird normalerweise
durch das set-command festgelegt. Einige Befehle können beliebig
oft wiederholt werden, wobei - wenn der "Defaultt-Wert"
0 ist - der Befehl nur einmal ausgeführt wird.
Dies würde dann eine solche Struktur haben:
<Befehlsname>(<Datum>,<Wiederholungsversuche>,<Wiederholungen>,<Parameter1>,<Parameter2>,
... )
Ein Charakter-Befehl würde oftmals folgendes Format haben:
<Befehlsname>(<Datum>, <Wiederholungsversuche>,
<Tage damit verbracht>, <Charaktername>, <Parameter2>,
...)
Der "Tage damit verbracht"-Parameter bedeutet, wie
viele Tage (bis zu 30 Tage) der Charakter damit zugebracht hat,
die Handlung auszuführen (z.B. Training, auf einen Meuchelmord
vorbereiten, Zaubern, etc.).
(beachte auch, daß Befehlsnamen niemals Leerzeichen beinhalten,
nur Buchstaben, und das "Underscore"-Zeichen; auch wird
bei den Buchstaben nicht zwischen Groß- und Kleinschreibung
unterschieden)
Anmerkung: Zeit, d.h. die Anzahl von Tagen, ist der
entscheidende Faktor ist, der die Anzahl von Aktionen begrenzt,
die du durchführen lassen kannst. Für jede Runde stehen
dir eine begrenzte Anzahl von Tagen (z.B. 5 Tage im Probespiel,
normalerweise 15 Tage im kommerziellen Spiel) zur Verfügung,
um Befehle ausführen zu lassen.
- Abkürzungen
Für jeden Befehlsnamen gibt es eine Abkürzungsformel,
die aus bis zu vier Buchstaben besteht. Bei Zugbefehlen können
sowohl die Abkürzungen, als auch die lange Form des Befehls
benutzt werden.
Beispiel:
erforsche_Verlies(...)
kann abgekürzt werden als:
ERVE(...)
- Compilerzeit Parameter
Die Syntax für die gebräuchlichsten ersten drei Parameter
eines Befehls ist standardisiert. Diese Parameter stellen unter
anderem die Compilerzeit-Parameter dar, da sie in dem Moment eingelesen
werden, wenn der Zugbefehl via E-Mail eintrifft (dies kann sehr
viel früher sein, als der Zug tatsächlich ausgeführt
wird).
Diese werden genannt:
Datum - Das Spielwelt-Datum, an dem der Befehl ausgeführt
werden soll. Das "Default-Datum" kann mit dem Befehl
setze_Datum festgelegt werden. Wenn kein Datum durch den setze_Datum
Befehl festgelegt ist, wird der Befehl an dem frühst möglichen
Datum ausgeführt. Wenn der Spieler ein speziell festgelegtes
Datum wünscht, dann sollte eine Paramter-Folge wie folgt
eingegeben werden:
<Tag Nummer>.<Monat Nummer>.<Jahr Nummer> oder:
<Tag Nummer>.<Monatsname>.<Jahr Nummer>
(anstelle des Punktes zwischen den Parametern kann auch ein Slash
"/", ein Bindestrich "-", oder ein Doppelpunkt
":" verwendet werden)
Beispiel:
"2.1.501", "02.01.501", "2:1:501", "2-Frost-501", "02/Frost/501"
Spieler können auch ein relatives Datum angeben. Diese Nummer
wird dann als die Anzahl der Tage, die nach dem Default-Datum vergehen,
gewertet und dieses Datum wird dann das Datum sein, an dem der Befehl
ausgeführt wird.
Jedes Szenario wird seinen eigenen Kalender mit seinen eigenen
Tagen, Monaten und Jahren haben. Hier
eine Darstellung des Kalenders des ersten Mysticora-Szenarios.
Wiederholversuche - Wenn der Befehl fehlschlägt,
ist dies die Anzahl der später folgenden Versuche, den Befehl
doch noch auszuführen. Beachte, dass pro Tag nur ein Versuch
möglich ist. Wenn ein Befehl wegen Zeitmangel fehlschlägt,
dann wird dies zu der Anzahl gescheiterter Wiederholversuche hinzugezählt,
allerdings wird dann nicht auf 0 runtergezählt. Das heisst,
dass ein Befehl niemals aufgrund von Zeitmangel komplett gestrichen
werden wird.
Wiederholungen - Wenn der Befehl erfolgreich ausgeführt
wurde, ist dies die Anzahl, wie oft der Befehl zusätzlich
(erfolgreich) ausgeführt werden soll. Man beachte, dass pro
Tag nur ein Versuch möglich ist.
Folgende Syntax wird verwendet:
<Befehlsname>([Datum,[Wiederholgungsversuche,[Wiederholungen,]]]Param1,Param2,...)
(Achtung: mit eckige Klammern werden immer Teile eines Befehls
dargestellt, die auch weggelassern werden können)
WICHTIG:
Die ersten drei Kompilierzeitparameter können weggelasssen
werden (oder teilweise: zuerst können die Wiederholungen
weggelassen werden, dann die Wiederholversuche, dann das Datum).
Allerdings wird in diesem Fall das Programm nur das erste
Parameter (z.B. Parameter1) erkennen, wenn es eine Befehlsfolge
ist. Das bedeutet, dass das Parameter mit Anführungsstrichen
markiert sein muss!
NICHT VERGESSEN:
Wenn eine einfache Zahl für Parameter1 gebraucht wird, wird
das Programm dies als eine der ersten drei Kompilierzeitparameter
erkennen, wenn sie nicht erst an vierter Stelle auftaucht!
Hier ist ein Beispiel, in dem die Kompilierzeitparameter nicht
weggelassen wurden:
stehle("1-1-500",3,2,"Mathilda","Heinz",1,1,1)
und hier drei Beispiele, in denen die Kompilierzeitparameter
wegelassen wurden:
stehle(,,,"Mathilda","Heinz",1,1,1)
stehle("Mathilda","Heinz",1,1,1)
stehle("2","Heinz",1,1,1) (Achtung: Mathilda hat die ID-Nr 2)
Während alle Befehle ein Datums- und ein Wiederholversuchsparameter
haben, können einige Befehle keine Wiederholungsparameter
haben. Dies kommt häufig bei solchen Befehlen vor, bei denen
eine Wiederholung bei einem schon geglückten Versuch unsinnig
ist (z.B. es ist nicht möglich, einen erfolgreichen Meuchelmord
zu wiederholen, da das Opfer schon tot ist).
- Spielbestandteil Parameter
Viele Befehls-Parameter werden auf Spielkomponenten
verweisen, z.B. ein Charakter,
eine Siedlung. Dies kann
entweder mit einer ID Nummer, die jedes Komponent/Objekt besitzt,
oder mit seinem Namen geschehen. Die Befehle erlauben auch verschiedene
Spielobjekte als Parameter. Wenn ein Spieler nicht spezifiziert,
auf welchen Spielobjekt-Typ der Befehl verweist, dann wird
das Programm automatisch nach möglichen (sinnvollen) Typen
suchen. Diese Suche startet immer bei einem bestimmte Typ, der
vom jeweiligen Befehl abhängt.
Beispiel: Der Bewegungsbefehl bezieht sich zuerst auf eine Gruppe.
Der Default-Typ ist Gruppe. Wenn ein Spieler nun nur "123"
als ID Nummer für die Spielobjekt angibt, dann wird das Programm
zunächst suchen, ob es eine Gruppe #123 gibt. Wenn ein Spieler
Charakter #123 bewegen will, obwohl es ebenfalls eine Gruppe #123
gibt, dann muss im Befehl "c#123" angegeben werden.
Dies sind alle Varianten, wie man mit Parametern auf ein Spielobjekt
verweisen kann:
"<Typen Code>#<ID>" or: "<Typen Code>#<Name>"
or:
"#<ID>"
or:
"#<Name>"
or:
"<Name>"
or:
<Nr.>
Beispiele, wie man auf den Charakter John Little, das die Nr.
123 hat, verweist:
"c#123"
"c#John"
"#123"
"#John"
"John"
123
Bemerkung zu Charakternamen:
Wenn mit einer Namensangabe auf ein Charakter verwiesen wird,
kann entweder der Vorname oder der Vorname mit dem Nachnamen -
getrennt durch ein Leerzeichen - verwendet werden. Der Nachname
wird nur dann gebraucht, wenn Mehrdeutigkeiten möglich sind
(z.B. wenn der Spieler mehrere Charaktere kontrolliert, die den
gleichen Vornamen haben).
Ebenso ist es wenig ratsam, wenn auf ein Charakter verwiesen werden
soll, das nicht zur Spieleraufstellung gehört, nur den Vornamen
zu verwenden. Die Wahrscheinlichkeit, dass ein anderer Charakter
mit dem gleichen Namen in der Spielwelt existiert, ist sehr hoch.
Hier sollte, um sicher zu gehen, immer die ID-Nr. verwendet werden.
- Befehlskonstanten
Befehlskonstanten müssen von einem einzelen Dollarzeichen
"$" eingeleitet werden. Ansonsten enthalten Befehlskonstanten
nur Buchstaben.
Beispiel:
Anstelle folgende Zeile zu schreiben:
setze_Spielparameter ( -1 )
könnte ein Spieler auch schreiben:
setze_Spielparameter ( $JA ) Tabelle der
Befehlskonstanten
- Zahlen
Parameter, die eine Zahl sind, können, so lange sie nur
aus Ziffern (und dem Minus-Zeichen) bestehen, ohne Anführungsstriche
angegeben werden. Eine Dezimalstelle wird immer mit einem Punkt
angegeben (auch wenn das so unüblich für das Deutsche
ist). Prozentzahlen können beispielsweise auch als "12%"
dargestellt werden; diese wird dann zu 0.12 konvertiert.
Achtung: In solchen Fällen müssen Anführungsstriche
verwednet werden.
- Kommentare
Kommentare können in eine Befehlsdatei mit einem Semikolon
eingefügt werden(";"). Alles, was rechts vom Semicolon
steht, wird vom Programm ignoriert.
Beispiel:
Zauberspruch(, 1, "Dr Doom", "zal-bel-zal-gogth-nixfor") ; warum
hat das das letzte mal nicht funktioniert?
- Funktionswerte
Parameter könne ebenfalls mit arithmetischen Ausdrücken
versehen werden. Diese Werte werden (normalerweise) zur Ausführungszeit
berechnet.
Ein Beispiel für eine solche Funktion ist die "Befehl_erfolgreich"
Funktion:
- Bedingungen
Spieler können "wenn"-Sätze verwenden, wenn
der befehl nur unter bestimmten Bedingeungen ausgeführt werden
soll. Das Heißt, der Befehl, der in der selben Zeile steht,
wird nur dann ausgeführt, wenn die Funktion oder der Ausdruck
zwischen den Schlüsselwörtern "wenn" und dem
später folgenden Schlüsselwort "dann" erfüllt
ist.
Beispiel:
wenn Charakter_Status("Bloodblade", "gefangen?", $JA) dann
befreie(, 5, "Shorty Onehand", "Bloodblade", 1, 5)
- Listen
Hin und wieder benötigen Befehle so genannte "Listen".
Diese haben folgende Syntax:
<Befehlsname>(<Param1>, <Param2>, ..., Liste(<Listen-Element1>,<Listen-Element2>,
...), <ParamX>, <ParamX+1>, ...)
Diese stellen eine Art "Befehl im Befehl" dar.
- Ausführungsdauer
Beim Bedenken
der Ausführungszeit für einen Befehl sollte man sich
mal kurz überlegen, wie es wäre, wenn du selber
gefragt werden würdest diesen Befehl auszuführen? Wie
würdest du antworten, wie lange man dir geben müßte.
Wenn dir immer noch nicht klar ist, wie lange man bräuchte
kannst immer noch die Dauer in der Befehlstabelle
nachschlagen oder folgende Daumenregel anwenden:
|
Nur
1 nicht-trivialen Befehl pro Tag ausgeben.
|
Triviale Befehle sind solche, die innerhalb einiger Minuten
erledigt werden können. Dazu gehören meist die Organisationsbefehle
(wie 'übergebe_Gegenstand' oder 'trete_Gruppe_bei'). Diese
Regeln gilt pro ausführendes Spielkomponente (Charakter,
Gruppe) natürlich.
Besondere Anmerkung: Trainingsbefehle sollten mindestens mehrere
Tage dauern um effektiv zu sein.
Die allgemeine Ablauf, wie Züge versendet und später
wieder erhalten werden:
- Spielrunde
Einen Spielrunde in Mysticora besteht aus den Befehlen, die ein
Spieler einsendet und der daraufhin von der Mysticorasimulation
generierten Auswertung. Am Ende jedes Arbeitstages werden hier
bei CJ Games 1-3 Spielwelttage, einschließlich der Verarbeitung
der Spielzüge, simuliert. Dies wird normalerweise um 18 Uhr
sein (Montags bis Freitags). Wenn eine E-Mail eines Spielers vor
18 Uhr eintrifft, so werden die Befehle mit in die Simulation
eingebunden. Normalerweise wird die Simulation am nächsten
Tag beendet sein (sie dauert rund 16 Stunden). Es gibt allerdings
einen Mindest-Zugabstand: zwischen zwei Zügen eines Spieler
muss (normalerweise) eine Woche liegen. Wenn ein Spieler mehr
Züge abgibt, dann wird die Auswertung dieser Züge entsprechend
verzögert.
Es bleibt zu beachten, dass die Spieler die Auswertungen ihrer
eingesendeten Züge nicht sofort am nächsten Tag empfangen,
sondern etwas warten müssen - normalweise eine Woche - bevor
sie diese erhalten. Dies ist darauf zurückzuführen,
dass jeder eingereichte Befehl an einem bestimmten Spielwelttag
ausgeführt wird. Dies kann jeder zukünftige Tag in der
Spielwelt sein. Der Spieler muss daher warten, bis dieser Spielwelttag
kommt. Jeder Tag wird nämlich individuell simuliert. Dies
kann nur an einem Arbeitstag geschehen, da die Auswertungen noch
kontrolliert werden müssen. Innerhalb einer normalen Woche
werden 5-15 Spielwelttage simuliert.
Ein Spieler kann individuell wählen, wie seine Zugabfolge
aussehen soll. Ein Spieler kann beispielsweise sich dafür
entscheiden, dass er die Auswertung Samstag morgens erhält,
damit er/sie am Wochenende reichlich Zeit hat, sich die Auswertungen
anzuschauen und den neuen Zug auszuarbeiten, ohne dabei Tage in
der Spielwelt zu "verlieren" (am Wochenende läuft
die Simulation nicht). Am Sonntag abend würde der Spieler
dann den Zug absenden. Die Befehle würden dann im Laufe der
folgenden Woche simuliert und die Auswertung würde der Spieler
dann wieder am Samstag morgen erhalten, usw.
- Abfolge/Ablauf eines einzigen Spieltages
Jeder Tag in der Spielwelt wird individuell simuliert. Daher
werden zunächst die Spielerbefehle nach ihrem Spieldatum
sortiert. Alle Befehle, die länger als ein Tag dauern (normalerweise
Bewegungsbefehle) werden dann stückweise über die folgenden
Tage verteilt.
Alle Befehle eines Spielwelttages werden in einer zufälligen
Reihenfolge ausgewertet (d.h. es wird zufällige eine Spielerposition
ausgewählt, von der ein Befehl simuliert wird, dann wird
eine andere Spielerposition gewä, von der ebenfalls ein Befehl
simuliert wird, etc.).
Da Spielzüge mehrere Tage beinhalten (normalerweise 15-30
Tage) werden Spielwelt und reale Welt zeitlich nahezu parallel
verlaufen. Für eine Einheit, die von Punkt A nach Punkt B
läuft, bedeutet dies auch, dass - wenn die Reise länger
als einen Tag dauert - die Einheit jeden Tag einen "Stop"
auf der Reiseroute macht. Zu diesem Zweck wird wird der genaue
Aufenthaltsort der Einheit innerhalb eines Feldes festgehalten,
damit sichergestellt wird, dass für die Bewegung als Ganzes
die korrekte Zeit berechnet wird und es zu keinen Fehlern kommt.
- Erfolg der Befehle
Spieler in Mysticora sollten sich bewußt sein, dass es
ein Befehl, der vom Erfolg vorheriger Befehle abhängt, demzufolge
eine höhere Wahrscheinlichkeit hat, dass der Befehl missglückt.
Gerade hierin aber liegt sehr viel Potenzial für Spieler,
die ihre Züge sorgsam ausarbeiten, da es möglich ist,
sehr viele komplexe Dinge in einem einzigen Zug auszuführen.
So gibt es beispielsweise bei Mysticora die Möglichkeit,
Befehle - wie oben aufgeführt - an bestimmte Bedingungen
zu knüpfen (z.B. wenn bestimmte Gegenstände oder Gruppen
anwesend sind oder sich an einem bestimmten Ort befinden). Zudem
gibt es die Möglichkeit, jedem Befehl ein Parameter zuzuweisen,
wie oft der Befehl ausgeführt werden soll, wenn die Ausführung
des Befehls vorerst nicht erfolgreich war. Ein Spieler, der sich
dieser "Sicherheitsmechanismem" bedient und äußerst
komplexe Befehlskombinationen vermeidet, wird in der Lage sein,
das Risiko solcher Folgefehler, die aus einem missglückten
vorherigen Befehl resultieren, zu minimieren.
Hier mehr zu den Bewegungsregeln
|