KI (Künstliche Intelligenz): Unterschied zwischen den Versionen
(englisch verlinkt) |
(→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) |
||
(19 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | + | {| 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 | ||
+ | |} | ||
+ | |||
+ | = 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]]. | ||
+ | |||
+ | |||
+ | 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]]. | ||
+ | |||
+ | |||
+ | 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. | ||
+ | |||
+ | |||
---- | ---- | ||
− | Die '''KI ( | + | 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. | ||
+ | |||
+ | *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. | ||
+ | | 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. | ||
+ | |} | ||
+ | |||
+ | =Resources = | ||
+ | |||
+ | == 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. | ||
+ | |||
+ | 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]]) | ||
+ | |} | ||
+ | |||
+ | = Diplomacy = | ||
+ | |||
+ | {|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. | ||
+ | |} | ||
+ | |||
+ | = Intelligence = | ||
+ | |||
+ | {|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]]) | ||
+ | |||
+ | |||
+ | '''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. | ||
+ | | 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 |
Intro
Intro | Intro |
Die KI (Künstliche Intelligenz) steuert die anderen Imperien sowie die kleinen Völker.
Threads:
|
AI controls the empires without a human player and also the minor races.
Threads:
|
Building Queue
Bauliste | Building Queue |
|
|
Resources
Deritium
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
KI: Forschung | 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
KI: Diplomatie | AI: Diplomacy |
|
|
Intelligence
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)
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?
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)
(not relevant)
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
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
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
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 |