Einheiten-Ausbildungs-Präferenzen

Fragen zum Szenarienbau und Mapdesign

Moderatoren: Henning, Björn_Jernside

Was für ein Wort-Monstrum! :rolleyes:
Meine Frage konkret:
Ist es möglich in meinem KI-Skript dem PC zusagen, welche Einheiten er bevorzugt ausbilden soll?

Ich habe diverse Einheiten für den PC zum Ausbilden in der KI (ganze normale Standard "line" Befehle), allerdings beobachte ich, dass er deutlich mehr "Ramsch" ausbildet als seine Spezialeinheiten, obwohl alle Einheiten-Typen die gleiche Bedingung stellen: < 10. Sonst nichts weiter.

Kann man das ohne übertriebenen Aufwand ändern? Das Verhältnis aus Plänklern, Bogis und Schwertis sollte besser im Verhältnis zur Castle Unit stehen.

An mangelnden Ressourcen kann es nicht liegen, da die KI sich alles, was sie braucht ercheatet bzw. zusätzlich noch von GAIA über Tribut-Schleifen mehr als großzügig versorgt wird.
Kommt schon, Jungs! Ihr habt den Thread bestimmt überlesen, wegen des vielen übrigen Gesprächstoffes ... ;)
Irgendwer (Jan?^^) wird doch wohl 'ne gescheite Lösung haben, oder? :(
LOL
Keine 24h Wartezeit, und schon plärrt er! :D
Ich probier mich mal mit diesem Schnuller: ^^
Henning hat geschrieben:dass er deutlich mehr "Ramsch" ausbildet als seine Spezialeinheiten, obwohl alle Einheiten-Typen die gleiche Bedingung stellen: < 10.
Komisch, sonst hätte ich gesagt, daß das eigentlich ein typisches Symptom für Gold-Mangel wäre. *grübel*
Wie hast du denn ausgetestet, daß die KI wirklich auch immer einen gedeckten Gold-Bedarf hat?
Bzw die Cheat-/Schalter-Zyklen in Relation zum Verbrauchszyklus nicht so liegen, daß sie nicht doch streckenweise Goldmangel leidet?
Ich hab sowas immer recht zuverlässig mit KI-Chats ausgetestet, die die KI an mich sendet (z.B. immer wenn <200 Gold = Chat to Player1: "Hab kein Gold mehr!").

Verhältniswerte kann man (bei Bedarf korrigieren!) AFAIK nur bei Dorfis setzen (sn-stone-gatherer-percentage etc).
Wenn die KI aber schon gleiche Produktions-Parameter "grundlos" ignoriert, muß die Ursache ja woanders liegen und beseitigt werden.

Eventuell könnte es auch an der Produktionszeit oder dem Verhältnis der vorhandenen Gebäude liegen, daß die Engine Trash-Units bevorzugt ausgebildet, eben um das Limit schnell vollzubekommen.
-> Das evtl. mal mit mehr Burgen und weniger Schießanlagen/ Kasernen empirisch austesten.

Ohne jetzt das KI-Skript oder die Schalter zu sehen, fällt mir da so ad hoc kein logischer anderer KI-Grund ein - auf Basis der vorhanden Informationen.


ad hoc Versuchsballon A:


Sofern nicht einem der KI-Cracks (Jan) ne simple Erklärung einfällt, die ich grad ned sehe (bin auchn bissl raus aus der Materie momentan), würd ich einfach mal die Produktionsmaxima der zu bevorzugenden Einheiten deutlich höher setzen als die der Trash-Units.
Ggf. kannst du das ja an jeweils ändernde Bedingungen anpassen.
Wenn sich an denen was ändert, wird ein anderes Rule-Paket mit anderen Produktionswerten aktiv etc.

- Also wenn z.B. mehr als 999 Gold vorhanden sind, wird die Rate der Billig-Units drastisch runtergesetzt, die der Spezialunit sehr hoch.

- Liegt der Wert unter 1000, aber höher als ein gewisses Minimum (z.B. 300), wird ein zweites Rulepaket mit etwas gesenkterer Rate der Spezialeinheit aktiv.

