Difference between revisions of "AI"

From Elite Wiki
m (OXP AI's)
(Updating BB links)
 
(19 intermediate revisions by 6 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]]   
//collects loot, jobAI.
+
::collects loot, jobAI.
 
+
::(Requires: scanForRandomLoot>TARGET_FOUND:setTargetToFoundTarget,setAITo:collectLootAI.plist)
//(Requires: scanForRandomLoot>TARGET_FOUND:setTargetToFoundTarget,setAITo:collectLootAI.plist)
 
 
* [[dockingAI]]   
 
* [[dockingAI]]   
//scripts the docking maneuvres.
+
::scripts the docking manoeuvres.
 
* [[dumbAI]]   
 
* [[dumbAI]]   
//just tumbles randomly
+
::just tumbles randomly
 
* [[enteringPirateAI]]   
 
* [[enteringPirateAI]]   
//pirate, checks cargo switches to either [[pirateAI]] or [[enteringTraderAI]].
+
::pirate, checks cargo switches to either [[pirateAI]] or [[enteringTraderAI]].
 
* [[enteringTraderAI]]   
 
* [[enteringTraderAI]]   
//trader role behaviour, choosing route.
+
::trader role behaviour, choosing route.
 
* [[escortAI]]   
 
* [[escortAI]]   
//escort behaviour.
+
::escort behaviour.
 
* [[exitingTraderAI]]   
 
* [[exitingTraderAI]]   
//Trader behaviour, navigation towards witchpoint.
+
::Trader behaviour, navigation towards witchpoint.
 
* [[fallingShuttleAI]]   
 
* [[fallingShuttleAI]]   
//Shuttle station -> planet.
+
::Shuttle station -> planet.
 
* [[fttAI]]
 
* [[fttAI]]
//Introduced v2.65, NPC racing pilot AI.
+
::Introduced v1.65, NPC racing pilot AI.
 
* [[hardMissileAI]]   
 
* [[hardMissileAI]]   
//Identical to missileAI, minus detonation upon ECM.
+
::Identical to missileAI, minus detonation upon ECM.
 
* [[homeAI]]   
 
* [[homeAI]]   
//Landing on planet.
+
::Landing on planet.
 
* [[interceptAI]]   
 
* [[interceptAI]]   
//General interception and combat.
+
::General interception and combat.
 
* [[minerAI]]   
 
* [[minerAI]]   
//Looks for rocks, mines them.
+
::Looks for rocks, mines them.
 
* [[missileAI]]   
 
* [[missileAI]]   
//Intercept and detonation.
+
::Intercept and detonation.
 
* [[nullAI]]   
 
* [[nullAI]]   
//Only uses performIdle-method, preferred AI for [[sub entity|subentities]].
+
::Only uses performIdle-method, preferred AI for [[Shipdata.plist#subentities|subentities]].
 
* [[pirateAI]]   
 
* [[pirateAI]]   
//Pirate behaviour.
+
::Pirate behaviour.
 
* [[planetPatrolAI]]   
 
* [[planetPatrolAI]]   
//Police patrol navigation around planet waypoints.
+
::Police patrol navigation around planet waypoints.
 
* [[policeInterceptAI]]   
 
* [[policeInterceptAI]]   
//Interception, attack, comms and legal bussines.
+
::Interception, attack, comms and legal business.
 
* [[risingShuttleAI]]   
 
* [[risingShuttleAI]]   
//Shuttle: planet -> station.
+
::Shuttle: planet -> station.
 
* [[rockHermitAI]]   
 
* [[rockHermitAI]]   
//Behaviour of rockhermit.
+
::Behaviour of rock hermit.
 
* [[route1patrolAI]]   
 
* [[route1patrolAI]]   
//Police patroll navigation route 1.
+
::Police patroll navigation route 1.
 
* [[route1traderAI]]   
 
* [[route1traderAI]]   
//Trader navigation route 1.
+
::Trader navigation route 1.
 
* [[route2patrolAI]]   
 
* [[route2patrolAI]]   
//Police patrol navigation route 2 (sun).
+
::Police patrol navigation route 2 (sun).
 
* [[route2sunskimAI]]   
 
* [[route2sunskimAI]]   
//General navigation route2.
+
::General navigation route 2.
 
* [[scavengerAI]]   
 
* [[scavengerAI]]   
//Scavenger behaviour, looks for loot.
+
::Scavenger behaviour, looks for loot.
 
* [[shuttleAI]]   
 
* [[shuttleAI]]   
//Shuttle behaviour.
+
::Shuttle behaviour.
 
* [[stationAI]]   
 
* [[stationAI]]   
//Station behaviour.
+
::Station behaviour.
 
* [[sunskimExitAI]]   
 
* [[sunskimExitAI]]   
//General navigation sun -> witchpoint.
+
::General navigation sun -> witchpoint.
 
* [[thargletAI]]   
 
* [[thargletAI]]   
//Checks for presence of motherThargoid, requests target from mother, or tumbles.
+
::Checks for presence of mother Thargoid, requests target from mother, or tumbles.
 
* [[thargoidAI]]   
 
* [[thargoidAI]]   
//Kills all humans.
+
::Kills all humans.
 
* [[timebombAI]]   
 
* [[timebombAI]]   
//Pauses 5 second, sets range, then detonates with cascade effect.
+
::Pauses 5 second, sets range, then detonates with cascade effect.
  
== OXP AI's ==
+
{{Stub}} - see discussion tab above (from 2006)
* [[Hermit_AI]]
+
 
//AI to govern hermitages.
+
== AI back in 2008 ==
* [[PirateCoves_AI]]
+
 
//Does bad hermity things.
+
...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.
* [[Behemoth_AI]]
+
: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.
//Several military AI's.
+
: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:
* [[Gaundlet_AI]]
+
: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 ;)
//Agressive trader and turret.
+
: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.
* [[Rickshaw_AI]]
+
:So...why better fighting help for the players when the computer enemy has so much trouble? ;)
//Offers rides to anyone, annoying pests!
+
: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.
* [[RacingRing_AI]]
+
:[https://bb.oolite.space/viewtopic.php?p=63365#p63365 Screet] who likes to ram enemy ships to death with his cruiser
//Notes ships passing through, messages mission(race)script and defines [[Advanced_Space_Compass|ASC-signal]].
+
 
:
+
[[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)]]
etc..
+
== Understanding what is happening ==
{{Stub}}
+
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]]  
  [[AI_methods]]
+
  [[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]]
+
[[Category:Oolite scripting]]

Latest revision as of 01: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