Ziel des Dokumentes: Plannung eines Strategie und Adventurespiel. Überblick: Das Rollenspiel soll in Echtzeit stattfinden. Es soll aber nicht wie herkömmliche Rpg nur der Ablauf in Echtzeit sein, sondern auch die Administration, Generierung von neuen Gegenständen, Veränderung der Karte und Erschaffung neuer Völker. Jede erdenkliche Funktion soll durch das Protokoll, serverseitige Plugins oder Skalierung von Variablen möglich sein. Technischer Überblick: Das Spiel soll über mehrere Server rennen, ähnlich dem IRC Netzwerkes. Ob einzelne Kartenabschnitte von einzelnen Server berechnet werden, oder alle Daten ständig synchronisiert werden, muss noch durch Tests bestimmt werden. Karte: Grundausstattung soll die Erde sein, wie sie derzeit aussieht. Mit einem Importfilter könnte man die geografischen Gegebenheiten übernehmen. Wälder, Stadte, Häuser und Burgen sollen zufallsgeneriert auf der Karte verteilt sein. Diese darf dann durch Administratoren [->Götter] verändert werden. Rastermaß: Die Gesamte Erde wird in ca. 5cm Rastermaß dargestellt. Höhen: Es gibt viele Ebenen. Es muss aber nicht für jede Möglichkeit von x,y,z Koordinaten ein Objekt existieren. Himmel Dachgeschoß Erde Keller Hölle könnten die Ebenen an einem bestimmten Kartenpunkt sein. Götter: Alle Eigenschaften sollen sehr skalierbar sein. Eine Person (im Spiel Gott) hat die absolute Macht und kann alles nach belieben verstellen. Er kann zudem entscheiden wieviel Macht andere Gruppen (Menschen, Tiere, Gegner, Halbgötter, Elfen,...) und einzelne Personen haben. Jede einzelne Fähigkeit kann Personen oder Gruppen verweigert werden. Schummeln: Um schummeln möglichst zu verhindern, liegt die gesamte Intelligenz am Server. Der Client empfängt nur Protokolldaten und kann mitteilen was man vorhat. Wie das Vorhaben ausgegangen ist, wird *immer* serverseitig berechnet, und wenn es sich nur um eine Bewegung, oder um eine Waffe die man in die Hand nimmt handelt. Gegner werden durch Skripts gesteuert [->Lebewesen] und trotzdem müssen Skripte bekämpft werden, und zwar solche die einen Charakter ständig an Stärke gewinnen lassen. Folgende Punkte erschweren das Programmieren von Skripten wesentlich: * immer wiederkehrende Aktionen haben keinen Sinn Abhilfe: ständig variieren * Götter bekommen Nachrichten wenn lange Zeit das gleiche getan wird Abhilfe: Pausen einlegen oder andere Arbeiten einplanen * es gibt ständige Gefahren die plötzlich auftreten können, auf die nur eine KI reagieren kann. Diese Gefahren können selbstverständlich ständig von Göttern erweitert werden. Abhilfe: ständig Pausen einlegen und alle Zaubertränke trinken Beispiele: - Beim Boxen verstaucht man sich den Knöchel, man muss ihn einbinden - Wenn man durstig wird muss etwas getrunken werden. - Plötzliche Müdigkeit * Die Effektivität nimmt stark ab. Es zahlt sich nicht aus eine Tätigkeit pro Tag über 10 min durchzuführen. Abhilfe: Skripte nur über diese Zeitspannen laufen lassen. * KIs sprechen einen an und erwarten eine Antwort Abhilfe: Intelligenter Chat-bot Als Zusammenfassung kann man sagen, dass es nicht 100% sicher möglich ist Skripte zu verhindern, man kann aber den Aufwand so in die Höhe treiben, dass es einfacher wird selber zu spielen. Freie Definitionen: Es können neue Lebewesen, Karten, Matrie (Gegenstände...) frei in Laufzeit definiert werden. Lebewesen: Können von Menschen (Clients) oder über Skripte gesteuert werden. Skriptbekämpfung ist aber in diesen fällen nicht effektiv, da sie keine Fähigkeiten hinzubekommen. Betroffen sind: - Gegner - Pflanzen - Tiere - Ordnungshüter (Polizisten, Paladine,...) - für alles wo sich kein Mensch meldet - Verkäufer (was kein Mensch erledigen will) Rassen: Es gibt verschiede Rassen mit verschiedene Eigenschaften. Hauptsächliche Unterscheidung ist in: - Sterblichkeit - Fähigkeiten am Beginn - Aussehen - Bestrebungen (gut, böse, machtbesessen,...) so sind z.b: * Feen, Elfen und Engeln sind unsterblich, können aber kaum an Fähigkeiten zugewinnen, sind sehr schwach und können nichts destruktives. * Orks sind sehr stark, haben von Beginn an Waffen und können leicht Fähigkeiten hinzugewinnen und noch stärker werden. Sie sterben aber nach 20 Jahren (20 Spielwochen), oder vorher im Kampf. * Dämonen sind sehr mächtig wenn sie lange gespielt werden. Sie können aber nicht die Hölle verlassen und müssen als Geist einen Wiederbelebungsstein finden und weiterspielen zu können. * Menschen sind ein Mittelding, sie sterben nicht gar zu leicht und leben recht lange. Community: Aktivitäten wie Turniere, Wahlen für Könige, Clanbildung entsteht automatisch, wenn es viele wege zur Kommunikation gibt und eine gute Community entsteht: * flüstern (nur eine Person versteht was man sagt) * reden * schreien * Brieftauben * Briefe * Foren (dort können alle Nachrichten hinterlassen) * beten (sprechen mit Gott) allgemeines über Protokoll: Das Protokoll ist sehr einfach gehalten, aber sehr flexibel. So können ständig neue Befehle definiert werden. Die ganze Welt ist Objektorientert. Aktionen erfolgen deswegen immer auf Objekte. Der Server überprüft ob diese erreichbar sind: * im Sichtbereich * im Inventar * oder markiert (Teleporter) Aktionen: DO MOVE OBJ dieser befehl würde die Person zu einem Objekt bewegen. Das Objekt wird meistens ein Stück Land sein. DO: es folgt eine Aktion, die Serverseitig interpretiert werden muss MOVE: der Code für eine Aktion. Es können immer neue dazu kommen. OBJ: Eine eindeutige Objekt-ID, damit der Server weiß von was die Rede ist. Es ist auch möglich, dass Aktionen über mehrere Befehle ausgeführt werden. DO CREATE_SPELL_WIZARD WIZARD_BOOK_ID -> SPELL_ID DO USE_SPELL SPELL_ID -> bereit Zauberspruch einzusetzen DO THROW_WIZARD POSITION Grafische Eigenschaften: Das Protokoll kann auch für grafische Punkte verwendet werden. Man kann abfragen stellen, damit man ständig über neue vorgehens- weisen informiert wird. REQUEST APPEAR ENEMY Dadurch wird der Server so initalisiert, dass er über das erscheinen von Gegner bestimmte Daten verschickt. Es ist aber auch möglich Abfragen zu erstellen. SEE COLOR_OF_BEARTH ENEMY_ID Katalogisierung: Der Client muss dynamisch erweiterbare Menüs haben um die ständigen Erweiterungen Herr zu werden. SEE DYNAMIC_MENU_FIGHT Gibt Auskunft über neue Plugins die am Server hinzugekommen sind. Selbstverständlich, kann über ein Request der Client auch ständig Informiert werden. Problematik: Die Clients könne versuchen möglicht viel von den tausenden Objekten (Bart, Haarfarbe, Kleidung, Augenfarbe, Schilder,...) darzustellen. Es ist deshalb unabdingbar, alles zu Katalogisieren, damit der Client weiß wie er etwas darstellen kann, obwohl keine Grafik für exakt diese Situation vorhanden ist. Beispiele: Gruppen: / | /-----------------------------\ | | | | Land Gegenstände Menschen Häuser | /--------------\ | | | Waffen Körbe Stäbe Seltenheit: unique, selfmade, standard, seldom, worth Material Metal Wood Plastic Water .... | /--------\ | | gold zink Man kann natürlich neue Gruppen definieren. Beim Schmieden eines Schwertes, wird dann alles selbständig angelegt. Alte Waffen sind eventuell bei fast keiner Gruppe dabei, dort wird dann einfach nur die Waffengattung o.ä. dargstellt. neue Aktivitäten: Neue Aktivitäten können serverseitig erstellt werden (von Göttern). z.b: Bedingung: Wenn Zielobjekt == Wasser und Waffe == Angel und Zielobjekt.enthält (Fische) Reaktion: Meldung über Fischen ausgeben und Zeitspanne warten und Inventar.hinzufügen (Fische) und Zielobjekt.entfernen (Fische) Technische Realisierung Verschiedene Server bieten verschiedene Dienste an. Am Beginn wird das wahrscheinlich nur ein tatsächlicher Computer sein, auf den alle Dienste laufen. Chat wird über einen IRC Server realisiert. Leute die in der Nähe stehen (und sich anschauen), wechseln automatisch in den gleichen Channel. Fürs schreien und flüstern gibt es dann auch noch privat- Channels oder globale Channels. Ein eigener Grafikserver bietet alle Grafiken zum Download an. Die Karte kann auf verschiedenen Spieleserver aufgeteilt werden. Durch automatisches redirekt weiß der Client welcher Server der richtige ist. Charaktere, Klassen, Objekte liegen redudant auf jeden Spieleserver. Eine Datenbank speichert alle Daten.