- Bei <299 dann falls erwünscht ein "Not-Rulepaket", wo die Rate der Trash-Units fast 100% erreicht.

Alles natürlich mit (nicht allzu langen) Zeit-Triggern.


ad hoc Versuchsballon B:

Ein anderer Weg, einer Verhältnislösung unabhängig von der Goldmenge o.a. nahe zu kommen, wäre der:

- die Produktionsrules der Trash-Units enthalten alle als Bedingung, daß mind. X Einheiten der Spezialeinheit (oder was auch immer) vorhanden sein müssen, eher er aktiv wird

- das könnte man dann zwecks Austarierung auch in mehrere Rules aufteilen.
Z.B. eine Rule, die noftalls ein Minimum an Trash-Units garantiert - oder, falls z.B. alle Burgen zerstört wurden ("castles < 1") ganz auf Trash umstellt, damit die KI nicht gelähmt reagiert.


Hoffe das ist so in etwa das, was du dir als "simple Lösung" vorgestellt hast.
Ansonsten müßt ich halt echt mal das Skript (am besten auch unter gleichen Bedingungen in Aktion) sehen, um mir da ein umfassendes Bild machen zu können.
Ich werde das mit dem Kasernen etc./Burgen-Verhältnis mal probieren. Vielleicht ist das ja schon ausreichend! ;)

Hier mal das Skript:
Verborgener Text:
;CHIBCHA AOK AI FILE
;2010


(defrule
(or
(current-age > dark-age)
(current-age == imperial-age)
)
=>
(set-strategic-number sn-percent-civilian-explorers 0)
(set-strategic-number sn-percent-civilian-builders 5)
(set-strategic-number sn-percent-civilian-gatherers 95)
(set-strategic-number sn-cap-civilian-explorers 0)
(set-strategic-number sn-cap-civilian-gatherers 100)
(set-strategic-number sn-food-gatherer-percentage 75)
(set-strategic-number sn-gold-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 0)
(set-strategic-number sn-wood-gatherer-percentage 0)
(set-strategic-number sn-maximum-gold-drop-distance 20)
(set-strategic-number sn-maximum-stone-drop-distance 20)
(set-strategic-number sn-maximum-food-drop-distance 20)
(disable-self)
)

(defrule
(true)
=>
(set-strategic-number sn-maximum-town-size 15)
(set-strategic-number sn-camp-max-distance 0)
(set-strategic-number sn-mill-max-distance 5)
(set-strategic-number sn-percent-enemy-sighted-response 100)
(set-strategic-number sn-enemy-sighted-response-distance 35)
(set-strategic-number sn-blot-exploration-map 0)
(set-strategic-number sn-number-explore-groups 0)
(disable-self)
)


; ============== ATTACK GROUPS - changing percent attack soldiers will make an AI weak or tough

(defrule
(true)
=>
(set-strategic-number sn-task-ungrouped-soldiers 0)
(set-strategic-number sn-number-explore-groups 0)
(set-strategic-number sn-number-defend-groups 6)
(set-strategic-number sn-sentry-distance 3)
(set-strategic-number sn-defend-overlap-distance 6)
(set-strategic-number sn-percent-enemy-sighted-response 70)
(disable-self)
)



; ================== RESIGNING

(defrule
(players-stance 4 enemy)

=>
(resign)
(disable-self)
)



; ============== GEBÄUDE BAUEN (MAXIMALZAHLEN EINGEBEN)

(defrule
(unit-type-count-total villager less-than 5)
(can-train villager)
=>
(train villager)
(chat-local-to-self "villager")
)

;maintain housing
(defrule
(housing-headroom less-than 4)
(population-headroom greater-than 0)
(can-build house)
=>
(build house)
(chat-local-to-self "house")
)

;maintain a town center
(defrule
(building-type-count town-center less-than 1)
(can-build town-center)
=>
(build town-center)
)

(defrule
(current-age == castle-age)
(building-type-count town-center less-than 1)
(can-build town-center)
=>
(build town-center)
)

