|
|
Line 1: |
Line 1: |
− | == 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
| |