hab da ma ne frage...
wie programmiert man KI? <.<
hab da ma ne frage...
wie programmiert man KI? <.<
--Banned wegen Spamming, Respektlosigkeit gegenüber Forenauthoritäten, Pseudomodding, außerdem Zweitaccount von Tatze. - Chocwise
Mit Variablen...
![]()
Aber ich tippe mal du willst was anderes wissen, oder? ^^
Also, zuerst solltest du dir überlegen was deine KI alles können soll. Dir reicht es als KI das deine Wachen eine bestimmte Route patroulieren und erst angreifen wenn sie den Helden im Blickfeld haben. Dann rechne die Entfernung der beiden aus und wenn sie eine bestimmte Unterschreitet, dann lass den Gegner reagieren.
Nicht komplex genug? Dann kriegt der Gegner noch ein Hörradius. Lässt sich genau wie das Blickfeld einfach mit Variablen lösen. Auch wieder Entfernung ausrechnen und dann den Gegner entsprechend reagieren lassen.
Wenn der Gegner den Held gehört hat soll er sich verstärkung holen? Dann muss das Event, was die Verstärkung auf die Map schickt dann aktiviert werden, wenn Gegner 1 den Helden hört.
Die beiden Gegner sollen zwecks Sichtfeldvergrößerung nebeneinander laufen. Sorge dafür das sich Gegner 2 nur bewegt wenn er seine durch Variablen bestimmte Person verlassen hat, also wenn sich Gegner 1 bewegt und Gegner 2 immer 1 Felder von Gegner 1 entfernt sein soll, dann kannst du ganz einfach ausrechnen ob und wie weit sich Gegner 2 bewegen muss.
Aber das ganze is irgendwie sinnlos, da man nur eine (kleine) KI skripten kann, wenn man weiß was seine KI eigentlich können soll.
Wenn man das weiß, DANN gehts an die Überlegung wie man das ganze realisiert.
cya
Deathball
Irgendwie einleuchtend ^^
Aber was nun, wenn man ein KS bauen will und eine KI für die Gegner braucht. Was wer einsetzt wenn was passiert. Wenn wer wie viel HP hat. Wenn wie viele Züger vorbei sind. Dann hilft hören und sehen ja gar nix...
Am besten erst mal mit dem Standard-KS üben, um sich eine Reihe an Ideen zurechtzulegen und die nötigen Kniffe mit den Variablen vorzubereiten.Zitat von Knopey
Jetzt wird sicher ein Stöhnen durch die Reihen gehen "Öh, Standard-KS, du Ober-b00n!" - Unterschätzt aber das Standard-KS nicht für so eine Gelegenheit, es ist eine sehr gute Möglichkeit, die Planung von Features zu erleichtern und eure Ideen für die KI zu testen.
--Denn in Ewigkeits Dunkel das Zeitenschlaf hütet
Allein das Schicksal die Pfade legt
Und wenn erst ein Sturm aus Seelen grimm wütet
Kennt nur noch einer von neun seinen Weg
Also mal ganz klar und deutlich:
Es ist de facto nicht wirklich moeglich!
Wenn du schon fragst, wie man das macht, dann laesst das darauf schliessen, dass du noch nicht sehr viel erfahrung mit dem Maker hast, was die ganze sache noch unmoeglicher macht.
Rein theoretisch muss der Computergegner ja in jeder moeglichen Situation die richtige Strategie waehlen, die sich natuerlich auch von Sekunde zu sekunde aendern kann. Dazu musst du schon ueberlegen, ob sich dass alles errechnen laesst. Wenn nicht, dann musst du fuer jede moeglichkeit eine Fork Condition machen und das ist schlichtweg zu viel.
Ergo muesstest du mal versuchen genauer zu beschreiben, wofuer du eine KI machen willst...
--"Unverständlichkeit ist kein Zeichen für tiefgehende Gedanken"
ich glaube einfach um eine gute "KI" zu erstellen braucht man als mensch selber erstmal mal "I".
hoffe das ist einleuchtend-
mfg
His0ka the Magican
Aaah... Vielen Dank His0ka -.-
@ Trial: Ich glaube du redest über Schadensberechnung etc. Aber ich denke, gesucht ist - Beril sagte - eine Kampfstrategie der Gegner.
Womit wir auch schon bei Beril wären: Mit "nicht viel Erfahrung" meinst du hoffentlich nicht mich'
Wie auch immer, du scheinst doch zu wissen was gemeint ist. Wozu eine genauere Erörterung?
Im Endeffekt genau dasselbe wie bei irgendeiner anderen KI...
Zuerst muss man genau wissen was man eigentlich haben will.
Ich möchte das meine Gegner einen Heiler in ihrer Truppe haben? Dann frage ich jedes mal wenn dieser Heiler an der Reihe ist die Höhe der Lebensenergie der Truppenmitglieder ab. Wenn eine oder mehrere HPs unter einem bestimmtem Wert liegen, dann bekommt eine bestimmte Variable einen zufälligen Wert. Wenn dieser Wert in einem bestimmten Bereich liegt, dann wird die Person mit der niedrigsten HP geheilt.
Der Zufallsgenerator dürfte in diesem Fall essentiell sein, da ansonsten der Kampf nicht gewinnbar wird(es sei denn man killt den Heiler) und er wird imho besser, da auch Menschen nicht in jeder Situation die richtige Entscheidung treffen.
Aber weiter gehts: Ich möchte zusätzlich zum Heiler einen Kämpfer, der das Partymitglied angreift, das die geringste HP hat? Dann frage ich ab welches Partymitglied die niedrigste HP hat und sorge dafür das dieses Partymitglied von meinem Kämpfer angegriffen wird. Eventuell sollte man noch einen Zufallsgenerator einbauen, damit der Kämpfer auch mal andere Partymitglieder angreift, aber das ist dann Sache des Entwicklers.
Desweiteren hätte ich gerne einen Elementarmagier in der Gegnertruppe, der das Partymitglied angreift, das den geringsten Schutz gegen das Primärelement des Magiers hat? Ok, dann heißt es zuerst entscheiden, ob der Magier das ganze schon so weiß, oder ob er erst die Partymitglieder analysieren muss. Im ersten Fall ist es einfach, einfach wieder abfragen welches Partymitglied denn jetzt den geringsten Schutz hat. Im zweiten Fall sollte man sich entscheiden ob der Magier alle auf einmal analysiert, oder nur einen. Wenn man alle auf einmal analysiert ist es wieder einfach, das wird er dann nämlich in der ersten Runde machen. Ein einziger Tab/Switch/Schalter reicht dazu. Falls nicht wird er per Zufallsgenerator ein Partymitglied auswählen, dann prüfen ob er es schon analysiert hat(per Tab/Switch/Schalter) und es analysieren. Danach darf er jederzeit auf die Variable mit dem Elemtarschutz des Partymitglieds zugreifen. Wenn er diese Variable kennt, kann er entscheiden ob er ein anderes Partymitglied analysieren soll, oder dieses angreifen.
Diese Analyse der Partymitglieder kann man noch an andere Variablen einfließen lassen. Beispielsweise könnte man eine Variable machen, die jede Runde hochgezählt werden. Wenn sie einen bestimmten Wert erreicht hat, wirds es dem Elemtarmagier quasi zu bunt, und er fängt an mit wirklicher Kampftaktik an die Heldenparty zu gehen, nämlich das er genau die Mitglieder angreift, die für seine Angriffe verwundbar sind.
Normalerweise denkt man sich zuerst Verhaltensweisen für die Gegner aus. Jener Gegner ist strohdumm, und greift einfach zufällig irgendwen an. Diese Gegner greifen bevorzugt im Rudel an und stürzen sich zu zweit auf ein Partymitglied. Ein anderer Gegner greift das Partymitglied an das für ihn am verwundbarsten ist, wieder ein anderer greift das Partymitglied mit dem größten Angriffswert an, usw.
Wie gesagt, zuerst muss man wissen was die Gegner können sollen, dann macht man sich Gedanken um die Umsetzung.
Zur vollständigkeit sei gesagt: Man sollte bei aller KI und Gegnertaktik auch dafür sorgen das die Kämpfe fair und gleichzeitig fordernd sind. Auch wenn das Thema eigentlich bekannt sein sollte verlinke ich nochmal Lachsens Gameplayoptimierungs-Thema:http://forum.worldofplayers.net/foru...ad.php?t=56171
cya
Deathball
Hmm, ich hab mich in der neusten Version meines Skripts nen bischen mit Monster-KI im Standard-KS beschäftigt.
Eingebaut sind zumidnest gezielte Heilungen und Wiederbelebungen und noch diverser anderer Schnickschnack. Natürlich gäbe es, wie von Deathball beschrieben, noch zig andere Möglichkeiten, wie z.B. den gezielten Angriff auf bestimmte Partymitglieder etc., was aber mit dem Standard-KS extrem aufwändig umzusetzen ist, weswegen ich davon abraten würde. Vor allem das gezielte Angreifen gegen besitmmte Elemente besodners empfindlicher Chars ist damit fast unmöglich umzusetzen (wenn man nicht grade nen riesigen Aufwand pro Kampf betreiben möchte). x__X
Mit einem eigenen KS wäre es aber durchaus möglich, warum auch nciht?![]()
Da kommts wieder drauf an, was man unter KI versteht.
Ne KI ist meiner Meinung nach mehr als nur ein Gegner, der seine Truppenmitglieder heilt, wenn sie fast kaputt sind.
Das ist nur eine Fork Condition...
--"Unverständlichkeit ist kein Zeichen für tiefgehende Gedanken"
Naja, das ist zumidnest das was man im Maker bzw. in Ost-RPG´s allgemein am ehesten als KI bezeichnen kann. Ich wüsste nicht was ein Gegner sonst noch alles an (sinnvollen) Verhaltensmustern beherschen sollte. o___O
Abgesehen davon ist doch auch eine "echte" KI afaik nichts weiter als ein riesiger Komplex aus Forks und Abfragen.
Also denke ich, dass es in RPG´s durchaus angemessen ist selbst nur durch Abfragen erstelle Verhaltensmuster als "Gegner-KI" zu bezeichnen. Auch wenn die Bezeichnung "Kampfstrategien der Gegner" vielleicht angebrachter wäre.![]()
exakt!Zitat
Das ist halt ne Kampfstrategie und keine KI.
Ne KI imo ist halt, wenn der Computer menschlich handelt und dass tut er nicht, wenn er einfach auf den Helden zurennt und draufknueppelt (in nem AKS z.B.)
--"Unverständlichkeit ist kein Zeichen für tiefgehende Gedanken"
Naja, das mit dem menschlich handeln lässt sich (fast) genauso bewerkstelligen wie Kampfstrategien für den Gegner...Zitat von Beril
Wie gesagt, auch hier gilt: Erst überlegen was eigentlich sein soll, dann überlegen wie es funktioniert...
Der eigentliche Grund warum ich allerdings poste ist der Satz, das eine KI ist wenn der Computer menschlich handelt...
Das würde ich vielleicht noch ein bisschen ändern, da es ja auch andere Gegner wie Menschen gibt.
eine KI in einem Spiel ist imho dann gegeben, wenn der PC-Gegner für mich nachvollziehbare Verhaltensmuster besitzt.
Dazu gehört imho das menschliche Gegner einander helfen und Angriffe sinnvoll einsetzen, aber eben auch, wie du gesagt hast, das der Gegner nicht einfach auf den Helden zurennt, sondern ihn zuerst sehen/hören/riechen muss.
Eben nachvollziehbare Handlungsmuster, die sich mit irgendwas erklären lassen...
cya
Deathball
Ne KI ist dann ne gute KI wenn der Spieler nicht vorher sehen kann was der Computer als nächstes tut. Scheißegal ob der Computer nur Muster abspielt oder per Zufallsgenerator handelt. Zufall+Muster zu kombinieren ist noch das beste da so jedes Muster immer ein bischen anders aussiehen kann und es immer neue Überraschungen gibt. Man muss sich nur beim coden überlegen, was würde ich in dieser Situation alles tun und wie bring ich das dem Compi bei.
--Aktuelles Projekt
"Uns're Ordnung ist das Chaos!
Verändern heißt zerstör'n!