User:The Silent One/Colonisation thoughts
From FreeOrionWiki
Contents
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