Construction Set Intelligente KI erstellen

Nirima

Neuankömmling
Hallo erstmal,

Ich bräuchte da mal wieder ein bisschen Hilfe.
Ich würde gerne einen NPC mit einer recht intelligenten KI erstellen. Wie man einen NPC erstellt weiß ich, allerdings weiß ich nicht wie ich ihn zu einem richtigen Begleiter machen kann. Er sollte mehr als nur Folgen und Warten können. Ich fand die KI von der Alba-Mod echt gut, daher wäre es super wenn mir jemand erklären könnte, wie ich sowas erstelle.
Ich glaube man muss die einzelnen Dialoge verfassen und dann mit den Scripts versehen, die den Begleiter z.B. folgen lassen. Falls meine Annahme richtig ist, wie lauten denn die ganzen Befehle, und wie sollte ich sie einsetzen?

Danke schonmal im Vorraus.
Gruß, Nirima
 
Wie dir vielleicht aufgefallen ist, sind Albas Dialoge keine Dialoge. Wenn Du sie ansprichst siehst Du eine Message-Box und nicht das Dialogmenü.

Demnach dürfte es eher so sein, dass die Dialoge in Scripts verpackt sind und nicht umgekehrt.

Zum Thema KI: Du wirst halt durch die Engine beschränkt. Es stehen dir lediglich ein paar Grundmuster zur Verfügung, aus welchen Du das eine oder andere tolle KI-Paket(en: AI-Package) zaubern kannst. Das sollte dir halt von Anfang an klar sein.
 
Hallo erstmal,

Ich bräuchte da mal wieder ein bisschen Hilfe.
Ich würde gerne einen NPC mit einer recht intelligenten KI erstellen. Wie man einen NPC erstellt weiß ich, allerdings weiß ich nicht wie ich ihn zu einem richtigen Begleiter machen kann. Er sollte mehr als nur Folgen und Warten können. Ich fand die KI von der Alba-Mod echt gut, daher wäre es super wenn mir jemand erklären könnte, wie ich sowas erstelle.
Ich glaube man muss die einzelnen Dialoge verfassen und dann mit den Scripts versehen, die den Begleiter z.B. folgen lassen. Falls meine Annahme richtig ist, wie lauten denn die ganzen Befehle, und wie sollte ich sie einsetzen?

Danke schonmal im Vorraus.
Gruß, Nirima


Wie DICE schon sagte, die KI hängt im wesentlichen von dem Spiel selbst ab, da kannst du so auf die Schnelle nichts verändern. Im Bereich AI ( Artificial Inteligence=Künstliche Intelligenz) der Humanoiden kannst du bereits vorhandene Packages deinen Npc`s zuweisen oder neue erstellen ( Wenn du da genauere Angaben brauchst, einfach fragen ). Je nachdem wieviele verschiedene Packages du dem NPC gibts, verändert sich auch sein tagesablauf und wird mit mehr Packages logischerweise komplexer und echter. Das Verhalten z.B in Kämpfen lässt sich meines Wissens mit dem Faktor Aggression steuern, heißt aber nicht, dass die dann zwangsläufig intelligenter handeln.

Bezüglich Alba:

Solche Charaktere kommen im normalen Oblivion nicht vor. Durch cleveres Scripting kann man jedoch solche erstellen, alles weiß ich nicht darüber, doch wenn du möchtest, kann ich dir gern erzählen, was ich darüber weiß.
 
Ok... ich wär dir furchtbar dankbar, wenn du mir das mit den Packages usw. genauer erklären könntest. Im Moment versteh ich nur Bahnhof ^^
 
Gut, ist eigentlich vom prinzip her nicht so schwierig, dass die Typesse dann aber auch das tuen, was man von einem verlangt, kann manchmal etwas knifflig sein.

Fangen wir an, begib dich ins Fenster AI des NPC-Menüs.
Hier hast du dann grundsätzlich zwei Möglichkeiten:

Du kannst einen bereits vorhandenen Tagesablauf nehmen und hinzufügen. Das geht einfacher als neue zu erstellen, macht aber nur bei allgemeinen Tagesabläufen von Bürgern Sinn, spezielle Charaktertagesabläufe sollte man individuell gestalten.

Du kannst einen individuellen Tageablauf erstellen, dazu kommen wir nach Punkt 1

Gut, wie du siehst, hat dein Npc bei AI eine Liste, in der Packages stehen können. Unterb Umständen stehen dort schon welche, dann werden dir Namen und Infos eingeblendet. Unter dem Reiter Charakter ( Nicht im AI-Menü, sondern in der oberen Leiste des CS`) findest du den Menüpunkt Packages. Hier findest du alle vorgefertigten Packages von Oblivion, deiner Mod sowie jeder anderen, mitgeladenen Mod. Jetzt gehts ziemlich einfach, such dir aus der Liste eins heraus und halte darauf die linke Maustaste gedrückt. Nun ziehe das Package in die Liste des NPC`s und es wird in seinen Tagesablauf mit aufgenommen werden. Speichere das ganze, und, wenn das Package funktioniert und sich nicht mit anderen überlagert, müsste der NPC dem Package Folge leisten.

Zu Punkt 2, hier wirds kniffliger.

Du kannst direkt im AI Menü neue Packages designen. Rechtsklicke auf die Liste und drücke auf New, dann bekommst du das entsprechende Menü um ein Package zu kreieren.

Fangen wir mit dem Namen an.Besser gesagt, ID. Gib dort einfach gewünschte ID ein, unter dieser ID wird dann dein Package gespeichert und du kannst es auch mehrmals verwenden. Der Einfachheit halber solltest du alle ID`s mit einem Kürzel versehen, das erkennen lässt, dass sie zu deinem Mod gehören.

Die Zweite Option ist Package Type. Hier kannst du aus einer Liste auswählen, was dein Package im Groben bewirken soll, beispielsweise bewirkt die Art Sleep, dass der Charakter, wie, wo und wann istz damit aber noch nicht geklärt. Such dir eine passende Art aus und wir können weitermachen.

Unter ID findest du jede Menge Kästchen zum ankreuzen. Sie geben Parameter für das Wie des Packages an, die meisten erklären sich von selbst, sofern man Englisch kann, einige weniger verständliche seien hier mal erklärt:

Continue if PC near: Das bedeutet meines Wissens, dass der NPC das Package weiterhin befolgt, auch wenn sich beispielsweise ein Gesprächspartner nähert.

Must Reach Location:
Soweit ich weiß, ein Zwang,Punkt X zu erreichen, ganz gleich, ob der NPC dabei z.B auf Feinde stößt.

Defensive Combat:
Passives Kampfverhalten, meiner Meinunng nach.

Skip Fallout Behavior: Dieser Parameter ist auch mir nicht bekannt, da müsstest du bei weiteren Fragen jemand anderen zu Rate ziehen.

Offers Services:
Obligatorisch, wenn der Npc zb etwas verkaufen soll.

No idle Anims:
Soweit ich weiß, ein Verbot für das Benutzen von bestimmten Animationen.

Such dir die aus, die deinem Package entsprechen und weiter.

Rechts davon befindet sich die Steuerung bezüglich Türen, ob der Npc am Anfang, während des Packages oder am Ende Türen benutzen bzw. öffnen darf.

Unten ist der Stundenplan ( Schedule ). Hier kannst du bestimmen, wann das Package ausgeführt werden soll. Unter dem Nebenreiter Conditions wirds richtig knifflig.

Du wirst das Menü wiedererkennen, wenn du schon mal mit Quests gearbeitet hast. Sofern du bestimmte Parameter für dein Package haben willst, die ein bisschen spezieller sind, musst du das benutzen.

Klick rechts auf die weiße Liste und geh auf New. Wir haben zuerst die Möglichkeit, den Parameter selbst festzulegen, wähl aus dem Rollmenü eins aus, zb GetDisposition, was bedeutet, dass der Charakter erst eine bestimmte Beliebtheit braucht, um das Package ausführen zu können. Doch bei wem? Das macht man mit dem nächsten Reiter fest, der die Bedingung durch einen Parameter besser beschreibt. Wir können in diesem Fall auswählen, bei wem der Char Beliebtheit braucht. Dazu müssen wir einfach auf den Button Parameter klicken, den ersten Parameter auswählen ( bei manchen gibts zwei ) und dann Actor und Cell auswählen. Alternativ können wir mit dem roten Fadenkreuz einen NPC auswählen.

Das Rollmenü Comparison ist wie ein Gleichungszeichen. Für gewöhnlich steht es auf ==, was dem mathematischen =, ist gleich entspricht, weiter gibt es:

!= Ungleich
<= Kleiner als oder gleich
< Kleiner als
>= Größer als oder gleich
> Größer als

