KI (Künstliche Intelligenz): Unterschied zwischen den Versionen

Aus BotE Wiki
Zur Navigation springen Zur Suche springen
(→‎Gebäudebau: KI baut keine Gebäude mit negativer Moral)
(→‎Troops: Suggestion (not done yet): Minor troops (if defined) build automatically up to a special limit (max 20 troops or better get limit from new minor_troops.data) http://forum.birth-of-the-empires.de/viewtopic.php?p=34335#p34335)
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
http://birth-of-the-empires.de/wiki_files/Bilder/Englisch-Symbol.jpg for English just click [http://translate.google.de/translate?hl=de&sl=de&tl=en&u=http%3A%2F%2Fbirth-of-the-empires.de%2Fwiki%2Findex.php%3Ftitle%3DKI_(Künstliche_Intelligenz) here]
+
{| class="prettytable" Width="100%"
 +
| align="right" | click [http://translate.google.de/translate?hl=de&sl=de&tl=en&u=http%3A%2F%2Fbirth-of-the-empires.de%2Fwiki%2Findex.php%3Ftitle%3DKI_(Künstliche_Intelligenz) here] for other languages http://birth-of-the-empires.de/wiki_files/Bilder/Russland-Symbol.gif
 +
|}
  
= Einleitung =
+
= Intro =
  
 +
{|width="100%" bgcolor="#dadada" style="border:2px solid #000000;padding:1em;padding-top:0.5em;"
 +
| bgcolor="#dadada" width="51%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Deutsch-Symbol.jpg Intro
 +
| bgcolor="#dadada" width="46%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Englisch-Symbol.jpg Intro
 +
|-
 +
| bgcolor="#fafafa" valign="top"|
 
Die '''KI (Künstliche Intelligenz)''' steuert die anderen [[Imperien Übersicht|Imperien]] sowie die [[Kleine Völker|kleinen Völker]].
 
Die '''KI (Künstliche Intelligenz)''' steuert die anderen [[Imperien Übersicht|Imperien]] sowie die [[Kleine Völker|kleinen Völker]].
  
  
Bei einer schlechten Ausgangslage kommt die KI bei niedrigen [[Bote.ini|Schwierigkeitsgraden (s. Bote.ini:DIFFICULTY)]] meist erst circa ab Runde 100 gut zurecht, bei höherem Schwierigkeitsgrad bereits eher. Dadurch ist bei niedrigem Schwierigkeitsgrad ein leichterer Spielerfolg möglich.
+
Bei einer schlechten Ausgangslage kommt die KI bei niedrigen [[Bote.ini|Schwierigkeitsgraden]] meist erst circa ab Runde 100 gut zurecht, bei höherem Schwierigkeitsgrad bereits eher. Dadurch ist bei niedrigem Schwierigkeitsgrad ein leichterer Spielerfolg möglich.
  
 +
----
 +
Threads:
 +
*ein Strategieguide vs (cheater-) KI http://forum.birth-of-the-empires.de/viewtopic.php?f=13&t=1539 (search entry t=1539)
  
 +
*(internal) KI-Vorgaben http://forum.birth-of-the-empires.de/viewtopic.php?f=16&t=1076 (search entry t=1076)
 +
| bgcolor="#fafaba" valign="top"|
 +
'''AI''' controls the [[Imperien Übersicht|empires]] without a human player and also the [[Kleine Völker|minor races]].
  
= Gebäudebau =
 
  
 +
At a bad starting position and at low level of [[Bote.ini|difficulty]] AI usually needs until about turn 100 for doing well, at higher difficulty this will become quicker. So with low difficulty it's easier to get winning.
 +
 +
 +
----
 +
Threads:
 +
*ComputerAI http://bote2.square7.ch/forum/viewtopic.php?f=15&t=4957 (search entry en_t=4957)
 +
|}
 +
 +
= Building Queue =
 +
 +
{|width="100%" bgcolor="#dadada" style="border:2px solid #000000;padding:1em;padding-top:0.5em;"
 +
| bgcolor="#dadada" width="51%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Deutsch-Symbol.jpg Bauliste
 +
| bgcolor="#dadada" width="46%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Englisch-Symbol.jpg Building Queue
 +
|-
 +
| bgcolor="#fafafa" valign="top"|
 
*Die KI hat keine festen Baualgorithmen. Sie berechnet immer, was sie gerade braucht und sucht sich dann ein passendes Gebäude. Kriterien sind u.a. Industriekosten, Ressourcenkosten, aber auch vorhandene Vorräte und die aktuelle Moral.
 
*Die KI hat keine festen Baualgorithmen. Sie berechnet immer, was sie gerade braucht und sucht sich dann ein passendes Gebäude. Kriterien sind u.a. Industriekosten, Ressourcenkosten, aber auch vorhandene Vorräte und die aktuelle Moral.
  
Zeile 19: Zeile 46:
  
 
*Die KI baut derzeit keine Gebäude, die eine negative Moral besitzen. Es ist schwierig programmatisch vorauszusehen, ob das irgendwann nicht mal in einer Rebellion enden könnte. Da besteht noch Verbesserungsbedarf für die Bau-KI.
 
*Die KI baut derzeit keine Gebäude, die eine negative Moral besitzen. Es ist schwierig programmatisch vorauszusehen, ob das irgendwann nicht mal in einer Rebellion enden könnte. Da besteht noch Verbesserungsbedarf für die Bau-KI.
 +
| bgcolor="#fafaba" valign="top"|
 +
*AI doesn't have a fixed list what to build. AI always calculates prios of needs and then AI searches for structures to achieve this. Criteria are industry costs, resources prerequisites and availableness, but also storage contents and currently morale value.
 +
*Not any time AI is enable to build a building (e.g. for lack of resources). Then AI tries to build something else.
 +
*AI doesn't build anything which would last e.g. 100 turns: In the mean time population might be famished, morale could break down and so on. So building orders are belanced.
 +
*Currently AI doesn't builds anything with a negative morale value (e.g. Cartare Labor Camp) because it's difficult to anticipate by program code if this would end in a rebellion anytime. AI-Code has to be improved for this.
 +
|}
  
=Ressourcen =
+
=Resources =
  
 
== Deritium ==
 
== Deritium ==
  
 +
{|width="100%" bgcolor="#dadada" style="border:2px solid #000000;padding:1em;padding-top:0.5em;"
 +
| bgcolor="#dadada" width="51%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Deutsch-Symbol.jpg
 +
| bgcolor="#dadada" width="46%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Englisch-Symbol.jpg
 +
|-
 +
| bgcolor="#fafafa" valign="top"|
 
Die KI bekommt in jeder Runde etwas Deritium "geschenkt" und zwar je höher der Schwierigkeitsgrad, desto mehr.
 
Die KI bekommt in jeder Runde etwas Deritium "geschenkt" und zwar je höher der Schwierigkeitsgrad, desto mehr.
  
 
Quelle: Code Build 58548 botf2Doc.cpp: int temp = rand()%((int)(m_fDifficultyLevel * 7.5));
 
Quelle: Code Build 58548 botf2Doc.cpp: int temp = rand()%((int)(m_fDifficultyLevel * 7.5));
 +
| bgcolor="#fafaba" valign="top"|
 +
Each turn AI gets some Deritium (totally free = cheated), and the higher the difficulty level the more it gets.
 +
 +
Source: Code Build 58548 botf2Doc.cpp: int temp = rand()%((int)(m_fDifficultyLevel * 7.5));
 +
|}
 +
 +
 +
 +
= Research =
  
 +
{|width="100%" bgcolor="#dadada" style="border:2px solid #000000;padding:1em;padding-top:0.5em;"
 +
| bgcolor="#dadada" width="51%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Deutsch-Symbol.jpg KI: Forschung
 +
| bgcolor="#dadada" width="46%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Englisch-Symbol.jpg AI: Research
 +
|-
 +
| bgcolor="#fafafa" valign="top"|
 +
Seit Version Alpha6.1 (V0.81) erforscht die KI auch [[Spezialforschung]]en (siehe [[Programm-Code|ResearchAI.cpp]]).
 +
| bgcolor="#fafaba" valign="top"|
 +
Since Version Alpha6.1 (V0.81) AI also does [[Spezialforschung|special research]] (see [[Programm-Code|ResearchAI.cpp]])
 +
|}
  
= Forschung =
+
= Diplomacy =
  
Ab der Version Alpha 6.1 erforscht die KI auch [[Spezialforschung]]en (siehe [[Programm-Code|ResearchAI.cpp]]).
+
{|width="100%" bgcolor="#dadada" style="border:2px solid #000000;padding:1em;padding-top:0.5em;"
 +
| bgcolor="#dadada" width="51%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Deutsch-Symbol.jpg KI: Diplomatie
 +
| bgcolor="#dadada" width="46%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Englisch-Symbol.jpg AI: Diplomacy
 +
|-
 +
| bgcolor="#fafafa" valign="top"|
 +
*'''Kriegserklärung''': Die KI erklärt jemanden den Krieg, wenn dieser militärisch deutlich unterlegen ist oder ihre [[Gesinnung]] zum Gegner niedrig ist. Forum: http://birth-of-the-empires.de/phpBB3/viewtopic.php?p=33278#p33278 (search entry t=2550)
 +
| bgcolor="#fafaba" valign="top"|
 +
*'''Declares War''': AI declares war, when enemy is clearly inferior in military view or their [[Gesinnung|relation]] to the opponent is low.
 +
|}
  
= Geheimdienst =
+
= Intelligence =
  
Die KI verwendet nur Sabotage. Eine Geheimdiensaktion wird gestartet, wenn die Geheimdienstpunkte + Punkte aus Depot größer sind als die gegnerische Innere Sicherheit + deren Inneres Depot. (Quelle+Details: [[Programm-Code|IntelAI.cpp]])
+
{|width="100%" bgcolor="#dadada" style="border:2px solid #000000;padding:1em;padding-top:0.5em;"
 +
| bgcolor="#dadada" width="51%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Deutsch-Symbol.jpg
 +
| bgcolor="#dadada" width="46%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Englisch-Symbol.jpg
 +
|-
 +
| bgcolor="#fafafa" valign="top"|
 +
Die KI verwendet nur Sabotage (also keine Spionage). Eine Geheimdiensaktion wird gestartet, wenn die Geheimdienstpunkte + Punkte aus Depot größer sind als die gegnerische Innere Sicherheit + deren Inneres Depot. (Quelle+Details: [[Programm-Code|IntelAI.cpp]])
  
  
Zeile 49: Zeile 118:
 
'''Antwort SirPustekuchen:'''  
 
'''Antwort SirPustekuchen:'''  
  
Zufall spielt eine Rolle. Als grobe Formel kann man sich aber bei Sabotage merken, Angriff größer Verteidigung + X ist erfolgreich. Anzahl Aktionen = Angriff / (Verteidigung + X). X ist innerhalb bestimmter Parameter zufällig. X hängt auch von der Aggressivität und von der Art (Spionage/Sabotage) ab. Viel mehr will ich jetzt aber nicht verraten.
+
Zufall spielt eine Rolle. Als grobe Formel kann man sich aber bei Sabotage merken: Angriff größer Verteidigung + X ist erfolgreich. Anzahl Aktionen = Angriff / (Verteidigung + X). X ist innerhalb bestimmter Parameter zufällig. X hängt auch von der Aggressivität und von der Art (Spionage/Sabotage) ab. Viel mehr will ich jetzt aber nicht verraten.
 +
| bgcolor="#fafaba" valign="top"|
 +
AI just uses sabotage (no espionage). A intelligence action is started if intel points + points from depot more than enemies inner security + their inner security depot. (Source+Details: [[Programm-Code|IntelAI.cpp]])
 +
 
 +
 
 +
 
 +
 
 +
'''Questions:'''
 +
 
 +
(not relevant)
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
'''Answer by SirPustekuchen:'''
 +
 
 +
Random is relevant. As a rough formula you can remember at sabotage: attack larger defense + X will be successful. Number of actions = attack / (defense + X). X is random within certain parameters. X also depends on the aggressiveness and on the type (espionage / sabotage). I don't want whistle-blowing more.
 +
 
 +
|}
 +
 
 +
= Ships =
 +
 
 +
== AI: terraforming and colonizing ==
 +
 
 +
{|width="100%" bgcolor="#dadada" style="border:2px solid #000000;padding:1em;padding-top:0.5em;"
 +
| bgcolor="#dadada" width="51%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Deutsch-Symbol.jpg
 +
| bgcolor="#dadada" width="46%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Englisch-Symbol.jpg
 +
|-
 +
| bgcolor="#fafafa" valign="top"|
 +
Seit Alpha7 V0.90 terraformt die KI alle Planeten mit weniger als 8 Terraform-Punkten. Nur wenn kein anderer '''kolonisier'''barer Planet in diesem System gefunden wird und kein Planet mit weniger als 8 nötigen '''Terraform'''-Punkten -> nur dann werden Planeten mit mehr als 8 Punkten terrageformt. (Quelle: CShipAI::DoTerraform).
 +
 
 +
Bis Version 0.81 war es noch so, dass die KI immer erst ein System komplett terraformte und erst dann kolonisierte. Das war teilweise schlecht für die KI.
 +
| bgcolor="#fafaba" valign="top"|
 +
From Alpha7 V0.90 on AI terraforms all planets with needed terraform-points less than 8 will get terraformed. Only if no other planet is found which be can '''colonized''' in this system and no planet with less terraform-points than 8 -> than a planet with more than 8 terraform-points will be terraformed. (Source: CShipAI::DoTerraform)
 +
 
 +
Until version 0.81 AI firstly terraformed '''all''' planets before colonizing. This wasn't good for AI.
 +
|}
 +
 
 +
 
 +
== Attacking systems ==
 +
 
 +
{|width="100%" bgcolor="#dadada" style="border:2px solid #000000;padding:1em;padding-top:0.5em;"
 +
| bgcolor="#dadada" width="51%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Deutsch-Symbol.jpg
 +
| bgcolor="#dadada" width="46%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Englisch-Symbol.jpg
 +
|-
 +
| bgcolor="#fafafa" valign="top"|
 +
In der derzeitigen Version 0.90 ist immer noch so, dass die KI ausschließlich Systeme bombardiert (also nicht erobert!). Anschließend kolonisiert die KI dann das leergebombte System.
 +
| bgcolor="#fafaba" valign="top"|
 +
It's still so (V0.90) that AI only bombards systems (no conquering). After eliminating all population AI does a fresh colonization.
 +
|}
 +
 
 +
see also: http://forum.birth-of-the-empires.de/viewtopic.php?p=34199#p34199 (search entry p34199)
 +
 
 +
= Troops =
 +
{|width="100%" bgcolor="#dadada" style="border:2px solid #000000;padding:1em;padding-top:0.5em;"
 +
| bgcolor="#dadada" width="51%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Deutsch-Symbol.jpg
 +
| bgcolor="#dadada" width="46%" - valign="top" align="center"| http://birth-of-the-empires.de/wiki_files/Bilder/Englisch-Symbol.jpg
 +
|-
 +
| bgcolor="#fafafa" valign="top"|
 +
Momentan kann die KI noch nicht mit Truppen umgehen. Deshalb entsorgt die KI ihre Truppen gleich zu Beginn, auch weil einige Truppen ja auch Moralwerte haben, die sich in manchen Situationen hinderlich auswirken könnten.
 +
| bgcolor="#fafaba" valign="top"|
 +
At the moment (Alpha7 V0.90) BotE's AI can not handle troops. So AI scraps troops at the beginning, also because some troops have morale values which could be destructively in some case.
 +
 
 +
Suggestion (not done yet): Minor troops (if defined) build automatically up to a special limit (max 20 troops or better get limit from new minor_troops.data) http://forum.birth-of-the-empires.de/viewtopic.php?p=34335#p34335
 +
|}

Aktuelle Version vom 28. Oktober 2014, 18:30 Uhr

click here for other languages Russland-Symbol.gif

Intro

Deutsch-Symbol.jpg Intro Englisch-Symbol.jpg Intro

Die KI (Künstliche Intelligenz) steuert die anderen Imperien sowie die kleinen Völker.


Bei einer schlechten Ausgangslage kommt die KI bei niedrigen Schwierigkeitsgraden meist erst circa ab Runde 100 gut zurecht, bei höherem Schwierigkeitsgrad bereits eher. Dadurch ist bei niedrigem Schwierigkeitsgrad ein leichterer Spielerfolg möglich.


Threads:

AI controls the empires without a human player and also the minor races.


At a bad starting position and at low level of difficulty AI usually needs until about turn 100 for doing well, at higher difficulty this will become quicker. So with low difficulty it's easier to get winning.



Threads:

Building Queue

Deutsch-Symbol.jpg Bauliste Englisch-Symbol.jpg Building Queue
  • Die KI hat keine festen Baualgorithmen. Sie berechnet immer, was sie gerade braucht und sucht sich dann ein passendes Gebäude. Kriterien sind u.a. Industriekosten, Ressourcenkosten, aber auch vorhandene Vorräte und die aktuelle Moral.
  • Nicht immer kann die KI ein Gebäude auch bauen (z.B. wegen Ressourcenmangel). Dann versucht sie alternativ etwas anderes zu bauen.
  • Die KI baut keine Gebäude, mit denen sie z.B. 100 Runden beschäftigt ist: Währenddessen würde die Bevölkerung evtl. verhungern, die Moral sinken usw. Die gebauten Gebäude sind also ausbalanciert.
  • Die KI baut derzeit keine Gebäude, die eine negative Moral besitzen. Es ist schwierig programmatisch vorauszusehen, ob das irgendwann nicht mal in einer Rebellion enden könnte. Da besteht noch Verbesserungsbedarf für die Bau-KI.
  • AI doesn't have a fixed list what to build. AI always calculates prios of needs and then AI searches for structures to achieve this. Criteria are industry costs, resources prerequisites and availableness, but also storage contents and currently morale value.
  • Not any time AI is enable to build a building (e.g. for lack of resources). Then AI tries to build something else.
  • AI doesn't build anything which would last e.g. 100 turns: In the mean time population might be famished, morale could break down and so on. So building orders are belanced.
  • Currently AI doesn't builds anything with a negative morale value (e.g. Cartare Labor Camp) because it's difficult to anticipate by program code if this would end in a rebellion anytime. AI-Code has to be improved for this.

Resources

Deritium

Deutsch-Symbol.jpg Englisch-Symbol.jpg

Die KI bekommt in jeder Runde etwas Deritium "geschenkt" und zwar je höher der Schwierigkeitsgrad, desto mehr.

Quelle: Code Build 58548 botf2Doc.cpp: int temp = rand()%((int)(m_fDifficultyLevel * 7.5));

Each turn AI gets some Deritium (totally free = cheated), and the higher the difficulty level the more it gets.

Source: Code Build 58548 botf2Doc.cpp: int temp = rand()%((int)(m_fDifficultyLevel * 7.5));


Research

Deutsch-Symbol.jpg KI: Forschung Englisch-Symbol.jpg AI: Research

Seit Version Alpha6.1 (V0.81) erforscht die KI auch Spezialforschungen (siehe ResearchAI.cpp).

Since Version Alpha6.1 (V0.81) AI also does special research (see ResearchAI.cpp)

Diplomacy

Deutsch-Symbol.jpg KI: Diplomatie Englisch-Symbol.jpg AI: Diplomacy
  • Declares War: AI declares war, when enemy is clearly inferior in military view or their relation to the opponent is low.

Intelligence

Deutsch-Symbol.jpg Englisch-Symbol.jpg

Die KI verwendet nur Sabotage (also keine Spionage). Eine Geheimdiensaktion wird gestartet, wenn die Geheimdienstpunkte + Punkte aus Depot größer sind als die gegnerische Innere Sicherheit + deren Inneres Depot. (Quelle+Details: IntelAI.cpp)


Fragen:

Wonach aber richtet sich die Anzahl erfolgreicher Aktionen pro Runde?

Manchmal wird nur 1 Ziel erfolgreich sabotiert, in der nächsten Runde aber 3.

Zufall, oder wird für jedes erneute punktemässige Überwinden der inneren Sicherheit in der selben Runde 1 Aktion durchgeführt?


Antwort SirPustekuchen:

Zufall spielt eine Rolle. Als grobe Formel kann man sich aber bei Sabotage merken: Angriff größer Verteidigung + X ist erfolgreich. Anzahl Aktionen = Angriff / (Verteidigung + X). X ist innerhalb bestimmter Parameter zufällig. X hängt auch von der Aggressivität und von der Art (Spionage/Sabotage) ab. Viel mehr will ich jetzt aber nicht verraten.

AI just uses sabotage (no espionage). A intelligence action is started if intel points + points from depot more than enemies inner security + their inner security depot. (Source+Details: IntelAI.cpp)



Questions:

(not relevant)




Answer by SirPustekuchen:

Random is relevant. As a rough formula you can remember at sabotage: attack larger defense + X will be successful. Number of actions = attack / (defense + X). X is random within certain parameters. X also depends on the aggressiveness and on the type (espionage / sabotage). I don't want whistle-blowing more.

Ships

AI: terraforming and colonizing

Deutsch-Symbol.jpg Englisch-Symbol.jpg

Seit Alpha7 V0.90 terraformt die KI alle Planeten mit weniger als 8 Terraform-Punkten. Nur wenn kein anderer kolonisierbarer Planet in diesem System gefunden wird und kein Planet mit weniger als 8 nötigen Terraform-Punkten -> nur dann werden Planeten mit mehr als 8 Punkten terrageformt. (Quelle: CShipAI::DoTerraform).

Bis Version 0.81 war es noch so, dass die KI immer erst ein System komplett terraformte und erst dann kolonisierte. Das war teilweise schlecht für die KI.

From Alpha7 V0.90 on AI terraforms all planets with needed terraform-points less than 8 will get terraformed. Only if no other planet is found which be can colonized in this system and no planet with less terraform-points than 8 -> than a planet with more than 8 terraform-points will be terraformed. (Source: CShipAI::DoTerraform)

Until version 0.81 AI firstly terraformed all planets before colonizing. This wasn't good for AI.


Attacking systems

Deutsch-Symbol.jpg Englisch-Symbol.jpg

In der derzeitigen Version 0.90 ist immer noch so, dass die KI ausschließlich Systeme bombardiert (also nicht erobert!). Anschließend kolonisiert die KI dann das leergebombte System.

It's still so (V0.90) that AI only bombards systems (no conquering). After eliminating all population AI does a fresh colonization.

see also: http://forum.birth-of-the-empires.de/viewtopic.php?p=34199#p34199 (search entry p34199)

Troops

Deutsch-Symbol.jpg Englisch-Symbol.jpg

Momentan kann die KI noch nicht mit Truppen umgehen. Deshalb entsorgt die KI ihre Truppen gleich zu Beginn, auch weil einige Truppen ja auch Moralwerte haben, die sich in manchen Situationen hinderlich auswirken könnten.

At the moment (Alpha7 V0.90) BotE's AI can not handle troops. So AI scraps troops at the beginning, also because some troops have morale values which could be destructively in some case.

Suggestion (not done yet): Minor troops (if defined) build automatically up to a special limit (max 20 troops or better get limit from new minor_troops.data) http://forum.birth-of-the-empires.de/viewtopic.php?p=34335#p34335