Difference between revisions of "AI"

From Elite Wiki
m (Oolite standard AI's)
(Updating BB links)
 
(34 intermediate revisions by 7 users not shown)
Line 1: Line 1:
All entities in Oolite have an AI, this is a plist file that defines a [[state machine]] that determines their behaviour. This behaviour can be simple for rocks tumbing (DumbAI.plist) to complex for escorting craft (escort.plist).
+
This page was last edited in 2012. Oolite v.1.80 (2014) introduced new AI's which probably replaced what is here. See the '''notice''' on [[OXP howto AI]].
  
== Oolite standard AI's ==
+
 
 +
All entities in Oolite have an AI, this is a plist file that defines a [[state machine]] that determines their behaviour. This behaviour can be simple for rocks tumbling (DumbAI.plist) to complex for escorting craft (escort.plist).
 +
 
 +
== Oolite standard AIs ==
 
* [[buoyAI]]   
 
* [[buoyAI]]   
//Sends warning messages when attacked, summons police.
+
::Sends warning messages when attacked, summons police.
* collectLootAI   
+
* [[collectLootAI]]    
//intercepts and scoops loot.
+
::collects loot, jobAI.
* dockingAI   
+
::(Requires: scanForRandomLoot>TARGET_FOUND:setTargetToFoundTarget,setAITo:collectLootAI.plist)
//scripts the docking maneuvres.
+
* [[dockingAI]]    
* dumbAI   
+
::scripts the docking manoeuvres.
//just tumbles randomly
+
* [[dumbAI]]    
* enteringPirateAI   
+
::just tumbles randomly
//pirate behaviour, navigation towards planet.
+
* [[enteringPirateAI]]    
* enteringTraderAI   
+
::pirate, checks cargo switches to either [[pirateAI]] or [[enteringTraderAI]].
//trader behaviour, navigation towards planet.
+
* [[enteringTraderAI]]    
* escortAI   
+
::trader role behaviour, choosing route.
//escort behaviour.
+
* [[escortAI]]    
* exitingTraderAI   
+
::escort behaviour.
//Trader behaviour, navigation towards witchpoint.
+
* [[exitingTraderAI]]    
* fallingShuttleAI   
+
::Trader behaviour, navigation towards witchpoint.
//Shuttle station -> planet.
+
* [[fallingShuttleAI]]    
* hardMissileAI   
+
::Shuttle station -> planet.
//Identical to missileAI, minus detonation upon ECM.
+
* [[fttAI]]
* homeAI   
+
::Introduced v1.65, NPC racing pilot AI.
//Landing on planet.
+
* [[hardMissileAI]]    
* interceptAI   
+
::Identical to missileAI, minus detonation upon ECM.
//General interception and combat.
+
* [[homeAI]]    
* minerAI   
+
::Landing on planet.
//Looks for rocks, mines them.
+
* [[interceptAI]]    
* missileAI   
+
::General interception and combat.
//Intercept and detonation.
+
* [[minerAI]]    
* nullAI   
+
::Looks for rocks, mines them.
//Only uses performIdle-method, preferred AI for [[subentities|sub entity]].
+
* [[missileAI]]    
* pirateAI   
+
::Intercept and detonation.
//Pirate behaviour.
+
* [[nullAI]]    
* planetPatrollAI    
+
::Only uses performIdle-method, preferred AI for [[Shipdata.plist#subentities|subentities]].
//Police patroll navigation around planet waypoints.
+
* [[pirateAI]]    
* policeInterceptAI   
+
::Pirate behaviour.
//Interception, attack, comms and legal bussines.
+
* [[planetPatrolAI]]    
* risingShuttleAI   
+
::Police patrol navigation around planet waypoints.
//Shuttle: planet -> station.
+
* [[policeInterceptAI]]    
* rockHermitAI   
+
::Interception, attack, comms and legal business.
//Behaviour of rockhermit.
+
* [[risingShuttleAI]]    
* route1PatrollAI    
+
::Shuttle: planet -> station.
//Police patroll navigation route 1.
+
* [[rockHermitAI]]    
* route1TraderAI    
+
::Behaviour of rock hermit.
//Trader navigation route 1.
+
* [[route1patrolAI]]    
* route2PatrollAI    
+
::Police patroll navigation route 1.
//Police patroll navigation route 2 (sun).
+
* [[route1traderAI]]    
* route2SunskimAI    
+
::Trader navigation route 1.
//General navigation route2.
+
* [[route2patrolAI]]    
* scavengerAI   
+
::Police patrol navigation route 2 (sun).
//Scavenger behaviour, looks for loot.
+
* [[route2sunskimAI]]    
* shuttleAI   
+
::General navigation route 2.
//Shuttle behaviour.
+
* [[scavengerAI]]    
* stationAI   
+
::Scavenger behaviour, looks for loot.
//Station behaviour.
+
* [[shuttleAI]]    
* sunskimExitAI   
+
::Shuttle behaviour.
//General navigation sun -> witchpoint.
+
* [[stationAI]]    
* thargletAI   
+
::Station behaviour.
//Checks for presence of motherThargoid, requests target from mother, or tumbles.
+
* [[sunskimExitAI]]    
* thargoidAI   
+
::General navigation sun -> witchpoint.
//Kills all humans.
+
* [[thargletAI]]    
* timebombAI   
+
::Checks for presence of mother Thargoid, requests target from mother, or tumbles.
//Pauses 5 second, sets range, then detonates with cascade effect.
+
* [[thargoidAI]]    
 +
::Kills all humans.
 +
* [[timebombAI]]    
 +
::Pauses 5 second, sets range, then detonates with cascade effect.
 +
 
 +
{{Stub}} - see discussion tab above (from 2006)
 +
 
 +
== AI back in 2008 ==
 +
 
 +
...Anyway...I wonder if something's wrong, because the pirates typically are so peaceful. It's very rare that a whole group of them shoots at me. It's far more common that a single ship attempts this, while the others (even if they switch to red on the HUD) just fly around without firing.
 +
:Furthermore, there's a bug in the AI, I'd say. If I pursue an enemy ship, that typically does a LOT of direction changes in order to get out of the lasers sights. However, if I am fast enough or hit the injectors just a little bit in order to get closer, then the fleeing ship stops its escape attempts and flies on a straight line, waiting to be shot down. Only if the distance grows again, the pursued ship will re-attempt to get out of my sights.
 +
:Another thing where the AI is very vulnerable: It's very easy to lure a pirate into hitting the injectors. One way is to very briefly hit my own injectors and wait, the other is a very brief burst with the military laser without causing the ship to permanently flee (fer de lance are prone to flee). Examples:
 +
:1) When the screen flashes with multiple yellow lights...I don't check whether they are pirates or not by targeting them, but briefly hit the injectors. True pirates will then use up ALL their fuel to fly around my ship. When they stop, they very soon deliver their cargo to me ;)
 +
:2) As I installed the game shortly ago, I had the constrictor mission today. I wonder why such a whimp counts like about 250 kills...I had common Asps give me a better fight. I hit the constrictor very briefly with the laser, and then the constrictor used up all fuel in the injectors in order to make rapid approaches towards me (without firing), then turn and come back for another approach. It did not fire. So when the fuel was used up, I just pursued it with my Boa Cruiser and shot it down. It didn't even try to evasives.
 +
:So...why better fighting help for the players when the computer enemy has so much trouble? ;)
 +
:Concerning the game: WOW! Very big THANK YOU to all those involved. This game does feel much much better than the original, which did cost me so much time of my youth, back then.
 +
:[https://bb.oolite.space/viewtopic.php?p=63365#p63365 Screet] who likes to ram enemy ships to death with his cruiser
 +
 
 +
[[File:AI (Graphviz).png|thumb|right|600px|[https://bb.oolite.space/viewtopic.php?f=2&t=21443 Graphviz representation] of an AI.plist (route1traderAI.plist)]]
 +
== Understanding what is happening ==
 +
There are a number of ways of accessing the AI decision-making process:
 +
*Outputting in [[Latest.log]] - see [https://bb.oolite.space/viewtopic.php?p=291162#p291162 here] for how to enable this (several posts - 2023)
 +
*Graphical Output (not for javascript AIs) - see [https://bb.oolite.space/viewtopic.php?f=2&t=21443 here] for more detail (2023)
  
 
== Related Links ==
 
== Related Links ==
  [[OXP_howto]]
+
  [[OXP howto]]
  [[OXP_howto_AI]]
+
  [[OXP howto AI]] (.plist AI's)
  [[Methods]]
+
  [[Methods]]  
[[Category:Oolite]]
+
[[AI_methods]] (.plist AI's)
 +
[[Oolite Javascript Reference: PriorityAI Documentation]]
 +
[[Oolite PriorityAI Tutorial]] (Javascript AI's)
 +
[[Role]]
 +
 
 +
*[https://bb.oolite.space/viewtopic.php?f=6&t=18041 Fixing the agro of the AI] (2016)
 +
 
 +
[[Category:Oolite scripting]]

Latest revision as of 02:11, 29 February 2024

This page was last edited in 2012. Oolite v.1.80 (2014) introduced new AI's which probably replaced what is here. See the notice on OXP howto AI.


All entities in Oolite have an AI, this is a plist file that defines a state machine that determines their behaviour. This behaviour can be simple for rocks tumbling (DumbAI.plist) to complex for escorting craft (escort.plist).

Oolite standard AIs

Sends warning messages when attacked, summons police.
collects loot, jobAI.
(Requires: scanForRandomLoot>TARGET_FOUND:setTargetToFoundTarget,setAITo:collectLootAI.plist)
scripts the docking manoeuvres.
just tumbles randomly
pirate, checks cargo switches to either pirateAI or enteringTraderAI.
trader role behaviour, choosing route.
escort behaviour.
Trader behaviour, navigation towards witchpoint.
Shuttle station -> planet.
Introduced v1.65, NPC racing pilot AI.
Identical to missileAI, minus detonation upon ECM.
Landing on planet.
General interception and combat.
Looks for rocks, mines them.
Intercept and detonation.
Only uses performIdle-method, preferred AI for subentities.
Pirate behaviour.
Police patrol navigation around planet waypoints.
Interception, attack, comms and legal business.
Shuttle: planet -> station.
Behaviour of rock hermit.
Police patroll navigation route 1.
Trader navigation route 1.
Police patrol navigation route 2 (sun).
General navigation route 2.
Scavenger behaviour, looks for loot.
Shuttle behaviour.
Station behaviour.
General navigation sun -> witchpoint.
Checks for presence of mother Thargoid, requests target from mother, or tumbles.
Kills all humans.
Pauses 5 second, sets range, then detonates with cascade effect.


This article is a stub. You can help EliteWiki by expanding it. - see discussion tab above (from 2006)

AI back in 2008

...Anyway...I wonder if something's wrong, because the pirates typically are so peaceful. It's very rare that a whole group of them shoots at me. It's far more common that a single ship attempts this, while the others (even if they switch to red on the HUD) just fly around without firing.

Furthermore, there's a bug in the AI, I'd say. If I pursue an enemy ship, that typically does a LOT of direction changes in order to get out of the lasers sights. However, if I am fast enough or hit the injectors just a little bit in order to get closer, then the fleeing ship stops its escape attempts and flies on a straight line, waiting to be shot down. Only if the distance grows again, the pursued ship will re-attempt to get out of my sights.
Another thing where the AI is very vulnerable: It's very easy to lure a pirate into hitting the injectors. One way is to very briefly hit my own injectors and wait, the other is a very brief burst with the military laser without causing the ship to permanently flee (fer de lance are prone to flee). Examples:
1) When the screen flashes with multiple yellow lights...I don't check whether they are pirates or not by targeting them, but briefly hit the injectors. True pirates will then use up ALL their fuel to fly around my ship. When they stop, they very soon deliver their cargo to me ;)
2) As I installed the game shortly ago, I had the constrictor mission today. I wonder why such a whimp counts like about 250 kills...I had common Asps give me a better fight. I hit the constrictor very briefly with the laser, and then the constrictor used up all fuel in the injectors in order to make rapid approaches towards me (without firing), then turn and come back for another approach. It did not fire. So when the fuel was used up, I just pursued it with my Boa Cruiser and shot it down. It didn't even try to evasives.
So...why better fighting help for the players when the computer enemy has so much trouble? ;)
Concerning the game: WOW! Very big THANK YOU to all those involved. This game does feel much much better than the original, which did cost me so much time of my youth, back then.
Screet who likes to ram enemy ships to death with his cruiser
Graphviz representation of an AI.plist (route1traderAI.plist)

Understanding what is happening

There are a number of ways of accessing the AI decision-making process:

  • Outputting in Latest.log - see here for how to enable this (several posts - 2023)
  • Graphical Output (not for javascript AIs) - see here for more detail (2023)

Related Links

OXP howto
OXP howto AI (.plist AI's)
Methods 
AI_methods (.plist AI's)
Oolite Javascript Reference: PriorityAI Documentation
Oolite PriorityAI Tutorial (Javascript AI's)
Role