# # IMPORTANT NOTE # # This chart inherits from our common library chart. You can check the default values/options here: # https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml # image: # -- image repository repository: factoriotools/factorio # -- image tag # @default -- chart.appVersion tag: 2.0.43 # -- image pull policy pullPolicy: IfNotPresent initContainers: # -- Configures an initContainer that copies the configmap to the factorio conf directory # @default -- See values.yaml copy-configmap: image: busybox imagePullPolicy: IfNotPresent command: - "sh" - "-c" - | mkdir -p /factorio/config cp -vL /helmconfig/* /factorio/config/ volumeMounts: - name: factorio-config mountPath: /helmconfig/ - name: config mountPath: /factorio/ securityContext: runAsUser: 0 # -- environment variables. See more environment variables in the [factorio documentation](https://factorio.org/docs). # @default -- See below env: # -- Set the container timezone TZ: UTC # -- Generate a new save if one does not exist before starting the server GENERATE_NEW_SAVE: "{{ .Values.config.factorioServer.generate_new_save }}" # -- Load latest when true. Otherwise load SAVE_NAME LOAD_LATEST_SAVE: "{{ .Values.config.factorioServer.load_latest_save }}" # -- UDP port the server listens on PORT: "{{ .Values.service.main.ports.server.port }}" # -- TCP port the rcon server listens on RCON_PORT: "{{ .Values.service.main.ports.rcon.port }}" # -- Name to use for the save file SAVE_NAME: "{{ .Values.config.factorioServer.save_name }}" # -- factorio.com token TOKEN: "{{ .Values.config.factorioServer.token }}" # -- If mods should be updated befoqre starting the server UPDATE_MODS_ON_START: "{{ .Values.config.factorioServer.update_mods_on_start }}" # -- factorio.com username USERNAME: "{{ .Values.config.factorioServer.username }}" # -- Configures service settings for the chart. # @default -- See values.yaml service: main: ports: http: enabled: false primary: false server: enabled: true port: 34197 protocol: UDP rcon: enabled: true primary: true port: 27015 protocol: TCP type: LoadBalancer annotations: io.cilium/lb-ipam-ips: 192.168.0.183 ingress: # -- Enable and configure ingress settings for the chart under this key. # @default -- See values.yaml main: enabled: false # -- Configure persistence settings for the chart under this key. # @default -- See values.yaml persistence: config: enabled: true mountPath: /factorio accessMode: ReadWriteOnce storageClass: openebs-3-replicas size: 1Gi # -- Configure server settings. Can be disabled if you wish to configure in the container in the json config files. # -- See values.yaml for descriptions for many config options, ore refer to https://wiki.factorio.com/Multiplayer. # @default -- See values.yaml config: factorioServer: # -- name to be used for save save_name: "_autosave1" # -- Generate a New Save generate_new_save: false # -- Update mods on start update_mods_on_start: false # -- lets the game know if you want to load the latest save load_latest_save: true # -- factorio.com token token: # -- factorio.com password username: server_settings: # -- Your Instance Name name: Factorio # -- Your Instance Description description: "Factorio running on Kubernetes" tags: - game - tags # -- Maximum number of players allowed, admins can join even a full server. 0 means unlimited. max_players: 0 # -- Game visibility visibility: # -- Game will be published on the official Factorio matching server public: false # -- Game will be broadcast on LAN lan: true # -- Your factorio.com login credentials. Required for games with visibility public username: "" password: "" # -- Authentication token. May be used instead of password above. token: "" # -- password required to log into the factorio server game_password: "" # -- When set to true, the server will only allow clients that have a valid Factorio.com account require_user_verification: false # -- optional, default value is 0. 0 means unlimited. max_upload_in_kilobytes_per_second: 0 # -- optional, default value is 5. 0 means unlimited. max_upload_slots: 5 # -- optional one tick is 16ms in default speed, default value is 0. 0 means no minimum. minimum_latency_in_ticks: 0 max_heartbeats_per_second: 60 # -- Players that played on this map already can join even when the max player limit was reached. ignore_player_limit_for_returning_players: false # -- possible values are, true, false and admins-only allow_commands: admins-only # -- Autosave interval in minutes autosave_interval: 10 # -- server autosave slots, it is cycled through when the server autosaves. autosave_slots: 5 # -- How many minutes until someone is kicked when doing nothing, 0 for never. afk_autokick_interval: 0 # -- Whether should the server be paused when no players are present. auto_pause: true auto_pause_when_players_connect: false # -- specifies if anyone can pause or only admins only_admins_can_pause_the_game: true # -- Whether autosaves should be saved only on server or also on all connected clients. Default is true. autosave_only_on_server: true # -- Highly experimental feature, enable only at your own # -- risk of losing your saves. On UNIX systems, server will fork itself to create an # -- autosave. Autosaving on connected Windows clients will be disabled regardless of # -- autosave_only_on_server option. non_blocking_saving: false # -- Long network messages are split into segments that are sent # -- over multiple ticks. Their size depends on the number of peers currently connected. # -- Increasing the segment size will increase upload bandwidth requirement for the server # -- and download bandwidth requirement for clients. This setting only affects server # -- outbound messages. Changing these settings can have a negative impact on connection # -- stability for some clients. minimum_segment_size: 25 minimum_segment_size_peer_count: 20 maximum_segment_size: 100 maximum_segment_size_peer_count: 10 # -- Password and port for the rcon service rcon: external: true type: LoadBalancer password: "replaceme" port: 30100 map_gen_settings: # --The inverse of water scale in the map generator GUI. terrain_segmentation: 1 # -- The equivalent to water coverage in the map generator GUI. Higher coverage means # -- more water in larger oceans. # -- Water level = 10 * log2(this value) water: 1 # -- Width and height of map, in tiles; 0 means infinite width: 0 # -- Width and height of map, in tiles; 0 means infinite height: 0 # -- Multiplier for biter free zone radius starting_area: 1 peaceful_mode: false autoplace_controls: coal: frequency: 1 size: 1 richness: 1 stone: frequency: 1 size: 1 richness: 1 copper-ore: frequency: 1 size: 1 richness: 1 iron-ore: frequency: 1 size: 1 richness: 1 uranium-ore: frequency: 1 size: 1 richness: 1 crude-oil: frequency: 1 size: 1 richness: 1 trees: frequency: 1 size: 1 richness: 1 enemy-base: frequency: 1 size: 1 richness: 1 cliff_settings: # -- Name of the cliff prototype name: cliff # -- Elevation of first row of cliffs cliff_elevation_0: 10 # -- Elevation difference between successive rows of cliffs. # -- This is inversely proportional to frequency in the map generation GUI. Specifically, when set from the GUI the value is 40 / frequency. cliff_elevation_interval: 40 # -- Called cliff continuity in the map generator GUI. 0 will result in no cliffs, 10 will make all cliff rows completely solid richness: 1 # -- Overrides for property value generators (map type) # -- Leave elevation blank to get normal terrain. # -- Use ''elevation'': ''0_16-elevation'' to reproduce terrain from 0.16. # -- Use ''elevation'': ''0_17-island'' to get an island. # -- Moisture and terrain type are also controlled via this. # -- "control-setting:moisture:frequency:multiplier is the inverse of the moisture scale in the map generator GUI." # -- "control-setting:moisture:bias is the moisture bias in the map generator GUI." # -- "control-setting:aux:frequency:multiplier is the inverse of the terrain type scale in the map generator GUI." # -- "control-setting:aux:bias is the teraain type bias in the map generator GUI." property_expression_names: control-setting:moisture:frequency:multiplier: "1" control-setting:moisture:bias: "0" control-setting:aux:frequency:multiplier: "1" control-setting:aux:bias: "0" starting_points: - "x": 0 "y": 0 # -- Use null for a random seed, number for a specific seed. seed: null map_settings: difficulty_settings: recipe_difficulty: 0 technology_difficulty: 0 technology_price_multiplier: 1 research_queue_setting: after-victory pollution: enabled: true # -- these are values for 60 ticks (1 simulated second) # -- amount that is diffused to neighboring chunk diffusion_ratio: 0.02 min_to_diffuse: 15 ageing: 1 expected_max_per_chunk: 150 min_to_show_per_chunk: 50 min_pollution_to_damage_trees: 60 pollution_with_max_forest_damage: 150 pollution_per_tree_damage: 50 pollution_restored_per_tree_damage: 10 max_pollution_to_restore_trees: 20 enemy_attack_pollution_consumption_modifier: 1 enemy_evolution: enabled: true time_factor: 0.000004 destroy_factor: 0.002 pollution_factor: 0.0000009 enemy_expansion: enabled: true min_base_spacing: 3 max_expansion_distance: 7 friendly_base_influence_radius: 2 enemy_building_influence_radius: 2 building_coefficient: 0.1 other_base_coefficient: 2 neighbouring_chunk_coefficient: 0.5 neighbouring_base_chunk_coefficient: 0.4 max_colliding_tiles_coefficient: 0.9 settler_group_min_size: 5 settler_group_max_size: 20 min_expansion_cooldown: 14400 max_expansion_cooldown: 216000 unit_group: min_group_gathering_time: 3600 max_group_gathering_time: 36000 max_wait_time_for_late_members: 7200 max_group_radius: 30 min_group_radius: 5 max_member_speedup_when_behind: 1.4 max_member_slowdown_when_ahead: 0.6 max_group_slowdown_factor: 0.3 max_group_member_fallback_factor: 3 member_disown_distance: 10 tick_tolerance_when_member_arrives: 60 max_gathering_unit_groups: 30 max_unit_group_size: 200 steering: default: radius: 1.2 separation_force: 0.005 separation_factor: 1.2 force_unit_fuzzy_goto_behavior: false moving: radius: 3 separation_force: 0.01 separation_factor: 3 force_unit_fuzzy_goto_behavior: false path_finder: fwd2bwd_ratio: 5 goal_pressure_ratio: 2 max_steps_worked_per_tick: 100 max_work_done_per_tick: 8000 use_path_cache: true short_cache_size: 5 long_cache_size: 25 short_cache_min_cacheable_distance: 10 short_cache_min_algo_steps_to_cache: 50 long_cache_min_cacheable_distance: 30 cache_max_connect_to_cache_steps_multiplier: 100 cache_accept_path_start_distance_ratio: 0.2 cache_accept_path_end_distance_ratio: 0.15 negative_cache_accept_path_start_distance_ratio: 0.3 negative_cache_accept_path_end_distance_ratio: 0.3 cache_path_start_distance_rating_multiplier: 10 cache_path_end_distance_rating_multiplier: 20 stale_enemy_with_same_destination_collision_penalty: 30 ignore_moving_enemy_collision_distance: 5 enemy_with_different_destination_collision_penalty: 30 general_entity_collision_penalty: 10 general_entity_subsequent_collision_penalty: 3 extended_collision_penalty: 3 max_clients_to_accept_any_new_request: 10 max_clients_to_accept_short_new_request: 100 direct_distance_to_consider_short_request: 100 short_request_max_steps: 1000 short_request_ratio: 0.5 min_steps_to_check_path_find_termination: 2000 start_to_goal_cost_multiplier_to_terminate_path_find: 500 overload_levels: - 0 - 100 - 500 overload_multipliers: - 2 - 3 - 4 negative_path_cache_delay_interval: 20 asteroids: spawning_rate: 1 max_ray_portals_expanded_per_tick: 100 max_failed_behavior_count: 3 admin_list: - Urrrk - Wendy white_list: # - "john_doe" # - "jane_doe" ban_list: # - "john_doe" # - "jane_doe"