Seite 1 von 1

Re: Brauche Hilfe für KI

Verfasst: Dienstag 28. Dezember 2004, 17:36
von Xardas
Ich bin neu hier. Deshalb möchte ich zuerst alle mal begrüssen: Hallo zusammen!

Vor kurzem habe ich angefangen eigene Maps zu bauen. Doch es habbert ein bischen an der KI. Ich entwerfe gerade ein RPG. Doch endweder laufen alle Einheiten dumm herum oder wenn ich das Skript Immobile Units aktiviere, greifen die feindlichen Einheiten gar nicht an. Inzwischen weiss ich, dass ihre Kanpfhandlung auf passiv eingestellt ist. Was kann ich tun?

Hier noch der Skript-Code:

<i>;This Ai file has been created by Zanzard Lothar (zanzard@loja.net).
;Based on three ai files. One created by The Rasher and the others by Herodotus and Magnus.
;
;This Ai is supposed to make the Ai's villagers and military units stand still doing nothing.
;If enemy units come near the military units of the AI, the military units will move and attack the enemy
;units and then stand still again if the enemy units leave their sight or are vanquished.
;Villagers of the AI will not fight back.
;Units of the AI will execute orders given to them by triggers most of the time.
;
;Feel free to use this AI in any scenario of AOK, but use it at your own risk.
;The author is not responsible for any problems this AI file causes to any users of it.

(defrule
(true)
=>
(set-strategic-number sn-maximum-food-drop-distance 0)
(set-strategic-number sn-maximum-wood-drop-distance 0)
(set-strategic-number sn-maximum-gold-drop-distance 0)
(set-strategic-number sn-maximum-stone-drop-distance 0)
(set-strategic-number sn-maximum-hunt-drop-distance 0)
(set-strategic-number sn-food-gatherer-percentage 0)
(set-strategic-number sn-gold-gatherer-percentage 0)
(set-strategic-number sn-minimum-civilian-explorers 0)
(set-strategic-number sn-wood-gatherer-percentage 0)
(set-strategic-number sn-cap-civilian-explorers 0)
(set-strategic-number sn-percent-civilian-explorers 0)
(disable-self)
)

(defrule
(true)
=>
(set-strategic-number sn-percent-enemy-sighted-response 100)
(set-strategic-number sn-hits-before-alliance-change 25)
(set-difficulty-parameter ability-to-maintain-distance 100)
(set-difficulty-parameter ability-to-dodge-missiles 100)
(set-strategic-number sn-number-explore-groups 0)
(set-strategic-number sn-percent-attack-soldiers 0)
(set-strategic-number sn-task-ungrouped-soldiers 0)
(set-strategic-number sn-number-attack-groups 0)
(set-strategic-number sn-enemy-sighted-response-distance 10)
(set-strategic-number sn-total-number-explorers 0)
(set-strategic-number sn-relic-return-distance 0)
(disable-self)
) </i>

Re: Brauche Hilfe für KI

Verfasst: Dienstag 28. Dezember 2004, 19:56
von Günter
Durch den Effekt "Einheit patroullieren lassen" kann man diese am besten dazu "zwingen", nicht dumm herumzulaufen. Alle anderen Einheiten agieren derweil normal.

Ansonsten hilft, sich mit dem leidigen Thema KI etwas mehr anzufreunden. ;)

Gruß Günter

Re: Brauche Hilfe für KI

Verfasst: Mittwoch 29. Dezember 2004, 11:44
von Björn_Jernside
also wenn ich immobile units hatte haben feindliche einheiten angegriffen :confused:

Re: Brauche Hilfe für KI

Verfasst: Mittwoch 29. Dezember 2004, 12:50
von Lord_Ben
vielleicht iss das bei einer immobile units?
weil bei mir greifen die auch an... :confused:

Re: Brauche Hilfe für KI

Verfasst: Mittwoch 29. Dezember 2004, 20:59
von Günter
Xardas hat sich vielleicht etwas undeutlich ausgedrückt.
Ich ging davon aus, das er mit "greift nicht an" meint, das der Computerspieler nicht richtig attackiert, also die Stadt nicht angreift.

Bei der Immobile Units greift der Compi nur an, wenn der Feind in Sichtweite ist, oder er sich verteidigen muss.

Re: Brauche Hilfe für KI

Verfasst: Donnerstag 30. Dezember 2004, 14:22
von Ingo
Hi Xardas,

