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.
Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif