Programmierung von "Intelligenz"

ms92

Mitglied
Hallo,

ich wusste nicht genau, wie ich es nenn sollte, aber programmiert man z.B. Computer Gegner in allen möglichen Spielen. Oder wie programmiert man die Personen, die bei dem Spiel Coffee Shop (http://armorgames.com/play/57/coffee-shop) an dem Laden vorbei laufen und mal kaufen und mal nicht. Wie lässt man die sozusagen nachdenken, ob sie etwas kaufen wollen oder nicht?

lg
ms92
 
allgemein lässt sich sowas auf eine langfristige Entwicklungstechnik aufbauen.
im Grunde hab ich mir mal sagen lassen, lässt man zuerst Aktionen per Zufall laufen und beobachtet den entsprechenden Charakter/Gegner/etc. ...
sobald dieser etwas gaaaaanz Dummes macht, versucht man, diese Dummheit durch gegebene Faktoren auszugrenzen und somit die "Intelligenz" deiner (nennen wir sie einfach mal) Einheit zu steigern.

Von Schritt zu Schritt muss man der Einheit dann auch Werte zuteilen, nach denen sie entscheiden kann. So kannst du zum Beispiel Einheiten, die an einem Laden vorbei gehen sollen einen Wert geben, welcher zum Beispiel den Inhalt der Tasche repräsentiert.
Über diesen Wert kannst du dann die Wahrscheinlichkeit eines Einkaufs regeln lassen. Und so kannst du das immer tiefer eingrenzen, bis wirklich eine scheinbare Intelligenz vorliegt.

Ein anderes Beispiel ist zum Beispiel die Kampsimulation zweier Schwertkämpfer:
Lässt du zwei bewaffnete Kontrahenten gegeneinander antreten, so lasse sie miteinander kommunizieren.
So sagt der Angreifer zum Beispiel: "Ich greife von oben an!"
Gemessen an der Intelligenz des Verteidigers wird dieser dann sagen: "Ich blocke oben ab!" oder einfach "Vielleicht sollte ich unten blocken!"
Ein perfekter Kämpfer wird so jeden Schlag blocken können. Ein dummer Kämpfer steckt dagegen nur Schläge ein.
 
Sicher gibt es auführlichere Artikel zu diesem Thema, aber Spielfigurenverhalten, welches man zumindest auch als (KI) auffassen kann, lässt sich unterschiedlich implementieren:

  • rein zufällig (hmm vermutlich nicht arg intelligent aber manchmal reicht das ja aus)
  • starr algorithmisch anhand von erkannten (äußeren) Umständen, also per platten Fallunterscheidungen
  • starr algorithmisch mit inneren Zuständen
  • Fuzzy-logic (so eine Art dynamasche Aneinanderreihung von Entscheidungen)
  • Neuronale Netzwerke

Fuzzi Logic kann auch prima mit evolutionären Programmiertechniken/algorithmen gekoppelt werden, so dass die KI zumindest in einem gewissen Rahmen durch Trial and Error lernfähig wird.
Neuronale Netzwerke sind auch ein spannendes Thema, wobei diese seltener mit evolutionären Techniken kombiniert werden. Allerdings in dem Spiel Creature z.B. kamen beide Ideen zum Einsatz.
Neuronale Netzwerke sind ein riesiges Feld und es gibt unterschiedlichste Arten, die mit einander nicht kompatibel sein müssen. Z.B. SOMs im Gegensatz zu Multilayer Perceptrons haben einen völlig anderen Ansatz. Neuronale Netzwerke gehören wie Fuzzy Logic zu den lernfähigen Algorithmen (oder müsste man hier eher Techniken sagen?).

In vielen Spielen ist es wohl so, dass die KI-gesteuerten Spielfiguren mittels einer speziellen Skript-Sprache programmiert werden. Ein Spiel, was ich mir vielleicht mal unter die Lupe nehmen werde ist Scriptarians mit der Sprache Scriptarin.
Wenn Du Dir mal die Tutorials zu dieser Sprache anschaust bekommst Du einen ganz guten Eindruck wie so etwas implementiert werden kann.
 
Zuletzt bearbeitet:
Zurück