hier ist eine ganz einfache Ai, bei der die Soldaten erst herumstehen und dann auf Trigger-Signal 1 angreifen. Ich habe sie 1999 in "The Quest" benutzt, kannst sie aber auch gerne verwenden. An den Stellen, die für einen Angriff wichtig sind, habe ich noch deutsche Erklärungen eingefügt.

Am besten funktioniert diese Ai für Computerspieler mit Militärgebäuden, viel Ressourcen und ohne Dorfbewohner. Ab hier kannst du den Text kopieren, wenn du willst:

;Belisarius.per
;CP is passive (response-distance 25) but scouts the landscape.
;On Ai signal 1, CP becomes aggressive and attacks every 8 minutes.

(defrule
(true)
=>
(set-strategic-number sn-cap-civilian-explorers 0)
(set-strategic-number sn-food-gatherer-percentage 50)
(set-strategic-number sn-gold-gatherer-percentage 20)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-stone-gatherer-percentage 10)
(set-strategic-number sn-percent-civilian-gatherers 95)
(set-strategic-number sn-percent-civilian-builders 5)
(set-strategic-number sn-percent-civilian-explorers 0)
(set-strategic-number sn-maximum-town-size 200)
(set-strategic-number sn-enemy-sighted-response-distance 25)
(set-strategic-number sn-task-ungrouped-soldiers 0)
(disable-self)
)

(defrule
(true)
=>
(set-strategic-number sn-number-attack-groups 0)
(set-strategic-number sn-number-defend-groups 0)
(set-strategic-number sn-minimum-town-size 20)
(set-strategic-number sn-maximum-town-size 35)
(set-strategic-number sn-task-ungrouped-soldiers 0)
(disable-self)
)

;explore map only if CP has a scout cavalry

(defrule
(unit-type-count-total scout-cavalry-line greater-than 1)
=>
(set-strategic-number sn-number-explore-groups 1)
(set-strategic-number sn-minimum-explore-group-size 1)
(set-strategic-number sn-maximum-explore-group-size 1)
(set-strategic-number sn-blot-exploration-map 1) ;re-explore map
(set-strategic-number sn-blot-size 80)
(disable-self)
)

(defrule
(unit-type-count-total scout-cavalry-line less-than 1)
=>
(set-strategic-number sn-number-explore-groups 0)
(set-strategic-number sn-minimum-explore-group-size 0)
(set-strategic-number sn-maximum-explore-group-size 0)
(set-strategic-number sn-blot-exploration-map 0) ;re-explore map
(set-strategic-number sn-blot-size 80)
(disable-self)
)


(defrule
(true)
=>
(set-strategic-number sn-number-boat-explore-groups 0)
(set-strategic-number sn-minimum-boat-explore-group-size 0)
(set-strategic-number sn-maximum-boat-explore-group-size 0)
(set-strategic-number sn-number-boat-attack-groups 0)
(set-strategic-number sn-minimum-boat-attack-group-size 0)
(set-strategic-number sn-maximum-boat-attack-group-size 0)
(set-strategic-number sn-number-boat-defend-groups 0)
(set-strategic-number sn-minimum-boat-defend-group-size 0)
(set-strategic-number sn-maximum-boat-defend-group-size 0)
)

(defrule
(true)
=>
(set-strategic-number sn-percent-attack-soldiers 70) ; Bei attack-now-Signal mit 70% aller Soldaten angreifen
(disable-self)
)

(defrule
(event-detected 0 1) ; wenn das Trigger-Signal 1 kommt
=>
(enable-timer 1 30) ; dann erst mal Timer setzen, der 30 Sekunden wartet
(disable-self)
)

(defrule
(timer-triggered 1) ; wenn der erste 30 Sekunden-Timer abgelaufen ist
(defend-soldier-count greater-than 12); wenn CP noch 12 Soldaten daheim zur Verteidigung hat
=>
(attack-now) ; dann jetzt angreifen
(disable-timer 1) ; Erster Timer ist jetzt unnötig, deaktivieren
(enable-timer 2 480) ; Zweiter Timer setzen, wartet 480 Sekunden bis zum nächsten Angriff
)

(defrule
(timer-triggered 2) ; wenn der zweite 480-Sekunden-Timer abgelaufen ist
(defend-soldier-count greater-than 12)
=>
(attack-now)
(disable-timer 2)
(enable-timer 2 480)
)

(defrule
(unit-type-count-total skirmisher-line less-than 6) ; wenn Spieler weniger als 6 Plänkler/ Eliteplänkler hat
(can-train skirmisher-line) ; und er Gebäude + Ressourcen zum Ausbilden von Plänklern hat
=>
(train skirmisher-line) ; dann so lange Plänkler/Eliteplänkler trainieren, bis man 6 Stück hat
)

(defrule
(unit-type-count-total militiaman-line less-than 8)
(can-train militiaman-line)
=>
(train militiaman-line)
)

(defrule
(unit-type-count-total scout-cavalry-line less-than 2)
(can-train scout-cavalry-line)
=>
(train scout-cavalry-line)
)

(defrule
(unit-type-count-total archer-line less-than 7)
(can-train archer-line)
=>
(train archer-line)
)

(defrule
(unit-type-count-total spearman-line less-than 6)
(can-train spearman-line)
=>
(train spearman-line)
)

(defrule
(unit-type-count-total knight-line less-than 8)
(can-train knight-line)
=>
(train knight-line)
)

(defrule
(unit-type-count-total battering-ram-line less-than 2)
(can-train battering-ram-line)
=>
(train battering-ram-line)
)

(defrule
(unit-type-count-total scorpion-line less-than 1)
(can-train scorpion-line)
=>
(train scorpion-line)
)

Re: Brauche Hilfe für KI

Verfasst: Donnerstag 30. Dezember 2004, 21:51
von Xardas
Vielen Dank für eure Antworten! Ich war gestern und heute am Ski fahren und hab daher erst jetzt Zeit zum antworten gefunden.

Ich baue gerade eine Map im RPG Style. Ein Spieler heisst Banditen. Diese stehen vereinzelt am Weg herrum und sollen dem Helden das Leben schwer machen. Wenn ich die Standart KI verwende, laufen die nach Spielbeginn nur doof rum. Und der Befehl Einheit patroullieren lassen wäre viel zu aufwendig für alle Einheiten. So habe ich mich mit dem Thema KI befasst. Da bin ich auf das File "Immobile Units" gestossen. Doch nun wenn ich das aktiviere, werden alle Einheiten auf Passiv gestellt, was dazu führt dass sie überhaupt nich mehr angreiffen. Heute Abend habe ich das ein bischen getest und gesehen, wenn ich ein neue Map mit dieser Datei baue, funktioniert alles prächtig.

Hat jemand eine Idee, warum der Computer eigenartiger weise die Einheiten auf passiv stellt? Es ist wirklich ärgerlich, da ich inzwischen einige Stunden in die Map investiert habe. Gibt es eine andere Möglichkeit wie diesen Befehl (passiv stellen) ein- bzw. ausschalten kann?

Bem: Ich habe das mit dem passiv entdeckt, durch den Effekt Besitzwechesel.

Re: Brauche Hilfe für KI

Verfasst: Donnerstag 30. Dezember 2004, 22:10
von Andi_W
Also, 3 Vorschläge hätte ich, allerdings bin ich nicht sicher, ob sie stimmen:

1. Hast du den Effekt "Einheit verharren lassen" für den Spieler "Räuber" irgendwo eingebaut? Wenn ja, prüfe noch einmal genau, ob du ein Gebiet/eine Einheit angewählt hast, oder ob der gesamte CS dadurch lahmgelegt wird. "Einheit verharren lassen" stellt Einheiten nämlich auf passiv.

2. Vielleicht stimmen die Diplomatieeinstellungen nicht, d.h. "Räuber" steht dir gegenüber verbünden und greift deshalb nicht an!

3. Deine Einheit ist ein Dorfbewohner. Erst ab Schwierigkeitsgrad "Mittel" greift ein CS Dorfbewohner an, bei Neutralität überhaupt nicht.

Hoffe, das hilft... ;)

Re: Brauche Hilfe für KI

Verfasst: Freitag 31. Dezember 2004, 09:18
von Xardas
Hey Danke! Es geht jetzt wieder. Ich hatte einen Schalter "Einheit verharren lassen" eingebaut. Als ich diesen gelöscht habe, gings dann wieder. Zwar verstehe ich nicht ganz warum der Schalter alle auf passsiv gestellt hat. Aber es geht wieder und das ist das wichtigste.
Nun bin ich wieder motiviert weiter zu machen. Danke!

Re: Brauche Hilfe für KI

Verfasst: Freitag 31. Dezember 2004, 20:29
von Günter
Na super. Freut mich! :)
Es schadet trotzdem nicht, wenn du beim Thema KI dranbleibst.
Es eröffnet dir sehr viel neue Möglichkeiten beim Scenariobau.