Ich brauch´ ne KI!

Fragen zum Szenarienbau und Mapdesign

Moderatoren: Henning, Björn_Jernside

Hi all. ich bräuchte ´ne KI und zwar:
Der Spieler soll einfach alles niedermähen, was ihm in die Quere kommt, ohne Ausnahme :D

Weil als ich bei meiner Map ein paar "neue Objekte" hatte, griffen diese die Gegner nicht an, auch wenn 2 Rammen vor dem gegnerischen Tor standen :confused:
Vielleicht hast du für die Objekte den Effekt "Einheit verharren" angewandt?
Dadurch würde nämlich deren Haltung auf "passiv" gestellt und somit erklären, warum sie nicht angreifen.

KIs bekommst du haufenweise bei http://aok.heavengames.com/
Normalerweise ist bei jeder KI eine Beschreibung dabei.
Welche genau jetzt für deine Bedürfnisse passen könnte weiss ich leider auch nicht, da ich meine KIs immer selber schreibe.
Schmöker doch einfach mal ein wenig da rum oder warte, vieleicht kennt ein anderer Forumer ja die richtige für dich.
Ich hab ´se neu erstellt ( mit "neues objekt") und keinerlei Effekt angewandt, die sollten ja nur erscheinen und kämpfen. Naja ich wart lieber, bis jemand einen Vorschalg hat, da meine Englischkenntnisse nicht so... "ausgereift" sind :D
Dann probier den Befehl mal:

<pre>
(defrule
(true)
=>
(set-strategic-number sn-percent-attack-soldiers 100)
(set-strategic-number sn-attack-intelligence 100)
(set-strategic-number sn-defense-distance 100)
(set-strategic-number sn-sentry-distance 100)
(set-strategic-number sn-target-evaluation-siege-weapon 100)
(set-strategic-number sn-target-evaluation-damage-capability 100)
(set-strategic-number sn-number-attack-groups 2)
(attack-now)
(disable-self))
</pre>
:( ....danke Günter, aber mit der KI laufen die neu erstellten einheiten zwar rum :) ........aber angreifen tun die nichts, die rammen sind auch stinkfaul :D
Schalter wären auch nützlich;
Mit Objekt zuweisen! Also Units in die Nähe der Stadt zuweisen und Rammen direkt auf ein Gebäude!
aber greifen die dann die gegner auch an, wenn se in der nähe sind, bzw. in der "stadt"?
ja besonders wenn feinde in der nähe sind gehts rund ;)
:( ....danke Günter, aber mit der KI laufen die neu erstellten einheiten zwar rum :) ........aber angreifen tun die nichts, die rammen sind auch stinkfaul :D
Tja, der Compi muss natürlich auch wissen, wo der "Feind" sich versteckt.
Das mach ich immer so, das ich einen Späher mit dem Schalterbefehl "Objekt zuweisen" zu irgendeinem Gebäude des Feindes schicke. Dann marschieren die Soldaten normalerweise auch da rüber und attackieren ordentlich.
Vielleicht solltest du auch noch die Größenordnungen der Angriffsformationen in der KI mitangeben.

Sieh so aus:
<pre>
(defconst min-Angriffstrupp <i>Wert1</i> )
(defconst max-Angriffstrupp <i>Wert2</i> )

(defrule
(true)
=>
(set-strategic-number sn-percent-attack-soldiers 100)
(set-strategic-number sn-attack-intelligence 100)
(set-strategic-number sn-defense-distance 100)
(set-strategic-number sn-sentry-distance 100)
(set-strategic-number sn-target-evaluation-siege-weapon 100)
(set-strategic-number sn-target-evaluation-damage-capability 100)
(set-strategic-number sn-number-attack-groups 2)
(set-strategic-number sn-minimum-attack-group-size min-Angriffstrupp)
(set-strategic-number sn-maximum-attack-group-size max-Angriffstrupp)
(attack-now)
(disable-self))
</pre>

Bei <i>Wert1</i> und <i>Wert2</i> gibst du an, wieviel Soldaten der Compi als Angriffstrupp bilden soll, wobei Wert 1 kleiner sein muss als Wert2.

Du kannst auch noch einen Angriffstimer mit einbauen. Das sähe dann so aus:

<pre>
(defconst min-Angriffstrupp <i>Wert1</i> )
(defconst max-Angriffstrupp <i>Wert2</i> )
(defconst Angriffs-Intervall 300)

(defrule
(true)
=>
(set-strategic-number sn-percent-attack-soldiers 100)
(set-strategic-number sn-attack-intelligence 100)
(set-strategic-number sn-defense-distance 100)
(set-strategic-number sn-sentry-distance 100)
(set-strategic-number sn-target-evaluation-siege-weapon 100)
(set-strategic-number sn-target-evaluation-damage-capability 100)
(set-strategic-number sn-number-attack-groups 2)
(set-strategic-number sn-minimum-attack-group-size min-Angriffstrupp)
(set-strategic-number sn-maximum-attack-group-size max-Angriffstrupp)
(attack-now)
(enable-timer 1 Angriffs-Intervall)
(disable-self))
</pre>