Der Wert Value kann sehr unterschiedlich sein. Er kann beispielsweise 0 für Nein, 1 für Ja sein, in unserem Fall gibt der Wert die Disposition an, zb == 70 bedeutet, dass der Char eine Disposition von genau 70, also nicht 69, 71, nein, genau 70 braucht, damit das Package funktioniert.
Das Kästchen or bezeichnet die Eigenschaft and/or. Sofern es zwei oder mehr Conditions gibt, kann man auswählen, ob diese Alternativen oder weitere Bedingungen sind, die erfüllt werden müssen.

Use Global bezeichnet das benutzen einer Globalen Variable. Vielleicht hast du dich schon ein wenig beim scripting umgesehen? Variabeln sind Wörter, die bestimmte Werte einnehmen, ähnlich X in der Mathematik.
Globale Variabeln haben scriptunabhängig einen bestimmten Wert. Beispielsweise ist die Uhrzeit von Oblivion eine Globale Variable. Auch an solchen Dingen kann man die Condition festmachen.

Mach dich mit dem, was ich hier erklärt habe erstmal vertraut, wenn du bereit bist, kommen die Örtlichkeiten.
 
Oha, das ist mal ne ausführliche Erklärung :D
Danke für die Anleitung... habe schon ein paar Quests gemacht, daher wusste ich das mit den Conditions schon.
Ok, ich glaub ich bin bereit für die Fortsetzung :)
 
Gut, jetzt kommen die Locations dran, sprich, wo soll der Charakter die Aktion ausführen. Geh erstma wieder ins AI-Menü unter dein Package.
Bist, du dort, geh auf den Reiter Location unten. Dies bezeichnet die Umgebung, in der die Aktion ausgeführt wird. Zusätzlich kannst du unter Target auch ein Ziel, zb für eine Übungseinheit definieren. Wir kümmern uns aber erstmal um Location.

Hier hast du die Möglichkeit, vier verschiedene Kreise zu markieren. Der erste Kreis, links, bezeichnet eine Cell und eine Referenz, zb ein Marker, ein Gegenstand, eine Tür etc.. Mit dem Button oben (Select Reference in Render Window) bekommst du wieder das praktische Fadenkreuz, mit dem du direkt im Render Window eine Reference auswählen kannst.
Hast du Cell und Ref ausgewählt, wird dein Charakter in dieser Umgebung das tun, was du vorher als Package Type ausgewählt hast, zb dort schlafen.

Rechts bei In Cell kannst du nur eine Cell auswählen. Der Charakter wird hier in der Cell seine Aktion ausführen, womit (zb mit einem bestimmten Bett) ist aber nicht definiert. Somit bleibt dem Npc Freiheiten.

Darunter, bei Any Object, kannst du ein Objekt wählen, mit dem der Charakter agieren soll. Das kann ein bestimmtes Objekt, wie ein spezielles Übungsschwert sein, oder generell eine Gegenstandsgruppe, wie Waffen.

Bei dem Reiter Target kannst du ein Ziel ausmachen. Specific Reference funktioniert dabei in der Auswahl wie Near Reference. Auch Any Object funktioniert so. (Hier sei noch gesagt, dass durch die Kombinierung von Location und Target sowohl ein Ziel definiert ( zb ein Marker ) wie auch ein Gegenstand definiert werden kann. Somit kann man zb jemandem sagen, dass er an einem Markerpunkt ein Schwert zum Trainieren nutzen soll).

Zwei Dinge sind noch wichtig:

Du musst penibel genau auf die Path Grids achten. Wenn das Package nicht funktioniert, kann das daran liegen, dass die Wegpunkte unzureichend gelegt wurden.

Bei bestimmten Tätigkeiten wie dem Nutzen eines Sandsacks zum trainieren reicht ein einfacher XMarker nicht. Du brauchst einen so genannten XMarkerHeading. Diesen kannst du ähnlich wie einen DoorMarker drehen, dabei markiert der Kegel das Gesicht des NPC`s. Zudem kannst du bei dem Marker unter X Target Data (Reference Menü) eingeben, welche Referenz der marker haben soll. In dem Fall, den Sandsack.

Hoffe, ich konnte dir helfen, bei Nachfragen, scheu dich nicht, sie zu stellen.
 
Uff, lang nicht mehr on gewesen ^^
Vielen Dank für die super Erklärung, jetzt dürfte eigentlich keine Frage mehr offen sein. Falls doch, kann ich ja nachfragen.

Danke und Gruß,
Taragor