Prototype/MapSettings

From Official Factorio Wiki
Jump to navigation Jump to search

The prototype docs have moved to a new website with an improved format. This documentation page can now be found here: https://lua-api.factorio.com/latest/prototypes/MapSettings.html

This wiki page is no longer updated and will be removed at some point in the future, so please update your browser bookmarks or other links that sent you here. If you'd like to contribute to the new docs, you can leave your feedback on the forums.


Prototype definitions » Prototype/MapSettings


The default map settings. Only 1 instance of this prototype can exist.


Prototype/MapSettings — map-settings
difficulty_settings::table
enemy_evolution::table
enemy_expansion::table
max_failed_behavior_count::uint32
name::string
path_finder::table
pollution::table
steering::table
type::string
unit_group::table

Mandatory properties

type

Type: string
Must be "map-settings".

name

Type: string
Name of the map-settings. Must be "map-settings" since only one instances of this prototype can be defined.

pollution

Type: table
The pollution settings, the values are for 60 ticks (1 second). Table with the following mandatory members:

  • enabled - bool
  • diffusion_ratio - double - Amount that is diffused to neighboring chunks
  • min_to_diffuse - double - This much pollution units must be on the chunk to start diffusing
  • ageing - double - Constant modifier a percentage of 1; the pollution eaten by a chunks tiles
  • expected_max_per_chunk - double - Anything bigger than this is visualised as this value
  • min_to_show_per_chunk - double - Anything lower than this (but > 0) is visualised as this value
  • min_pollution_to_damage_trees - double
  • pollution_with_max_forest_damage - double
  • pollution_restored_per_tree_damage - double
  • pollution_per_tree_damage - double
  • max_pollution_to_restore_trees - double
  • enemy_attack_pollution_consumption_modifier - double

steering

Type: table
Table with the following mandatory members:

  • default - table
    • radius - double - Not including the radius of the unit
    • separation_factor - double
    • separation_force - double
    • force_unit_fuzzy_goto_behavior - bool
  • moving - table
    • radius - double
    • separation_factor - double
    • separation_force - double
    • force_unit_fuzzy_goto_behavior - bool - Used only for special "to look good" purposes (like in trailer)

enemy_evolution

Type: table
Table with the following mandatory members:

  • enabled - bool
  • time_factor - double - Percentual increase in the evolution factor for every second (60 ticks)
  • destroy_factor - double - Percentual increase in the evolution factor for every destroyed spawner
  • pollution_factor - double - Percentual increase in the evolution factor for 1 pollution unit

enemy_expansion

Type: table
Table with the following mandatory members:

  • enabled - bool
  • max_expansion_distance - uint32 - Distance in chunks from the furthest base around. This prevents expansions from reaching too far into the player's territory.
  • friendly_base_influence_radius - uint32
  • enemy_building_influence_radius - uint32
  • building_coefficient - double
  • other_base_coefficient - double
  • neighbouring_chunk_coefficient - double
  • neighbouring_base_chunk_coefficient - double
  • max_colliding_tiles_coefficient - double - A chunk has to have at most this much percent unbuildable tiles for it to be considered a candidate. This is to avoid chunks full of water to be marked as candidates.
  • settler_group_min_size - uint32 - Size of the group that goes to build new base (the game interpolates between min size and max size based on evolution factor).
  • settler_group_max_size - uint32
  • min_expansion_cooldown - uint32 - Ticks to expand to a single position for a base is used. Cooldown is calculated as follows: cooldown = lerp(max_expansion_cooldown, min_expansion_cooldown, -e^2 + 2 * e) where lerp is the linear interpolation function, and e is the current evolution factor.
  • max_expansion_cooldown - uint32

unit_group

Type: table
Table with the following mandatory members:

  • min_group_gathering_time - uint32 - Pollution triggered group waiting time is a random time between min and max gathering time
  • max_group_gathering_time - uint32
  • max_wait_time_for_late_members - uint32 - After the gathering is finished the group can still wait for late members, but it doesn't accept new ones anymore.
  • max_group_radius - double - Limits for group radius (calculated by number of numbers).
  • min_group_radius - double
  • max_member_speedup_when_behind - double - When a member falls behind the group he can speedup up till this much of his regular speed.
  • max_member_slowdown_when_ahead - double - When a member gets ahead of its group, it will slow down to at most this factor of its speed.
  • max_group_slowdown_factor - double - When members of a group are behind, the entire group will slow down to at most this factor of its max speed.
  • max_group_member_fallback_factor - double - If a member falls behind more than this times the group radius, the group will slow down to max_group_slowdown_factor.
  • member_disown_distance - double - If a member falls behind more than this time the group radius, it will be removed from the group.
  • tick_tolerance_when_member_arrives - uint32
  • max_gathering_unit_groups - uint32 - Maximum number of automatically created unit groups gathering for attack at any time.
  • max_unit_group_size - uint32 - Maximum size of an attack unit group. This only affects automatically-created unit groups; manual groups created through the API are unaffected.

