User:The Silent One/Colonisation thoughts

From FreeOrionWiki
Jump to: navigation, search

Planet evaluation

Criteria

  • could be made flexible and take the need for population, minerals or research into account
  • however, it'd probably more efficient to simply assign every planet a fixed score based on size, hospitality and specials (see below; example: huge, terrible planet ~ medium, adequate planet ~ small, optimal planet)
  • planet should be close to empire/next colonised world


  • size score
 tiny    small    medium    large    huge
 0       2        4         6        8       * k1 (10)
  • hospitality
 terrible   adequate     optimal
 0,5        1            2
  • specials score
 minerals +20
 artifacts +20
 plague -20
  • distance
 SL-Jumps * k2 (5)


Prevent AI to colonize planets too early

The AI should not colonize a planet if only very few systems are explored and more systems can be explored, except if the planet is valuable. Before colonizing, it should explore more systems.

 subtract from planet attractivity:  UNEXPLORED_SYSTEMS (in range) / EXPLORED_SYSTEMS * k3 (20)
  • early game -> explored_systems small -> planets only attractive if no systems unexplored
  • late game -> explored_systems large -> unexplored systems become irrelevant


Suggested planet evaluation formula

 planet_attractivity = size_score * k1 * hospitality + special_scores
                       - distance(SL-jumps) * k2 - unexplored_systems / explored_systems * k3


Concept for a colonisation AI

  • Create a list with idle colony ships
 create a list with all stationary fleets of the AI player
 erase all fleets from the list that have no colony ship   
 if the the list is empty, the colonisation AI is done
  • Search for suitable planets
 (1) create a list with all explored systems
 (2) create a planet list from the system list
 (2a) Remove planets with enemy ship presence (could also be done on system scale)
 (2b) Remove planets that are already colonized 
 (2c) Remove planets that have a colony ship en route
 - get moving fleets of player
 - remove fleets without col ship or with colony ships that do not have a colonize flag
 - remove the remaining colships targets from the planet list
(3) Sort planet list with regard to their value
 every planet is assigned an integer value (its colonisation value)
 values should be calculated from an easily modifiable table
 Fertility, Size, Specials, Distance to homeworld should be taken into account
 sort list by colonisation value
  • Send a colony ship
  Send colony ships from idle list to the top planets on the planet value list
  - Ships could be assigned to nearest planets
  - Ship mission should be set to 'Colonize'
  - On Arrival, a colony must be founded at the begin of the turn if ship mission is colonize