(defrule
(building-type-count-total barracks less-than 3)
(can-build barracks)
=>
(build barracks)
(chat-local-to-self "barracks")
)

(defrule
(building-type-count-total archery-range less-than 2)
(can-build archery-range)
=>
(build archery-range)
(chat-local-to-self "range")
)

(defrule
(building-type-count-total blacksmith less-than 1)
(can-build blacksmith)
=>
(build blacksmith)
(chat-local-to-self "blacksmith")
)

(defrule
(building-type-count-total market less-than 1)
(can-build market)
=>
(build market)
(chat-local-to-self "market")
)

(defrule
(building-type-count-total siege-workshop less-than 1)
(can-build siege-workshop)
=>
(build siege-workshop)
(chat-local-to-self "siege workshop")
)

(defrule
(building-type-count-total farm less-than 6)
(can-build farm)
=>
(build farm)
)

(defrule
(food-amount less-than 100)
(building-type-count-total farm less-than 6)
(can-build farm)
=>
(build farm)
)


(defrule
(resource-found gold)
(building-type-count-total mining-camp < 1)
(dropsite-min-distance gold > 7)
(can-build mining-camp)
=>
(build mining-camp)
(chat-local-to-self "gold place")
)


; ============== MILITÄREINHEITEN ERSCHAFFEN


;Milizsoldat

(defrule
(unit-type-count-total militiaman-line < 8)
(can-train militiaman-line)
=>
(train militiaman-line)
(chat-local-to-self "Infanterist")
)

;Bogenschütze
(defrule
(unit-type-count-total archer-line < 10)
(can-train archer-line)
=>
(train archer-line)
(chat-local-to-self "Schütze")
)

;Speerkämpfer
(defrule
(unit-type-count-total spearman-line < 10)
(can-train spearman-line)
=>
(train spearman-line)
(chat-local-to-self "Speerkämpfer")
)

;Skorpion
(defrule
(unit-type-count-total scorpion-line < 3)
(can-train scorpion-line)
=>
(train scorpion-line)
(chat-local-to-self "Schleuder")
)

;Adler-Krieger
(defrule
(unit-type-count-total eagle-warrior-line < 10)
(can-train eagle-warrior-line)
=>
(train eagle-warrior-line)
(chat-local-to-self "Adler")
)

;Federpfeilschütze
(defrule
(unit-type-count my-unique-unit < 14)
(can-train my-unique-unit)
=>
(train my-unique-unit)
(chat-local-to-self "Feder")
)

;Plänkler
(defrule
(unit-type-count-total skirmisher-line < 8)
(can-train skirmisher-line)
=>
(train skirmisher-line)
(chat-local-to-self "Plänkler")
)

;Petarde
(defrule
(unit-type-count petard < 2)
(can-train petard)
=>
(train petard)
)

;Mange
(defrule
(town-under-attack)
(unit-type-count-total mangonel-line < 2)
(can-train mangonel-line)
=>
(train mangonel-line)
(chat-local-to-self "Mange")
)

; ============== ADVANCING IN AGE =============



(defrule
(stance-toward 1 enemy)
(can-research imperial-age)
=>
(research imperial-age)
)

; sets initial goal for escrow to make sure there are villagers

(defrule
(true)
=>
(set-goal 16 50)
(disable-self)
)

(defrule
(unit-type-count villager >= 15)
=>
(set-goal 16 0)
(disable-self)
)

; sets escrow

(defrule
(true)
=>
(set-escrow-percentage wood 40)
(set-escrow-percentage food 40)
(set-escrow-percentage gold 40)
(set-escrow-percentage stone 40)
)

; /////////////////////////////////////////////////////
;UNIT UPGRADES

(defrule
(goal 16 0)
(can-research-with-escrow my-unique-unit-upgrade)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research my-unique-unit-upgrade)
(chat-local-to-self "research elite uniques")
)

(defrule
(goal 16 0)
(unit-type-count militiaman > 4)
(can-research-with-escrow ri-man-at-arms)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-man-at-arms)
(chat-local-to-self "research man-at-arms")
)