path_finder

Type: table
Table with the following mandatory members:

  • fwd2bwd_ratio - uint32 - The pathfinder performs a step of the backward search every fwd2bwd_ratio'th step. The minimum allowed value is 2, which means symmetric search.
  • goal_pressure_ratio - double - When comparing nodes in open which one to check next, heuristic value is multiplied by this ratio. The higher the number the more is the search directed directly towards the goal.
  • use_path_cache - bool
  • max_steps_worked_per_tick - double - When this is exhausted no more requests are allowed, at the moment the first path to exhaust this will be finished (even if it is hundreds of steps).
  • max_work_done_per_tick - uint32
  • short_cache_size - uint32 - Number of elements in the cache.
  • long_cache_size - uint32
  • short_cache_min_cacheable_distance - double - Minimal distance to goal for path to be searched in short path cache.
  • short_cache_min_algo_steps_to_cache - uint32 - Minimal number of algorithm steps for path to be inserted into the short path cache.
  • long_cache_min_cacheable_distance - double - Minimal distance to goal for path to be searched in long path cache.
  • cache_max_connect_to_cache_steps_multiplier - uint32 - When searching for connection to path cache path, search at most for this number of steps times the initial estimate.
  • cache_accept_path_start_distance_ratio - double - When looking for path from cache make sure it doesn't start too far from requested start in relative distance terms.
  • cache_accept_path_end_distance_ratio - double - When looking for path from cache make sure it doesn't end too far from requested end. This is typically higher than accept value for the start because the end target can be moving.
  • negative_cache_accept_path_start_distance_ratio - double - Same as cache_accept_path_start_distance_ratio, but used for negative cache queries.
  • negative_cache_accept_path_end_distance_ratio - double - Same as cache_accept_path_end_distance_ratio, but used for negative cache queries.
  • cache_path_start_distance_rating_multiplier - double - When assigning rating to the best path this * start distances is considered.
  • cache_path_end_distance_rating_multiplier - double - When assigning rating to the best path this * end distances is considered. This is typically higher than value for the start to achieve better path end quality.
  • stale_enemy_with_same_destination_collision_penalty - double - Somewhere along the path is stuck enemy we need to avoid. This is mainly to handle situations when units have arrived and are attacking the target then units further in the back will use this and run around the target.
  • ignore_moving_enemy_collision_distance - double - If there is a moving unit further than this we don't really care.
  • enemy_with_different_destination_collision_penalty - double - Enemy is not moving/or is too close and has different destination.
  • general_entity_collision_penalty - double - Simplification for now; collision with everything else is this.
  • general_entity_subsequent_collision_penalty - double - Collision penalty for successors of positions that require destroy to reach.
  • extended_collision_penalty - double - Collision penalty for collisions in the extended bounding box but outside the entity's actual bounding box.
  • max_clients_to_accept_any_new_request - uint32 - Up until this amount any client will be served by the path finder (no estimate on the path length).
  • max_clients_to_accept_short_new_request - uint32 - From max_clients_to_accept_any_new_request till this one only those that have a short estimate will be served.
  • direct_distance_to_consider_short_request - uint32 - This is the "threshold" to decide what is short and what is not.
  • short_request_max_steps - uint32 - If a short request takes more than this many steps, it will be rescheduled as a long request.
  • short_request_ratio - double - How many steps will be allocated to short requests each tick, as a ratio of all available steps per tick.
  • min_steps_to_check_path_find_termination - uint32 - Absolute minimum of steps that will be performed for every path find request no matter what.
  • start_to_goal_cost_multiplier_to_terminate_path_find - double - If the current actual cost from start is higher than this times estimate of start to goal then path finding is terminated.
  • overload_levels - table (array) of uint32
  • overload_multipliers - table (array) of double

max_failed_behavior_count

Type: uint32
If a behavior fails this many times, the enemy (or enemy group) is destroyed. This solves biters stuck within their own base.

difficulty_settings

Type: table
Table with the following members: