Navigation: Table of Contents, Index, next: Nulligarchy User Manual, prev: Ambush, up: PBEM Games
Diese Dokument dokumentiert den aktuellen Stand der Entwicklung der Python/Tk-Version vom Oligarchie-Host und dem dazu passenden Python/Tk Client Argus. Ich arbeite im Moment nicht mehr an diesem Code, obwohl die Idee von Oligarchie weiterhin aktuell bleibt. Zuwenig Zeit, zuwenig Interesse. Design und Source Code des Spiels werden hiermit unter der GPL veröffentlicht. Eine viel einfachere Implementation dieses Designs existiert als Nulligarchie.
Source Code: argus.tar.gz
Übersicht:
Oligarchie ist ein Spiel um Beziehungen und Macht. Oligarchie ist die Herrschaft der wenigen. Als Spieler übernimmt man die Rolle solcher Oligarchen. Da die Oligarchen sowieso schon mächtig sind und automatisch ein starkes Beziehungsnetz aufbauen, werden den Spielern automatisch alle lästigen und lanweiligen Aufgaben abgenommen.
Die Beziehungen der Oligarchen werden automatisch gepflegt: Führt man für einen anderen Oligarchen einen Auftrag aus, verbessern sich die Beziehungen, ignorieren sich die Oligarchen, verblassen die Beziehungen, werden Oligarchen angegriffen oder beobachtet ein Oligarch, dass Freunde angegriffen werden, verschlimmern sich die Beziehungen.
Oligarchen können Kämpfer, Priestermagier, Landherren oder Seefahrer sein. Je länger ein Oligarch lebt, umso besser kann er kämpfen oder zaubern. Auch dies geschieht automatisch und unabhängig von den Aktionen der Spieler. Man muss sich weder um ständige Übung noch um benötigte Rohstoffe kümmern.
Es bleiben die wirklich spannenden Aufgaben: Priestermagier erschaffen Artefakte, mit denen Kämpfer besser kämpfen können. Kämpfer besorgen den Priestermagiern die nötigen Materialien. Seefahrer transportieren Kämpfer auf der Suche nach seltenen Materialien, Landherren sammeln mächtige Kämpfer um sich, um ihre Burgen zu sichern. Oligarchen können Priestermagier anbeten und sie so mächtiger machen. Als Gegenleistung verpflichten sich die Priestermagier dazu, den Oligarchen in Zeiten der Not beizustehen.
Damit Oligarchen auch selbstständig agieren können, werden alle Verpflichtungen durch Verträge geregelt: Jeder Oligarch kann Angebote anschlagen und jeder Oligarch kann Angebote akzeptieren. Die Kontrolle, ob derartige Verpflichtungen erfüllt wurden und die entsprechende Entlöhnung ist auch automatisiert.
Spieler führen nur wichtige Personen: Oligarchen. Die Oligarchen kümmern sich nur um die spannenden Aufgaben im Leben. Das Spiel bietet Anreiz zur Spielerinteraktion: Reisen, Handel, Beziehungen. Die Macht eines Oligarchen ist unabhängig vom Aufwand, die ein Spieler in das Spiel steckt. Allein das Alter des Oligarchen zählt.
Oligarchen führen ein Leben unabhängig von den Spielern: Oligarchen haben Freunde und Feinde, Oligarchen können von Computerprogrammen gesteuert werden. Spieler wirken in diesem Sinne wie Ehrgeiz auf Oligarchen: Spieler geben einem Oligarchen Emotionen, Ziele, Interessen.
Wenn ein Spieler mit dem Spiel beginnt, erhält er den Spielstand eines Oligarchen vom Host zugeschickt. Diesen Spielstand kann man mittels eines Clients lesen. Bis zum nächsten ZAT (Zug Abgabe Termin) hat man nun Zeit, um sich seinen Zug zu überlegen. Mit dem Client werden die Befehle für den Oligarchen zusammengestellt und an den Host zurück geschickt.
Die wichtigsten Eigenschaften eines Oligarchen sind:
Für einen Kampf werden zuerst die Kampfstufen der Kämpfer festgelegt. Sie besteht aus der eigenen Stufe / 5, der Stufe des verwendeten Artefaktes (es wird immer das Artefakt mit der höchsten Stufe verwendet), und der Zauberstufe (diese gibt es nur bei Priestermagiern und wird im nächsten Abschnitt beschrieben).
Die Kämpfe werden von den Oligarchen mit der geringsten Kampfstufe begonnen. Sie treten am zum Duell gegen den gegnerischen Oligarchen mit der nächsthöheren Kampfstufe (oder einen zufällig bestimmten Oligarchen mit gleicher Kampfstufe). Im Duell gewinnt der Oligarch mit der höheren Kampfstufe; seine Kampfstufe wird allerdings wegen allfälliger Erschöpfung reduziert. Dieser wird wie folgt bestimmt: Es seien X und Y die Kampfstufen der Duellisten, wobei Y etwas grösser als X sei. X wird auf 0 reduziert, Y wird auf Y * (Y - X) / (Y + X) reduziert.
Beispiel: Arndt ist Stufe 24 und hat ein Schwert +3, Irina ist Stufe 42 und hat eine Peitsche +5. Die Kampfstufe von Arndt ist 7, die Kampfstufe von Irina is 13. Arndt verliert und Irinas Kampfstufe wird auf 13 * 6 / 20 = 3.9 reduziert.
Dies wird so lange wiederholt, bis ein Oligarch keinen gegnerischen Oligarchen mehr findet; offensichtlich bilden all verbleibenden Oligarchen eine Allianz. Die besiegten Oligarchen werden Anteilmässig als Gefangene an die Oligarchen der Sieger-Allianz verteilt. Der Besitz der gefangenen Oligarchen wird an ihre neuen Herren übergeben.
Gefangene Oligarchen teilen ihrem Sieger alles mit, was sie wissen. Gefangene Oligarchen können freigelassen oder getötet werden. Tote Oligarchen werden automatisch in der Region begraben, in der sie getötet werden. Hier können sie noch einige Zeit lang durch einen Zauberspruch wiedererweckt werden.
Jeder Oligarch kann an einen anderen Oligarchen beten. Hierdurch wird jede Runde etwas Manna an den angebeteten Oligarchen abgegeben. Als Priestermagier kann man dieses Manna im Kampf verwenden, oder für Zaubersprüche einsetzen.
Da im Normalfall sehr viel Manna benötigt wird, gibt es die Möglichkeit, anderen Priestermagiern ein Manna-Quota einzurichten, welches diese bei Bedarf bis zum angegebenen Betrag anzapfen können.
Im Kampf bezieht ein Priestermagier soviel Manna wie möglich. Das gesammelte Manna gibt die Zauberstufe, welche zusätzlich zur eigenen Stufe und der Stufe des verwendeten Artefaktes zählt. Priestermagier sind im Kampf also sehr mächtig. Für einen Priestermagier ist es allerdings ungünstig, wenn alliierte Priestermagier sich in Kämpfe verwickeln lassen, da dies den Manna Vorrat start schmälert.
Neben dem Kampf kann man Manna auch noch für folgende Zaubersprüche einsetzen:
Ein Beispiel für einen solchen Zauber ist die Erschaffung oder Verstärkung eines Artefaktes mit weiteren Materialien, Teleportation, und die Zerstörung von Burgen und Schiffen.
Befindet sich der Besitzer einer Burg nicht in der gleichen Region wie sein Burg, kann jeder Landherr die Burg übernehmen.
Pro Region darf es nur eine Burg geben. In Regionen ohne Burg kann jeder Landherr eine Burg erbauen.
Nur Oligarchen in der Region, welche als Freunde des Besitzers der Burg gelten, befinden sich auch tatsächlich innerhalb der Burg. Oligarchen innerhalb der Burg können keine Oligarchen ausserhalb der Burg angreifen, und Oligarchen von ausserhalb können keine Oligarchen innerhalb der Burg angreifen. Um den Kampf zu erzwingen, muss die Burg mittels Magie zerstört werden.
Um mit einem Schiff mitzureisen, muss man denselben Bewegungsbefehl wie der Schiffsherr geben. Wenn man ein Freund des Schiffsherren ist, wird man automatisch mitgenommen, ansonsten misslingt die Bewegung und man bleibt zurück.
Auf der Karte gibt es keine Seeregionen, somit sind Begegnungen auf hoher See ausgeschlossen. Alleine entlang der Hafenstädte entlang der Küste können sich Feinde aufhalten. Hierbei gilt, dass sich der Oligarch mit dem schnelleren Schiff dem Kampf entziehen kann, falls er in derselben Runde wegsegelt. Die Flucht mit dem Schiff ist die einzige Möglichkeit, einem Kampf zu entfliehen. Auf dem Landweg ist die Flucht nicht möglich.
Wichtig. Werden aufgelistet. Automatisch verbessert (Verträge werden erfüllt) oder verschlechtert (Angriffe auf Freunde). Verwässern mit der Zeit.
Treffen sich zwei Freunde (beiderseitige Loyalität > 5), tauschen die beiden Oligarchen Informationen aus:
Erinnerungen werden automatisch verwaltet.
In jeder Region ist ersichtlich, welche Verträge angenommen werden können. Ein Vertrag enthält eine Belohnung für die Annahme des Vertrages (diese kann auch null sein), eine Belohnung für die erfolgreiche Ausführung des Vertrages (diese kann auch null sein), eine Frist, innert der man den Vertrag erfüllen muss, den Urheber des Vertrages sowie eine Liste von auszuführenden Befehlen, welche man eingeben muss, damit der Vertrag als erfüllt gilt. Die Erfüllung des Vertrages wird automatisch kontrolliert. Die Auszahlung der Belohnung erfolgt automatisch sobald sich Auftraggeber und Auftragnehmer in derselben Region befinden. Gemeinsam mit der Auszahlung der Belohnung verbessern sich die Beziehungen zwischen Auftraggeber und Auftragnehmer.
Jeder Oligarch besitzt eine Liste selbst angenommenen Verträge und eine Liste der eigenen Verträge, welche von anderen Oligarchen angenommen wurden.
Handel wird mittels Verträgen abgewickelt.
Argus ist ein Oligarchie Client. Argus wird in den Metamorphosen des Ovid von Saturnia zur Bewachung der in eine Färse verwandelten Io eingesetzt:
Hundert Augen bedeckten das Haupt des Argus: von diesen
Pflegten im Wechsel nur zwei zum Schlaf sich zu schließen, die anderen
Blieben ihm offen und standen so immer getreulich auf Posten.
Argus ist der Oligarchie Client der tausend Fenster: Wo nur möglich
wurde darauf geschaut, dass man auf Information doppelklicken kann, um
weiterführende Fenster zu öffnen. Nachdem man dann ein paar duzend
Fenster auf dem Bildschirm hat, dürfte man ein Gefühl für die Probleme
des Argus bekommen... :)
Argus ist ein Programm, welches vollständig in Python entwickelt worden ist. Dies hat die Entwicklung start vereinfacht; zudem läuft Argus überall, wo auch Python läuft; da Python auf sehr Betriebsystemen läuft, ist Argus sehr portabel. Argus läuft unter anderem auch auf Windows, Linux und Mac Plattformen.
Die passende Version von Python holt man sich am einfachsten vom Web: http://www.python.org. Argus benötigt zudem Tcl/Tk, welches auch vom Web (www.scriptics.com) geholt werden muss, falls es nicht zusammen mit Python ausgeliefert wird. Das Python Packet für Windows enthält beispielsweise Tcl/Tk, so dass keine weiteren Schritte nötig sind.
Nachdem Python und Tcl/Tk installiert worden sind, muss man das Argus Packet in einem eigenen Verzeichnis auspacken und die Auswertung auch in dieses Verzeichnis kopieren. Fertig!
Der Start von Argus erfolgt entweder durch einen Doppelclick auf die
Datei argus.py
. Falls dies nicht möglich ist, muss
Python über die Kommandozeile gestartet werden:
python argus.py
Die Kommandozeile kann man durch starten von Programmen wie
xterm
, Eterm
, command
oder
cmd
eingeben.
Wenn Argus startet, muss man als erstes eine Auswertung oder eine Spielstanddatei angeben. Beide Dateiformate werden von Argus gelesen. Ein normaler Spieler von Oligarchie wird allerdings kaum in den Kontakt mit Spielstand-Dateien kommen, so dass im weiteren immer davon ausgegangen wird, dass Argus mit einer Auswertung gestartet wird.
Falls Argus mit einer Auswertung gestartet wird, ist der Oligarch der Auswertung definiert. Anderenfalls existiert kein Oligarch der Auswertung.
Aufgrund der Auswertung kann Argus entscheiden, in welchen Sprachen überhaupt gespielt werden kann. Der Spieler muss sich nun für eine der Sprachen entscheiden. Argus wird versuchen, möglichst alle Texte in dieser Sprache anzuzeigen.
Falls die Auswertung Regionen auf verschiedenen Karten enthält, muss der Spieler noch die Karte auswählen, welche verwendet werden soll.
Das Argus Hauptfenster zeigt die Karte mit allen bekannten Regionen und Verbindungen. Die Anzeige der Regionen und Verbindungen kann über das Kontextmenü an und ausgeschalten werden. Das Kontextmenü öffnet sich, wenn man mit der rechten Maustaste auf die Karte klickt.
Falls ein Spielstand auf diese Art betrachtet wird, kann man die Datei
im Hintergrund editieren und dann mittels des Rescan
Punktes im
Kontextmenü neu einlesen. Nur das Hauptfenster wird neu
initialisiert; etwaige anderen Fenster müssen neu geöffnet werden,
damit die Änderungen an der Datei berücksichtigt werden.
Durch den Menüpunkt Beenden
wird Argus beendet und alle Argus
Fenster schliessen sich.
Durch einen Doppelklick auf eine Region wird ein Regionenfenster geöffnet.
Die Auswertung ist ein XML Dokument; der Spielstand des gesamten Spieles wird im genau gleichen Format gespeichert. Die Auswertung referenziert bestimmte Bilder mit Namen, ohne aber das Dateiformat zu spezifizieren. Jeder Client muss die Bilder selbstständig zur Verfügung stellen. Möglicherweise existieren lokale Kopien der Grafikdateien, oder der Client ist in der Lage, sich die entsprechenden Bilder vom WWW zu besorgen.
Dieses Dokument beschreibt Version 1.0 des Formates.
Hier sollte eine DTD stehen...
Es folgt eine Liste von XML Elementen, welche im Spielstand, in einer Auswertung, oder in Oligarchie-Befehlen auftreten können.
Liefert den Spielstand oder die Auswertung. Der Spielstand sichert das gesamte Spiel, die Auswertung ist der Teil des Spielstandes, der für einen einzelnen Oligarchen extrahiert wird.
In einer Auswertung gibt es einen Oligarch der Auswertung,
aus dessen Sicht die ganze Auswertung generiert wurde. Alle
Informationen im world
Element sind Tatsachen, welche vom
Oligarch der Auswertung in dieser Runde gesehen wurden. Innerhalb des
oligarch
Elementes wird abgespeichert, was der
entsprechende Oligarch sonst noch weiss; diese Information
ist veraltet (beispielsweise der damalige Besitzer eines Artefaktes,
welches einmal gesehen wurde).
id
des Oligarchen der Auswertung (falls eine
Auswertung)
<world turn="5" version="1.0"> |
Liefert Namen von Objekten in verschiedenen Sprachen. Dieses Element
kann innerhalb folgender Elemente auftauchen: oligarch
,
artefact
, material
, currency
.
Weder die Länge der Namen noch die Anzahl Sprachen werden limitiert. Namen können im Laufe des Spieles nicht geändert werden. Im Moment gibt es noch keine Möglichkeiten, zu einem bestehenden Objekt Namen in weiteren Sprachen hinzuzufügen.
<name lang="de">Goldthaler</name> |
Liefert die Namen der Sprachen. Für Sprachen gelten die üblichen ISO
codes (de
Deutsch, en
Englisch,
fr
Französisch) gemäss ISO 639, "Codes for the
representation of names of languages". Jeder client sollte seinen
Benutzern erlauben, die Sprachen in eine Prioritätenliste aufzunehmen,
so dass, wenn möglich, die Namen in der vom Benutzer gewünschten
Sprache angezeigt werden.
<language lang="de">Deutsch</language> |
Liefert die Namen der Berufe, welche ein Oligarch haben kann. Es gibt genau vier Berufe; sie haben die Codes "fighter", "sorcerer", "landowner" und "mariner".
<profession prof="fighter">
<name lang="de">Kämpfer</name> |
Definiert die Gegenstände, welche es im Spiel gibt. In einer Auswertung werden nur die Gegenstände aufgeführt, welche der Oligarch auch tatsächlich kennt.
Liefert Währungen (Geld) oder Materialien mit Namen. Es gibt keine
fixe Umrechnung zwischen den einzelnen Währungen. Der einzige
Unterschied zwischen Geld und Materialien ist, dass Materialien für
Artefakte verwendet werden können. In einer Auswertungen werden nur
die Dinge aufgeführt, welche der Oligarch der Auswertung kennt, im
world
Element aufgeführt.
"money"
(Geld) oder
"material"
(Material) sein.
<material id="432" type="money"> |
Liefert ein Artefakt mit Namen, ehemaligen Besitzern und verwendeten Materialien. Der Bonus eines Artefaktes ist gleich der Anzahl verwendeter Materialien.
<artefact id="65432"> |
Liefert Geld, Material und Artefakte eines Oligarchen oder einer Region, Material eines Artefaktes, oder die Oligarchen, Burgen oder Schiffe in einer Region.
Diese Beziehungen werden durch has
Elemente dargestellt
anstatt durch Schachtelung der entsprechenden Elemente. Bei den
entsprechenden Erinnerungselementen (knows
,
artefactmemory
, oligarchmemory
,
castlememory
und shipmemory
) können die
Beziehungen nicht durch Schachtelung dargestellt werden.
id
des Dinges
<has ref="321" qty="4"/> |
Liefert den Besitzer und vorherige Besitzer von Dingen: Artefakten,
Burgen und Schiffen. owner
Elemente tauchen in den
Elementen artefact
, castle
und
ship
auf. Reihenfolge ist wesentlich: Der erste
owner
war der erste Besitzer. Der letzte
owner
muss das Ding nicht unbedingt mehr besitzen; der
letzte owner
bezeichnet nur denjenigen, der das Ding
zuletzt besass.
id
des Oligarchen
<owner ref="312"/> |
Die nachfolgenden Elemente beschreiben die Umwelt der Oligarchen. In Auswertungen erscheinen alle Elemente stark gefiltert, welche sich nicht in derselben Region wie der Oligarch der Auswertung befinden.
Liefert den Namen einer Region, den Namen der Karte, sowie die Koordinaten der Region auf der Karte, plus eventuell weitere besondere Fähigkeiten der Region.
Aus dem Namen der Karte kann ein Client den Dateinamen der passenden
Grafikdatei konstruieren, indem eine passende Endung angehängt wird.
Lautet der Name der Karte beispielsweise Atlantis
, so kann ein
möglicher Dateiname atlantis.png
lauten. Die Koordinaten
der Region bezeichnen eine rechteckige Fläche auf der Karte. Die
Eckpunkte x1, y1, x2 und y2 sind Prozentangaben, wobei (0,0) links
oben liegt. Falls die Karte also 400 pixel breit ist, und x1 den Wert
25 hat, so entspricht das 100 pixel vom linken Rand.
id
des seltenen Materials, welches man in der
Region erhalten kann. Das Material wird demjenigen Oligarchen
gegeben, welcher sich am längsten in der Region aufgehalten hat.
turn
Attribut des world
Elementes) ohne Rest durch
rate_time
teilen kann, ist es soweit.
<region id="5432" map="Kesham" x1="15" y1="70" x2="20" y2="75"> |
Liefert die Verbindungen zu Nachbarregionen. Tritt nur innerhalb von
region
Elementen auf.
world
Elementes aufgeführt)
knows
Element)
<connect id="70952" target="53208" hidden="1"> |
Liefert Name, Zustand und ehemalige Besitzer einer Burg. Der aktuelle
Besitzer ist derjenige Oligarch, der im letzten owner
Element aufgeführt wird. Sollte sich dieser nicht mehr in der Region
befinden oder gefangen genommen worden sein, so kann sich jeder
Landherr zum zum neuen Besitzer machen.
Elf27, so kann ein möglicher Dateiname
elf27.png
lauten.
<castle id="5321870" level="271" maintained="271" img="fort3"> |
Liefert Name, Zustand und ehemalige Besitzer eines Schiffes. Der
aktuelle Besitzer ist derjenige Oligarch, der im letzten
owner
Element aufgeführt wird. Sollte sich dieser nicht
mehr in der Region befinden oder gefangen genommen worden sein, so
kann sich jeder Seefahrer zum neuen Besitzer machen.
Elf27, so kann ein möglicher Dateiname
elf27.png
lauten.
<ship id="65432" level="56" maintained="56" img="longboat1"> |
Für eine Auswertung gilt:
agent
Attribut und
mit einer gefilterten Liste von Elementen aufgeführt:
knows
, artefactmemory
,
oligarchmemory
, castlememory
und
shipmemory
werden nur aufgeführt, falls der betreffende
Oligarch ein Freund des Oligarchen der Auswertung ist. Die
entsprechende Information wird für den Oligarch der Auswertung
automatisch auf den letzten Stand gebracht. Damit Information mit
nicht befreundeten Oligarchen ausgetauscht werden kann, muss man das
info
Element verwenden. Das name
Element
anderer Oligarchen wird immer aufgeführt.
id
Attribut und name
Elementen aufgeführt. Alle weitere
Information entnimmt der Oligarch der Auswertung den eigenen
oligarchmemory
Elementen. Es kann vorkommen, dass kein
entsprechendes oligarchmemory
Element vorhanden ist:
Falls der Oligarch beispielsweise mit einem owner
Element
referenziert wurde, gibt es ausser dem Namen keine weitere
Informationen.
Liefert Namen und weitere Informationen zu einem Oligarchen. Am
meisten Information gibt es, wenn der Oligarch der Auswertung
aufgeführt wird. Am wenigsten Information gibt es, wenn der Oligarch
nur als ehemaliger Besitzer eines Dinges bekannt ist; in diesem Fall
werden nur id
und img
Attribute aufgeführt.
Im oligarch
Element selber wird es allerdings immer
name
Elemente geben.
id
des Oligarchen, an den das produzierte
Manna abgegeben wird
prisoner_of
ist die id
eines Oligarchen)
oder tot und begraben (prisoner_of
ist die
id
einer Region).
Elf27, so kann ein möglicher Dateiname
elf27.png
lauten.
<oligarch id="543543" prof="fighter" level="5"
agent="kensanata@yahoo.com" passphrase="wvjzjmwqch" img="fighter1"> |
Das Gedächtnis von Oligarchen speichert Informationen über andere Oligarchen, Artefakte, Burgen, Schiffe, Regionen und die Verbindungen zwischen Regionen. Information wird aus dem Gedächtnis gestrichen, sobald der Oligarch sich in derselben Region wie die betreffenden Objekte befindet. Informationen werden neu im Gedächtnis gespeichert, sobald sich der Oligarch von den betreffenden Objekten trennt.
Liefert die Beziehung zu einem Oligarchen. Dieses Element tritt nur
innerhalb von oligarch
Elementen auf. Die so
aufgeführten Oligarchen werden auch innerhalb des world
Elementes aufgeführt.
Falls sich ein Oligarch in derselben Region wie der Oligarch der
Auswertung befindet, wird das entsprechende
oligarchmemory
Element automatisch auf den neuesten Stand
gebracht. Falls sich ein befreundeter Oligarch in derselben Region
wie der Oligarch der Auswertung befindet, werden alle auf den
neuesten Stand gebracht.
Am meisten Information gibt es, wenn ein befreundeter Oligarch in
derselben Region aufgeführt wird. Am wenigsten Information gibt es,
wenn der Oligarch nur als ehemaliger Besitzer eines Dinges bekannt
ist; in diesem Fall wird nur das ref
Attribut aufgeführt.
Mittels ref
Attribut lassen sich allerdings aus dem
entsprechenden oligarch
Element noch mindestens das
img
Attribut sowie name
Elemente finden.
id
des Oligarchen
id
des letztbekannten Aufenthaltes
prisoner_of
ist die id
eines Oligarchen)
oder tot und begraben (prisoner_of
ist die
id
einer Region).
<oligarchmemory ref="32804" loyalty="7" region="512" age="4" prof="fighter" level="3"> |
Liefert die Erinnerung an ein Artefakt. Dieses Element tritt nur
innerhalb von oligarch
Elementen auf. Die so
aufgeführten Artifakte werden auch innerhalb des world
Elementes aufgeführt. Dort werden allerdings alle Elemente ausser
name
herausgefiltert.
id
des Artefaktes
id
des letztbekannten Aufenthaltes
<artefactmemory ref="32804" age="2"> |
Liefert die Erinnerung an eine Burg. Dieses Element tritt nur
innerhalb von oligarch
Elementen auf. Die so
aufgeführten Burgen werden auch innerhalb des world
Elementes aufgeführt. Dort werden allerdings alle Elemente ausser
name
herausgefiltert.
id
der Burg
id
des letztbekannten Aufenthaltes
<castlememory ref="32804" level="103" maintained="103" age="9"> |
Liefert die Erinnerung an ein Schiff. Dieses Element tritt nur
innerhalb von oligarch
Elementen auf. Die so
aufgeführten Schiffe werden auch innerhalb des world
Elementes aufgeführt. Dort werden allerdings alle Elemente ausser
name
herausgefiltert.
id
des Schiffes
id
des letztbekannten Aufenthaltes
<shipmemory ref="32804" level="53"> maintained="53" age="3"> |
Liefert Referenzen auf bekannte Regionen, Ausgänge und Materialien.
Die hier aufgeführten Regionen und Ausgänge werden auch innerhalb des
world
Elementes aufgeführt. Dort werden allerdings alle
Elemente ausser name
herausgefiltert.
Das knows
Element listet alle Memory Elemente auf, welche
sich im Laufe der Zeit nicht ändern können, also auch kein
age
oder region
attribut benötigen.
Regionen, Ausgänge und Materialien ist entweder bekannt oder nicht.
Es gibt keine veralteten Informationen.
id
einer Region oder eines Ausganges
<knows ref="5432"/> |
Die folgenden Elemente zeigen an, wie Befehle eingegeben werden und in welcher Form die Rückmeldung stattfindet. Befehle wurden entweder vollständig oder gar nicht ausgeführt.
Setzt die Befehle für einen Oligarchen. Dies ist an mehreren Stellen interessant:
oligarch
plan
Element enthält alle
Befehle, welche noch auszuführen bleiben (dies kann man durch
wait
Elemente erzwingen)
contract
plan
Element enthält alle
Befehle, welche ausgeführt werden müssen, damit der Vertrag als
erfüllt gilt.
new_order
plan
Element enthält alle
Befehle, welche in einer Runde ausgeführt werden sollen.
<plan> |
Liefert die in der letzten Runde erfolgreich ausgeführten Befehle.
Die Auflistung der Befehlselemente entspricht dem plan
Element. Innerhalb eines done
Elementes werden die
Befehle in der Reihenfolge aufgelistet, in der sie ausgeführt wurden.
Tritt nur innerhalb eines oligarch
Elementes auf.
<done> |
Liefert die Befehle, welche in der letzten Runde nicht ausgeführt
werden konnten. Tritt nur innerhalb eines oligarch
Elementes auf. Es wird keine Erklärung für den Fehler geliefert.
<error> |
Mittels Verträge können Beziehungen zwischen Oligarchen aufgebaut werden. Jeder erfüllte Vertrag verbessert die beidseitigen Beziehungen zwischen Auftraggeber und Auftragnehmer. Auch Handel wird über Verträge abgewickelt.
Liefert einen Vertrag mit Namen, Auftraggeber, Belohnung und
Befehlsliste. Das contract
Element kann, je nach Status,
innerhalb verschiedener Elemente auftreten:
region
oligarch
contract
Elemente
werden so bald wie möglich belohnt. Hierzu müssen sich Auftraggeber
und Auftragnehmer in derselben Region befinden.
plan
Es ist möglich, den Vertrag nur einem einzelnen Oligarchen anzubieten. Es gibt keine Möglichkeit, den Vertrag einer Gruppe von Oligarchen anzubieten.
id
des Auftraggebers
id
des Oligarchen, der den Auftrag annehmen
darf; default ist null, contract
Elemente in einem
region
Element werden allen Oligarchen gezeigt
<contract ref="5431"> |
Liefert die Belohnung für die Annahme und für die Ausführung eines
Vertrages. Das pay
Element tauch nur innerhalb von
contract
Elementen auf. Innerhalb eines
contract
Elementes können beliebig viele pay
Elemente auftauchen.
before
, wird die Belohnung bei der Annahme
des Vertrages ausbezahlt; falls after
, wird die Belohnung
ausgezahlt, sobald das contract
Element kein
plan
Element mehr enthält und sich Auftraggeber und
Auftragnehmer in derselben Region befinden. Default ist
after
.
id
des Dinges (Geld, Material, Artefakt oder
gefangener Oligarch)
<contract ref="5431"> |
Acceptiert einen Vertrag.
id
des Vertrages
bid
Element des Vertrages
wiederholt wird, falls man den Vertrag bekommt; default ist 1
<accept ref="5431" bid="3"/> |
Bezeichnet die Elemente eines Planes innerhalb eines Vertrages, welche
überboten werden können. Das Überbieten geschieht mittels
bid
Attribut im accept
Element.
Das bid
Element kann nur in einem plan
Elementen auftauchen, das Teil eines contract
Elementes
ist.
<contract ref="5431"> |
Die Oligarchie-Befehle bestehen aus XML Dateien mit einem
new_order
Element. Rückmeldungen erfolgen erst mit der
nächsten Auswertung mit done
und error
Elementen. Falls eingeschickte Befehle nicht als XML Dokument geparst
werden können, werden sie ignoriert. Der Host schickt eine
entsprechende Email zurück.
Liefert die Befehle, welche für einen Oligarchen in dieser Runde
ausgeführt werden sollen. Dieses Element wird von Clients per Email
an den Host geschickt. Der Inhalt des new_order
Elementes ersetzt alle zuvor eingegangenen new_order
Elemente.
id
des Oligarchen
rewrite
, werden das bestehende
plan
Element des Oligarchen durch das enthaltene
plan
Element ersetzt. Default wird Inhalt des
enthaltenen plan
Elementes and den Inhalt des bestehenden
plan
Elementes angehängt.
<new_order ref="71" passphrase="Gegen dumme Sprüche!" type="rewrite"> |
Setzt die neue Email Adresse des Oligarchen. Dieses Element tritt nur
innerhalb des new_order
Elementes auf.
<address>kensanata@yahoo.com</address> |
Setzt das neue Passwort des Oligarchen. Dieses Element tritt nur
innerhalb des new_order
Elementes auf.
<passphrase>Dumme Sprüche sind wichtig.</passphrase> |
Attackiert einen Oligarchen.
id
des Oligarchen
<attack ref="5432"/> |
Befreit einen gefangenen Oligarchen.
id
des Oligarchen
<free ref="5432"/> |
Töten einen gefangenen Oligarchen.
id
des Oligarchen
<kill ref="5432"/> |
Wechselt falls möglich den Beruf.
prof
des neuen Berufes
<job ref="51"/> |
Baut eine neue Burg, falls in der aktuellen Region noch keine Burg
steht. Nur Landherren können Burgen bauen. Der Erbauer der Burg wird
automatisch der Besitzer der neuen Burg. Das
build_castle
Element muss name
Elemente
enthalten. Der Name kann später nicht mehr geändert werden.
<build_castle> |
Übernimmt eine Burg, falls der Burgbesitzer nicht in der aktuellen Region ist. Nur Landherren können Burgbesitzer werden.
id
der Burg; default die Burg der aktuellen Region
<take_castle ref="5432"/> |
Übergibt den Besitz einer Burg an einen anderen Oligarchen. Nur Landherren können Burgbesitzer werden.
id
der Burg; default die Burg der aktuellen Region
id
des neuen Besitzers
<give_castle ref="4213" target="8624"/> |
Baut eine neues Schiff, falls die Region Zugang zu Wasser hat. Nur
Seefahrer können Schiffe bauen. Der Erbauer des Schiffes wird
automatisch der Besitzer des neuen Schiffes. Das
build_ship
Element muss name
Elemente
enthalten. Der Name kann später nicht mehr geändert werden.
<build_ship> |
Übernimmt ein Schiff, falls der Schiffsbesitzer nicht in der aktuellen Region ist. Nur Seefahrer können Schiffsbesitzer werden.
id
des Schiffes
<take_ship ref="5432"/> |
Übergibt den Besitz eines Schiffes an einen anderen Oligarchen. Nur Seefahrer können Schiffsbesitzer werden.
id
des Schiffes
id
des neuen Besitzers
<give_ship ref="4213" target="8624"/> |
Die nun folgenden Befehle gelten erst für nachfolgende Runden und werden nicht mehr ausgeführt. Hiermit lassen sich Befehle für zukünftige Runden eingeben.
<wait/> |
Deklariert einen nicht befreundeten Oligarchen für eine Runde zum Freund.
id
des Oligarchen
<help ref="93"/> |
Liefert Informationen an eine nicht befreundeten Oligarchen (mit
befreundeten Oligarchen wird alle Information automatisch
ausgetauscht). Enthält beliebig viele knows
,
artefactmemory
, oligarchmemory
,
castlememory
und shipmemory
Elemente.
Falls der empfangende Oligarch sich nicht in derselben Region befindet, muss der empfangende Oligarch ein Priestermagier sein.
id
des Oligarchen, default sind alle Oligarchen
der Region; es ist nicht möglich, eine Gruppe von Oligarchen anzugeben
<info ref="6321"> |
Mit diesem Befehl reist der Oligarch in eine andere Region. Als
Parameter gibt man die id
eines Ausganges aus der
aktuellen Region an. Dieser Ausgang muss dem Oligarchen bekannt sein,
dh. innerhalb des oligarch
Elementes muss es ein
knows
Element geben, welches das verlangte
connect
Element referenziert.
Es kann geheime Verbindungen zwischen zwei Regionen geben. Solche Verbindungen erlernt man von Freunden. Wenn Oligarch A sich in einer Region befindet, in der es eine geheime Verbindung gibt, und sich in derselben Region ein Freund B aufhält (dh. B hat eine Beziehung Stufe 5 oder höher zu A), so erfährt A automatisch von der geheimen Verbindung.
Um Wasser-Verbindungen zu benutzen, muss man den sail
Befehl verwenden. Der sail
Befehl sieht gleich aus wie
der go
Befehl.
id
eines bekannten Ausganges
<go ref="8653"/> |
Der sail
Befehl sieht genau gleich aus wie der
go
Befehl. Die Beschränkungen auf bekannte Ausgänge gilt
für Wasser-Verbindungen
FIXME
Damit man den sail
Befehl verwenden kann muss man
entweder den Beruf Seefahrer
haben und ein Schiff in der Region
besitzen, oder zusammen mit einem solchen Seefahrer reisen. In diesem
Fall müssen beide denselben Befehl eingeben. Der sail
Befehl funktioniert für Wasser-Verbindungen zwischen zwei Regionen.
Es kann auch geheime Wasser-Verbindungen
zwischen zwei Regionen geben.
Mit Manna lässt sich nicht nur kämpfen; mit grösseren Mengen Manna lässt sich auch sonst gut zaubern.
Transferiert automatisch jede Runde das vorhandene Manna an einen anderen Priestermagier.
id
des Oligarchen
<transfer ref="93"/> |
Dieses Element tritt innerhalb von zwei Elementen auf:
oligarch
plan
id
des Oligarchen
<limit ref="93"/> |
Teleportiert den Priestermagier zu einem anderen Oligarchen. Andere Oligarchen können nicht teleportiert werden.
Kosten: 100 Manna.
id
des Oligarchen
<teleport ref="2754372"/> |
Verwendete Materialien werden mit has
Elementen
angegeben. Der Name wird mit name
Elementen angegeben
und kann später nicht mehr geändert werden. Die Anzahl verschiedener
Materialien bestimmt automatisch die Stufe des Artefaktes.
Kosten: 50 Manna pro Material.
<create_artefact> |
Verbessert ein Artefakt mit weiteren Materialien. Die neuen
Materialien werden mit has
Elementen angegeben.
Kosten: 50 Manna pro Material.
id
des Artefaktes
<augment_artefact ref="2754372"> |
Zerstört eine Burg.
Kosten: Genausoviel Manna wie der Unterhalt der Burg plus magischer Schutz der Burg
id
der Burg
<destroy_castle ref="65432"/> |
Schützt eine Burg.
Kosten: Variabel; die Mannamenge wird für den Schutz der Burg verwendet.
id
der Burg
<protect_castle ref="65432" qty="50"/> |
Erweckt einen Oligarchen wieder zum Leben. Der erweckte Oligarch ist automatisch gefangener des Priestermagiers, der Ihn zum Leben wieder erweckt hat.
Kosten: 500 Manna.
id
des Oligarchen
<resurrect ref="8764"/> |
Liefert Informationen über die Oligarchen, welche in der aktuellen Region begraben sind.
Kosten: 100 Manna.
<list_dead/> |
Befehle werden nach Phasen gruppiert ausgeführt. Zuerst werden für alle Oligarchen die Befehle der Phase 1 ausgeführt, dann werden für alle Oligarchen Befehle der Phase 2 ausgeführt, etc. Die Reihenfolge der Oligarchen ist undefiniert. Die Reihenfolge der Befehle einer Phase ist ebenfalls undefiniert.
address, passphrase,
sail
Nachdem der Host alle Befehle verarbeitet hat, werden alle Auswertungen generiert und an die Spieler verschickt. Hierbei wird versucht, die mail per PGP verschlüsselt, falls dies möglich ist.
Als Email Filter wird procmail
eingesetzt. Das bedeuted,
dass alle Email Befehle an den Host im Subject (Betreff) von
Emails an den Host stehen müssen.
Folgende Email Befehle werden vom Email Filter erkannt:
address
Element
ändern.
Alle Email Befehle werden vom Email Filter bestätigt.
Falls ein Oligarch nicht der Kontrolle eines Menschen unterliegt, werden seine Interessen durch einen Roboter wahrgenommen. Es gibt Roboter mit verschiedenen Persönlichkeiten. Neue Roboter Source Codes in C, Java, Perl oder Python nehme ich gerne entgegen. Es ist mir leider nicht möglich, optionale Bibliotheken zu installieren
Roboter bekommen auf STDIN Ihre Auswertung präsentiert und müssen
passende Befehle auf STDOUT schreiben. Fehler sollen auf STDERR
geschrieben werden und werden meistens ignoriert... :)
Navigation: Top, Table of Contents, Index, next: Nulligarchy User Manual, prev: Ambush, up: PBEM Games