(defrule
(goal 16 0)
(unit-type-count man-at-arms > 6)
(can-research-with-escrow ri-long-swordsman)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-long-swordsman)
(chat-local-to-self "research long swordsman ")
)


(defrule
(goal 16 0)
(unit-type-count-total spearman > 2)
(can-research-with-escrow ri-pikeman)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-pikeman)
(chat-local-to-self "research pike")
)

(defrule
(goal 16 0)
(unit-type-count-total scout-cavalry > 2)
(can-research-with-escrow ri-light-cavalry)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-light-cavalry)
(chat-local-to-self "research light-cavalry")
)


(defrule
(goal 16 0)
(unit-type-count-total knight > 2)
(can-research-with-escrow ri-cavalier)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-cavalier)
(chat-local-to-self "research cavalier")
)


(defrule
(goal 16 0)
(unit-type-count archer > 6)
(can-research-with-escrow ri-crossbow)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-crossbow)
(chat-local-to-self "research crossbow")
)


(defrule
(unit-type-count-total skirmisher > 2)
(can-research-with-escrow ri-elite-skirmisher)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-elite-skirmisher)
(chat-local-to-self "research elite skirmisher")
)





(defrule
(goal 16 0)
(unit-type-count mangonel > 3)
(can-research-with-escrow ri-onager)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-onager)
(chat-local-to-self "research onager")
)

(defrule
(goal 16 0)
(unit-type-count onager > 3)
(can-research-with-escrow ri-siege-onager)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-siege-onager)
(chat-local-to-self "research siege onager")
)




(defrule
(goal 16 0)
(can-research-with-escrow ri-forging)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-forging)
(chat-local-to-self "research forging")
)

(defrule
(goal 16 0)
(can-research-with-escrow ri-iron-casting)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-iron-casting)
(chat-local-to-self "research iron-casting")
)

(defrule
(goal 16 0)
(can-research-with-escrow ri-blast-furnace)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-blast-furnace)
(chat-local-to-self "research blast-furnace")
)

;ARCHER UPGRADES -- cost food/gold
(defrule
(goal 16 0)
(can-research-with-escrow ri-fletching)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-fletching)
(chat-local-to-self "research fletching")
)

(defrule
(goal 16 0)
(can-research-with-escrow ri-bodkin-arrow)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-bodkin-arrow)
(chat-local-to-self "research bodkin-arrow")
)

(defrule
(goal 16 0)
(can-research-with-escrow ri-bracer)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-bracer)
(chat-local-to-self "research bracer")
)

(defrule
(goal 16 0)
(or
(unit-type-count-total archer-line > 3)
(or
(unit-type-count-total skirmisher-line > 3)
(unit-type-count-total cavalry-archer-line > 3)
)
)
(can-research-with-escrow ri-leather-archer-armor)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-leather-archer-armor)
(chat-local-to-self "research leather-archer-armor")
)

(defrule
(goal 16 0)
(or
(unit-type-count-total archer-line > 3)
(or
(unit-type-count-total skirmisher-line > 3)
(unit-type-count-total cavalry-archer-line > 3)
)
)
(can-research-with-escrow ri-ring-archer-armor)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-ring-archer-armor)
(chat-local-to-self "research ring-archer-armor")
)

(defrule
(goal 16 0)
(or
(unit-type-count-total militiaman-line > 3)
(unit-type-count-total spearman-line > 3)
)
(can-research-with-escrow ri-scale-mail)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-scale-mail)
(chat-local-to-self "research scale-mail")
)

(defrule
(goal 16 0)
(or
(unit-type-count-total militiaman-line > 3)
(unit-type-count-total spearman-line > 3)
)
(can-research-with-escrow ri-chain-mail)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-chain-mail)
(chat-local-to-self "research chain-mail")
)

(defrule
(goal 16 0)
(or
(unit-type-count-total militiaman-line > 3)
(unit-type-count-total spearman-line > 3)
)
(can-research-with-escrow ri-plate-mail)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-plate-mail)
(chat-local-to-self "research plate-mail")
)


(defrule
(goal 16 0)
(or
(unit-type-count-total militiaman-line > 3)
(unit-type-count-total spearman-line > 3)
)
(can-research-with-escrow ri-tracking)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-tracking)
(chat-local-to-self "research tracking")
)

(defrule
(goal 16 0)
(or
(unit-type-count-total militiaman-line > 3)
(unit-type-count-total spearman-line > 3)
)
(can-research-with-escrow ri-squires)
=>
(release-escrow wood)
(release-escrow food)
(release-escrow gold)
(release-escrow stone)
(research ri-squires)
(chat-local-to-self "research squires")
)

(defrule
(current-age greater-than dark-age)
(can-research ri-forging)
=>
(research ri-forging)
(disable-self)
)

(defrule
(current-age greater-than dark-age)
(can-research ri-scale-mail)
=>
(research ri-scale-mail)
(disable-self)
)

; Castle Age Blacksmith Upgrades

(defrule
(current-age greater-than feudal-age)
(can-research ri-iron-casting)
=>
(research ri-iron-casting)
(disable-self)
)

(defrule
(current-age greater-than feudal-age)
(can-research ri-chain-mail)
=>
(research ri-chain-mail)
(disable-self)
)

; Imperial Age Blacksmith Upgrades

(defrule
(current-age greater-than castle-age)
(can-research ri-blast-furnace)
=>
(research ri-blast-furnace)
(disable-self)
)

(defrule
(current-age greater-than castle-age)
(can-research ri-plate-mail)
=>
(research ri-plate-mail)
(disable-self)
)

(defrule
(current-age > dark-age)
(can-research ri-pikeman)
=>
(research ri-pikeman)
(disable-self)
)

(defrule
(current-age > dark-age)
(can-research ri-halberdier)
=>
(research ri-halberdier)
(disable-self)
)

; CITY-CENTER ADVANCES

(defrule
(current-age greater-than dark-age)
(can-research ri-hand-cart)
=>
(research ri-hand-cart)
(disable-self)
)

(defrule
(current-age greater-than feudal-age)
(can-research ri-wheel-barrow)
=>
(research ri-wheel-barrow)
(disable-self)
)

;Blacksmith Upgrades in archery

(defrule
(current-age > dark-age)
(can-research ri-fletching)
=>
(research ri-fletching)
(disable-self)
)

(defrule
(current-age > dark-age)
(can-research ri-padded-archer-armor)
=>
(research ri-padded-archer-armor)
(disable-self)
)

;Imperial Age Blacksmith Upgrades in archery

(defrule
(current-age > castle-age)
(can-research ri-bracer)
=>
(research ri-bracer)
(disable-self)
)

(defrule
(current-age > castle-age)
(can-research ri-ring-archer-armor)
=>
(research ri-ring-archer-armor)
(disable-self)
)

;Archery Range upgrades
(defrule
(current-age > feudal-age)
(can-research ri-crossbow)
=>
(research ri-crossbow)
(disable-self)
)

; MINING
(defrule
(strategic-number sn-gold-gatherer-percentage > 0)
(can-research ri-gold-mining)
=>
(research ri-gold-mining)
(disable-self)
)

(defrule
(strategic-number sn-gold-gatherer-percentage > 0)
(can-research ri-gold-shaft-mining)
=>
(research ri-gold-shaft-mining)
(disable-self)
)

(defrule
(strategic-number sn-stone-gatherer-percentage > 0)
(can-research ri-stone-mining)
=>
(research ri-stone-mining)
(disable-self)
)

(defrule
(strategic-number sn-stone-gatherer-percentage > 0)
(can-research ri-stone-shaft-mining)
=>
(research ri-stone-shaft-mining)
(disable-self)
)

(defrule
(current-age > dark-age)
(can-research ri-man-at-arms)
=>
(research ri-man-at-arms)
(disable-self)
)

; Cheat

(defrule
(food-amount < 500)
=>
(cc-add-resource food 400)
)

(defrule
(wood-amount < 200)
=>
(cc-add-resource wood 500)
)

(defrule
(gold-amount < 500)
=>
(cc-add-resource gold 1000)
)

;================== Angriff

(defrule ;bei Feindlichkeit beginnt der Kampf
(players-stance 5 enemy)
=>
(attack-now)
)


;================== SCHWIERIGKEITSGRADE

(defrule
(difficulty > moderate)
=>
(set-difficulty-parameter ability-to-maintain-distance 90)
(set-difficulty-parameter ability-to-dodge-missiles 90)
(disable-self)
(set-signal 0)
)

(defrule
(difficulty == moderate)
=>
(set-difficulty-parameter ability-to-maintain-distance 60)
(set-difficulty-parameter ability-to-dodge-missiles 60)
(disable-self)
(set-signal 1)
)

(defrule
(difficulty < moderate)
=>
(set-difficulty-parameter ability-to-maintain-distance 30)
(set-difficulty-parameter ability-to-dodge-missiles 30)
(disable-self)
(set-signal 2)
)

(defrule
(or
(difficulty == moderate)
(difficulty < moderate)
)
=>
(set-difficulty-parameter ability-to-maintain-distance 90)
(set-difficulty-parameter ability-to-dodge-missiles 90)
(disable-self)
(set-signal 3)
)
Henning hat geschrieben:Hier mal das Skript:
Soll das jetzt der Witz des Jahres sein oder wie? :D
Ab sofort will ich NIE WIEDER auch nur ansatzweise anklingen hören, ich würde hier sinnlos die längsten Beiträge posten.

Habe natürlich gemeint, daß du mir die KI und am besten ne ähnliche scx einfach per Mail zuschickst, damit ich die ggf. auch direkt (mit allen Bedingungen) testen könnte. :P
Auch wenn das KI-Skript korrekt sein sollte, kann der/die Fehler immer noch in Wechselwirkungen mit Schaltern oder Map liegen (was ich auch mal stark annehme).

Ich werd mir die KI aber mal anschauen (falls Jan nicht vorher zufällig den Stein der Weisen findet) und sie ggf in einem Trockentest mal auf Herz und Nieren prüfen.
:D Ja, ist wirklich etwas lang ... :rolleyes:
Aber so kann Jan auch gleich einen Blick darauf werfen.

KI funzt ab Ritterzeit und hat ein großes Lager mit vielen Dorfis und vielen Gebäuden (eigentlich allen).
Kultur ist Maya.

Der Angriff der KI funktioniert via Schalter.
Der Teil der KI sieht so aus:

(defrule ;bei Feindlichkeit beginnt der Kampf
(players-stance 5 enemy)
=>
(attack-now)
)

Spieler 5 (Dummy-Spieler, weit außerhalb der Reichweite der KI) wechselt zirka alle 5 Minuten die Diplo auf feindlich. Das ganze für etwa 3 Sekunden. Danach wieder verbündet, der Schalter der nach 5 Min. wieder auf feindlich geht, wird wieder aktiviert und immer so weiter.

Meiner Meinung nach eine rekordverdächtig kluge ;) Möglichkeit diesen ganzen ätzenden Intervall-Kram in den KIs zu umgehen, weil man das per Schalter beliebig innerhalb des Szenarios umgehen kann mit der Dummy-Diplo-Lösung. Alles bequem per Bed. und Eff.
Idiotensicher und 5 Szenarien Garantie oder Skript zurück!
Henning hat geschrieben::D Ja, ist wirklich etwas lang ... :rolleyes:
Aber so kann Jan auch gleich einen Blick darauf werfen.
Macht nix, ICH beschwere mich ja üblicherweise nicht über zu lange Posts (wenn, dann eher das Gegenteil davon^^).
Meiner Meinung nach eine rekordverdächtig kluge Möglichkeit
Jap, sowas mach ich auch total gerne.
In "Arcanea" dirigieren etwa Dummy-Units, die je nach Bedingung den Besitz wechseln, dynamisch das Verhalten der KIs - z.B. den Schwierigkeitsgrad.
Mehr aus Pragmatismus; hab sogar befürchtet daß einem das von iwelchen Mapper-Ästheten womöglich noch als "grobschlächtig" ausgelegt würde. :D
hat ein großes Lager mit vielen Dorfis und vielen Gebäuden (eigentlich allen)
Hmja, die Frage wäre wie gesagt eher: WIEVIELE Gebäude von jeder Sorte hat die KI genau?
Also namentlich: Anzahl der Kasernen, Schießanlagen, Burgen?
Hab zwar noch nie festgestellt, daß die Gebäudeanzahl das Produktionsverhalten der KI beeinflußt. Hab aber auch noch nie absolut gleiche Produktionszahl-rules verwendet, und iwo muß man mit der Fehlersuche ja anfangen.

