Hallo
Hier mal einige Gedanken zur dialog verwaltung. Ich würde gerne mit einigen Usern darüber diskutiren.
Ein Wort zuvor zu den sogenannten Template - Scripts. Diese sind vorgefertigte Scripts, mit welchen sie ihren Entitis Actionen zuweisen können ohne selber Code schreiben zu müssen. Obwohl diese Scripte sehr professionell entwickelt wurden und es leicht ist, einfach Player_move oder Actor_fight auf die entsprechende Entity zu legen, rate ich dringendst davon ab, diese Scripte zu benutzen.
Wenn sie nicht in der Lage sind eigene Aktionen zu schreiben werden sie auch nicht verstehen wie die Templates arbeiten. Wollen sie aber eine derartige Funktion abändern werden sie merken, dass es eine fast unüberschaubare Zahl von Vordefinitionen und verschachtelten Funktionsaufrufen gibt, welche obendrein auch noch schwach kommentiert sind. Nichts ist schlimmer als wenn ein Programmierer ein Script benutzt, welches er nicht versteht. Zudem sind diese Templatescripte doch sehr auf "Hauen und Stechen" ausgelegt, was zwar modern, aber nicht immer erwünscht ist.
Wie also sollte man anfangen?
Alles beginnt mit der Spielidee. Ich werde hier mal sehr undemokratisch eine Idee vorgeben.
„Der Spieler ist bei einen Flug mit seinem nagelneuen Privatflugzeug auf eine einsame Insel abgestürzt. Natürlich hatte er 30 Schutzengel dabei, so das ihm nix passiert ist. Das Flugzeug ist aber Schrott. Natürlich passt ihm das überhaupt nicht und er überlegt wie er wieder nach Hause kommt“. Diese Story dient als Einleitung . Das eigentliche Spiel beginnt, als der Player sich aufgerappelt hat und die ersten Kopfschmerzen verflogen sind. Er steht neben seiner kaputten Maschine und sollte nun beginnen die Insel auszukundschaften. Er wird bald merken, das er nicht allein ist. Auf der Insel wohnt eine Familie von Insulanern in einer Hütte. Der Mann und die Frau haben 2 Kinder. Zum glück sprechen alle gut deutsch (welch ein Zufall) und so kann der Player mit ihnen kommunizieren. Das war´s schon! Mehr ist zur Spielstory nicht zu sagen.
Nun werden sie sicher fragen was der Sinn des Spieles ist, welches Ziel der Spieler erreichen muss, oder wie die ganze Sache überhaupt ausgeht.
Genau hier liegt der Knackpunkt. Ein Spiel in welchen es ein festgelegtes Ziel gibt, oder der Spieler irgendeinen Endzustand erreichen muss, ist im Grunde kein Spiel, sondern ein Wettbewerb. Ein Spiel ist nach hinten immer offen, und darf keine entgültigen Handlungsstränge besitzen. Ein typisches Spiel aus der Kindheit ist „ Vater, Mutter, Kind“, oder „Schule“. Diese Spiele gehen jedes Mal anders aus, und sind so auch immer aktuell. Spiele im weitesten Sinne sind auch eigenständige Simulatoren, z.B. fahr- oder Flugsimulatoren, aber keine Renn und Kampfspiele.
Natürlich sind sie mit diesen Erklärungen noch immer nicht zufrieden! „wie geht das denn nun? Wie spiele ich dieses Spiel“? Was würden sie denn in diese Lage tun?
Natürlich können sie am Strand sitzen bleiben und sich solange selber bemitleiden bis es ihnen vor Hunger schwarz vor den Augen wird, oder sie versuchen einfach nach Hause zu schwimmen um eine Lücke in der Nahrungskette der Haie zu füllen. Es stehen ihnen alle Möglichkeiten offen, nur auf den Bus werden sie vergebens warten. Wohl oder übel werden sie Kontakt mit den Eingeborenen aufnehmen müssen. In vielen Computerspielen stellt man den Kontakt zu anderen Personen mit dem Baseballschläger her aber hier würde das auch nichts nützen. Besinnen sie sich also auf ihre menschliche Fähigkeit der Sprache. Gehe sie zu einer Figur und drücken sie die -T- (talk) Taste. Es geht ein Fenster auf das einen Chatfenster sehr ähnelt. Im unteren Teil geben sie ihren text ein und im oberen Teil wird ihnen der Actor antworten. In den Templates gibt es den sogenannten NPC Dialog und gleich auch den Grund dazu diese Scripte nicht zu verwenden. Die Masse der Strings potenziert sich mit jeder neuen Fragemöglichkeit. Das wiederum schränkt die Freiheitsgrade der Figuren ein.So wie hier sollte es schon aussehen:
Player: guten Tag
Actor: hallo, wo kommen sie den her?
Player: ich bin mit dem Flugzeug abgestürzt
Actor: ja diese Dinger sind gefährlich
Player: ich möchte wieder nach Hause
Actor: warum? Es ist doch schön hier.
Usw.
Also wenn es hier sehr stark nach KI riecht, täuscht sie ihre Nase nicht. Da wären wir also schon beim nächsten Kriterium für ein gutes Spiel. Die Entwicklungs- und Sozialisierungs- fähigkeiten des Actors, bzw aller NPC´s. Aber zuvor noch ein wenig Talk über die KI. Was ist das überhaupt? Obwohl darüber schon ganze Abhandlungen geschrieben wurden, konnte man sich noch nicht auf eine einheitliche Definition einigen. Ich sehe das so:
Ein Objekt besitzt KI, wenn es in der Lage ist mir dieses glaubhaft zu machen J
Jeder NPC „lebt“ in einem Kontext zu seiner Umwelt, welche Einfluss auf sein Verhalten und seinen Zustand hat, die er aber auch aktiv verändern kann. Und zwar nicht nur seine Eigenschaften sondern auch die der andren NPC. Der Zustand des Players, wiederum, ist von der Bewertung aller NPC abhängig.
Nehmen wir mal an, sie kommen auf die Idee Bäume zu fällen um ein Boot zu bauen, so brauchen sie dazu Werkzeug. Das wiederum liegt im Schuppen des Mannes. Der rückt es aber nicht raus, weil sie am Vorabend zu lange mit seiner Frau geredet haben und ihn nun die Eifersucht plagt. Betteln will der Player aber nicht, und nun versucht er eines der Kinder zu überreden, Papas Kettensäge zu klauen. Je nachdem wie dieses Kind den Player bewertet, wird es ihm entweder helfen und das Ding besorgen oder es sofort brühwarm dem Vater erzählen. Jeder NPC hat also eine bestimmte Meinung über einen andren NPC, oder den Player. Daraus ergibt sich ihre Stellung im Spiel und der Spielverlauf. Wie verändert sich aber die Meinung der Figuren im Spiel? Die Kinder werden den Player mögen, wenn er oft mit ihnen spielt, oder wenn er dafür sorgt das die Eltern nichts von ihren Schandtaten erfahren. Die Frau bekommt man vielleicht mit Komplimenten rum und dem Mann wird geschmeichelt, wenn man seinen selbstgebrannten nicht ablehnt und seine handwerklichen Fähigkeiten in den höchsten Tönen lobt. Aber Vorsicht! Wenn sie zu sehr schleimen könnte der Mann misstrauisch werden. Sie müssen also sehr diplomatisch vorgehen.
Hört sich ja alles sehr gut an werden sie sagen (oder auch nicht).Wie auch immer! Das ganze muss erst mal programmiert werden. Wie versteht der Computer den eingegebenen Text?
Zunächst benötigen sie eine Datenbank der relevanten Wörter. Das ist die Hauptarbeit, welche auf sie zukommt. Der Ablauf der Texterkennung ist dann folgender:
1.Bestimmen des Satzcharakters
2.Lokalisieren der Attribute im Satz
3.eliminieren von Bezeichnern
4.assoziieren
5.ermitteln der Stellung des NPC zur Satzaussage
6.Korrektur der Stellung des NPC zur Satzaussage
7.Montage der Antwort
8.Generierung der Action des NPC in Abhängigkeit von punkt 7 und der jeweiligen Situation
Auf diese weise ist er möglich, das der NPC auf die Eingabe des Spielers vernünftig antwortet und reagiert. Im Grunde ist der Programmablauf klar, es fehlt nur an Zeit und alles alleine machen möchte ich auch nicht
Das ist nur ein kurzer Gedankenansatz zum Thema Dialoge. Wer Lust hat an diesem System mitzuarbeiten, der möge sich bei mir melden.
Ich habe ein kleines Spiel,gemacht,in welchen diese Dialogroutine eingebaut ist. Wer es haben will kann mir ja schreiben.
Andreas
http://boygotchy.de