games/factorio: make more configurable

This makes the server fully configurable, and adds the contents of
example JSON configs as the defaults for all servers.

Change-Id: I8ff3e66a586a9db3acb9721810c8c5aa13072b4b
diff --git a/games/factorio/kube/config/map-gen-settings.libsonnet b/games/factorio/kube/config/map-gen-settings.libsonnet
new file mode 100644
index 0000000..18612f3
--- /dev/null
+++ b/games/factorio/kube/config/map-gen-settings.libsonnet
@@ -0,0 +1,81 @@
+{
+    // The following options are defaults taken verbatim from Factorio 1.1.35
+    // headless' map-gen-settings.example.json, with the following changes:
+    //  - field names unquoted where possible
+    //  - pseudo-comments converted to jsonnet comments
+    //  - comments reflowed to fit 80 columns
+
+    // 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,
+    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.
+    property_expression_names:
+    {
+      // 'control-setting:moisture:frequency:multiplier' is the inverse of the
+      // 'moisture scale' in the map generator GUI.
+      "control-setting:moisture:frequency:multiplier": "1",
+      // 'control-setting:moisture:bias' is the 'moisture bias' in the map
+      // generator GUI.
+      "control-setting:moisture:bias": "0",
+      // 'control-setting:aux:frequency:multiplier' is the inverse of the
+      // 'terrain type scale' in the map generator GUI.
+      "control-setting:aux:frequency:multiplier": "1",
+      // 'control-setting:aux:bias' is the 'terrain type bias' in the map
+      // generator GUI
+      "control-setting:aux:bias": "0"
+    },
+
+    starting_points:
+    [
+      { x: 0, y: 0}
+    ],
+
+    // Use null for a random seed, number for a specific seed.
+    seed: null
+}