Einstweilen kannste ja die obigen Ansätze mal ausprobieren.
Wenn das zum Erfolg führen sollte, wär das ja schon mal was wert (und ein Beleg, daß es an ner chronischen Ursache NICHT liegen kann).
In "Arcanea" dirigieren etwa Dummy-Units, die je nach Bedingung den Besitz wechseln, dynamisch das Verhalten der KIs - z.B. den Schwierigkeitsgrad.
Mehr aus Pragmatismus; hab sogar befürchtet daß einem das von iwelchen Mapper-Ästheten womöglich noch als "grobschlächtig" ausgelegt würde.
Nunja ... "Was man nicht weiß, macht einen nicht heiß", nä?
Das einzige, was ich persönlich nicht mag, ist dieses "klicke dies oder jener an, damit das oder das passiert", das empfinde ich immer als etwas "grobschlächtig". Alles was hinter den Kulissen abläuft, soll meinen Ar*** nicht jucken ... ;) Es sei denn natürlich, es funktioniert nicht! :P
Henning hat geschrieben:Nunja ... "Was man nicht weiß, macht einen nicht heiß", nä?
Seh ich genauso, nur meist entgeht das ja nicht immer allen Erbsenzählern. :D
Hauptsache es läuft, der Rest (z.B. wie man nun ganz perfekt und idiotensicher ne belanglose Einheit unsichtbar macht) ist IMO sekundäre Kosmetik.
Ne Map sehe ich wie einen Whisky oder einen alten Wein: der reift mit der Zeit.


zu deinem KI-Problem

Zwei Dinge zur KI, die mir auf Anhieb bzw nach Analyse-Tool aufgefallen sind:

1) die Verwendung von Umlauten (auch nach ";" ) wird als Fehler und damit Unterbrechung der Syntax gewertet (hab selbst immer vorsorglich drauf geachtet, ae, oe oder ue zu verwenden. Daher weiß ich nicht, wie sich das auf die Funktionsfähigkeit der KI auswirkt.

2) Die KI-Analyse stört sich ja generell an den AoC-Begriffen, eben Petarde, Adlerkrieger etc.
Da ich mir nie so sicher war, ob die KI im Spiel die Begriffe dennoch umsetzt, hab ich in so einem Falle sicherheitshalber immer die Unit-ID-Nummer benutzt.

Testergebnis

Was du mir nicht genannt hattest, waren wie gesagt Rahmenbedingungen wie genaue Gebäudezahl und exaktes Poplimit.
Leider scheint die KI wie so manche nicht unter Spieler 1 zu funktionieren, was deine chat-local-Texte überflüssig macht.
Aber der Test als PC-Spieler war dennoch aufschlußreich:
Im "Labortest" (125 Pop, Volk Maya, Startzeit Ritterzeit, 30k Ressis von allem, je 3 Burgen, Kasernen und Schießanlagen plus Infrastruktur & Häuser) hat die KI i.W. das erwünschte Verhalten gezeigt.

Federpfeilschützen wurden jedenfalls genügend gebaut, zzgl. stets einiger Petarden wie erwünscht; der Anteil der Plänkler und Bogis war moderat.
Einzig die Produktion der Adlerkrieger (laut Skript ~10) hinkt deutlich hinterher, was aber daran liegen mag, daß sie in Konkurrenz zu den Milizsoldaten und Speerkämpfern im selben Gebäude gebaut werden, während die meisten anderen Units exklusivere Bauorte haben.
Hier wäre die Frage, wo genau die Engine in so einem Fall die Priorität setzt.
Speerk. & Schwertk. sind billiger als Adler, aber ich gehe eher davon aus daß tatsächlich die Produktionszeit (14 sec mehr beim Adler) da der limitierende Faktor ist, warum die Rules der anderen meist dominieren.