Bei dir hört es sich aber eher danach an, als ob immer Angegriffen werden soll, da brauchst du keinen Timer.
Probier das alles mal aus, auch Björns Variante geht natürlich, die wird auch des öfteren verwendet. Die ist allerdings berechenbarer, was aber sowohl ein Vorteil als auch ein Nachteil sein kann. Es kommt im Prinzip immer auf das Scenario an, welche Lösung man wählt.
Ich finde die KI-Variante etwas eleganter :D .
Die einheiten erscheinen und sollen angreifen, es ist keine lager für die "mision" da, die gegner kommen und du verteidigst :confused: werd mir aber mal das mit den schaltern reinziehen...daran hätte ich ja auch denken können ;)
um dem gegner zu zeigen wo der gegner ist, kann man auch einen kartenaufdecker platzieren
Dass durch Schalter erschaffene Einheiten nicht von der Ai richtig erkannt werden und sich nicht an größeren Angriffen beteiligen, habe ich auch schon mal erlebt. Einmal habe ich versucht, die Einheiten erst für einen anderen Spieler zu erstellen und dann sofort nach dem Erschaffen den Besitzer zu wechseln; in dem Fall fing es dann an zu klappen.

Ingo
Kartenaufdecker reicht nicht.
Ob Schaltererschaffen oder nicht ist auch egal.
Schau dir mal als Anschauungsbeispiel "Der Nordische Krieg" an.
Die komplette russische Armee wird nur durch Schalter erschaffen.
Aber kämpft wie wild ;) .
*grins* Ich habe auch nicht behauptet, dass das immer passiert - nur dass es passieren kann. Wie gesagt, ich habe auch schon einmal erlebt, dass eine Ai mit Schalter-Einheiten nicht zurecht kommt (ich glaube bei The Quest), und was mir in dem Fall geholfen hat.

Ingo
Oh sorry. Hab deinen Thread leider nicht ganz zu Ende gelesen. Ich vermute das Problem allerdings eher im Besitzwechsel als im Schaltererschaffen :rolleyes: .
Ähm gibt es eigentlich ne kl wo der gegner alle paar Minuten angreift! Tät mich mal interesieren!
so weit ich weis nur indirekt
z.b
wenn rohstoffzahl x
einheiten produzieren
angriffsttrupp min 15

dann greift er regelmäßig an
Danke werds ausprobieren! :)
(defconst min-Angriffstrupp 10) gegner greift mit mindestens 10 units an
EDIT: pro Angriffstrupp!!
(defconst max-Angriffstrupp 30 ) gegner greift höchstens mit 30 units an
EDIT: pro Angriffstrupp!!
(defconst Angriffs-Intervall 300) gegner greift aller 300sec an. VORAUSGESETZT er hat die minestanzahl der units
EDIT: wieviele Angriffstrupps der CS bildet legt man damit fest "(set-strategic-number sn-number-attack-groups <value>)" Gemeint sind damit nur Landeinheiten, keine Schiffe.

(defrule(true)=>
(set-strategic-number sn-percent-attack-soldiers 100)gibt an wieviel prozent der feindlichen units angreifen
(set-strategic-number sn-attack-intelligence 100)is wohl wie schnell der kämpft
EDIT: Damit wird festgelegt, ob der CS das intelligente Angriffssystem nutzt, das heisst, ob er versucht, feindlichen Einheiten auszuweichen und von mehreren Seiten anzugreifen.
(set-strategic-number sn-defense-distance 100)gibt die distanz an wie weit units höchsten entfernt sein können um den gegner anzugreifen!?
EDIT: die sn-defense-distance gibt die Entfernung an, in der angegriffene Gebäude verteidigt werden (ausgenommen das TC)
(set-strategic-number sn-sentry-distance 100)???fluchtdistanz vielleicht?
EDIT: die sn-sentry-distance gibt an, bis zu welcher Enfternung das TC verteidigt wird.
(set-strategic-number sn-target-evaluation-siege-weapon 100)???
EDIT: Damit kann man festlegen, ob der CS Belagerungswaffen nutzt, um Ziele anzugreifen oder nicht.(set-strategic-number sn-target-evaluation-damage-capability 100)???
EDIT: Hat was damit zu tun, wie der CS feindliche Objekte als Angriffsziele abschätzt (hab das aber noch nicht getestet).
(set-strategic-number sn-number-attack-groups 2)zwei angriffsttrupps greifen an
(set-strategic-number sn-minimum-attack-group-size min-Angriffstrupp)fügt zuvor gestellte varible ein
(set-strategic-number sn-maximum-attack-group-size max-Angriffstrupp)ebenfalls


was ich nicht weis ist, wie man den pc dazu bringt automatisch flüchten zu lassen, wenn zb nur noch der held und 5 units des angrifftrupps übrig sind
ebenfalls ist mir unbekannt, wie man einstellt,dass der held auch immmer mitkommt
wenn der Angriffstrupp auseinander gefallen ist zieht sich der CS normalerweise automatisch zurück, um sich wieder zu einer großen Gruppe zu sammeln (hängt wohl von mehreren Faktoren ab wie z.B. Schwierigkeitsgrad).
Damit der Held mitkommt kann man das mal ausprobieren:
"(set-strategic-number sn-group-commander-selection-method <value> )" Beim Wert 0 wählt der CS die Einheit mit den meisten Angriffspunkten, bei 1 die Einheit mit den wenigsten Angriffspunkten, bei 2 die Einheit mit der höchsten Reichweite.
Danke!

Hab aber noch ne Frage, wenn man eine Kl erstellt dann speichere ich sie ab und bekomme immer nur ne PER Datei aber man braucht doch auch ne AI Datei oder?