Dem kannst du aber ja mit ähnlichen Konstruktionen wie schon zuvor genannt abhelfen:
Eben erst dann Produktion von Kasernen-Trash u.a., wenn (noch) mind. X Adlerkrieger vorhanden.

Vorläufiges Fazit:

KI weist per se keine ersichtlichen Fehler auf.
Daß sie unter spezifischen Map-Bedingungen nicht rundläuft, müßte also andere Ursachen haben, die sich mir derzeit (ohne Originalmap) nicht erschließen.
Wenn du's ganz genau wissen willst, bau vllt. echt einfach Ressi-Mangel-Rules mit "chat-to-player 1" statt den "chat-local"s ein (es sei denn bei dir funktioniert die KI auf Spieler 1), und teste mal ob sie iwann mosert.
Hmm ... Okay, erstmal herzlichen Dank für deinen Test! :super:

Was die Chat Local Geschichte angeht: Das hat eigentlich keine Bedeutung, ist nur drin, weil ich mir meine KIs nur noch aus KIs zusammenfriemel, die ich schon erstellt habe. Kopier ich halt immer mit rein, auch wenn ich die Chat Geschichten gar nicht mehr zum Testen nutze.
Was die Umlaute angeht, habe ich hier allerdings noch nie Probleme gehabt ... :confused:
Die KI-Analyse stört sich ja generell an den AoC-Begriffen, eben Petarde, Adlerkrieger etc.
Da ich mir nie so sicher war, ob die KI im Spiel die Begriffe dennoch umsetzt, hab ich in so einem Falle sicherheitshalber immer die Unit-ID-Nummer benutzt.
Da habe ich auch noch nie Probleme gehabt... Die Bezeichnungen nach dem ";" dürften aber ungefährlich sein, oder?
Dem kannst du aber ja mit ähnlichen Konstruktionen wie schon zuvor genannt abhelfen:
Eben erst dann Produktion von Kasernen-Trash u.a., wenn (noch) mind. X Adlerkrieger vorhanden.
Das ist 'ne gute Idee, mal sehen, ob die sich als praktikabel erweist.
Notfalls werde ich auch hier mit Schaltern arbeiten, dass zumindest immer eine Spezialeinheit vor den Burgen entsteht (Triggerschleife, + Zeitgeber + Bed., dass Burg nicht zerstört).
Henning hat geschrieben:Was die Chat Local Geschichte angeht: Das hat eigentlich keine Bedeutung, ist nur drin, weil ich mir meine KIs nur noch aus KIs zusammenfriemel, die ich schon erstellt habe.
Ja, das hab ich mir schon gedacht. ^^
Ich bin da meist auch zu faul zu (ein Charakteristikum, das schmeichelhafterweise auch professionelle Programmierer auszeichnet :D )
und nehme ein passendes Skript als Basis.
Die Bezeichnungen nach dem ";" dürften aber ungefährlich sein, oder
Wie gesagt, funktionieren würde die KI wohl auch so.
Nur mein verwendeter Compiler (der "AI.Editor" ) meckert dabei, und stellt die betreffenden Bereiche ab dem Umlaut farbig und fett dar. Das heißt strenggenommen eigentlich, daß diese Bereiche nicht mehr als Kommentar erkannt werden.
Daher hab ich getreu meinem Pragmatismus bei KI-Kommentaren immer auf Umlaute verzichtet. Würd ich dir generell auch empfehlen.
Vllt. weiß Janworks da mehr zu... aber schaden kann das Umschreiben ja ned.
Notfalls werde ich auch hier mit Schaltern arbeiten
Ja, sowas mach ich in so einem Fall meist auch, statt mich da penibel in eine KI-only-Lösung zu verrennen. Auch, wenn eine KI im Stand alone funktioniert, schadet ein ergänzendes Schalterkonstrukt nicht.
Doppelter Boden hält besser. ;)