Switzerland and its neighbours -- data sources and attribution =============================================================== The map The Neighbours plays on from Front+ 1.0.7 (docs/1_0_7/NEIGHBOURS.md section 1): Switzerland in the middle, tile for tile as on the Switzerland map, and round it the real land of France, Germany and Italy, closed until they arrive, and the closed east (Austria and Liechtenstein, closed all match). Built on 10 October 2026 by FrontPlus-Plan/mapdata/mapgen/ swiss_neighbours.py from Swiss federal geodata published by the Federal Office of Topography swisstopo on https://data.geo.admin.ch (the same files the Switzerland map was built from on 22 September 2026, copied into mapdata/swisstopo/ and logged in mapdata/DOWNLOADS.txt; nothing was downloaded for this map). swisstopo free geodata may be used, redistributed, modified and used commercially, but SOURCE ATTRIBUTION IS MANDATORY: (c) Bundesamt fuer Landestopografie swisstopo Datasets used ------------- Elevation ch.swisstopo.swissaltiregio (swissALTI Regio, 10 m national DEM) https://data.geo.admin.ch/ch.swisstopo.swissaltiregio/swissaltiregio/swissaltiregio_2056_5728.tif Read as a Cloud-Optimized BigTIFF; overview level 2 (80 m) only. Outside Switzerland swissALTI Regio merges the neighbours' elevation models, which are credited here: TINITALY / INGV (Italy), geoland.at (Austria), RGE ALTI / IGN (France), DGM1 Bayern and the Baden-Wuerttemberg / EU-DEM data (Germany). On this map they matter: 54% of its land lies outside Switzerland, so more than half of its relief comes from them. Borders ch.swisstopo.swissboundaries3d, release 2026-01 https://data.geo.admin.ch/ch.swisstopo.swissboundaries3d/swissboundaries3d_2026-01/swissboundaries3d_2026-01_2056_5728.shp.zip Layers: TLM_LANDESGEBIET (Switzerland and Liechtenstein), TLM_KANTONSGEBIET and TLM_HOHEITSGEBIET (through the Switzerland map's spawns, see Nations). Lakes ch.swisstopo.swisstlmregio, release 2025 (GeoPackage) https://data.geo.admin.ch/ch.swisstopo.swisstlmregio/swisstlmregio_2025/swisstlmregio_2025_2056.gpkg.zip Layer tlmregio_hydrography_lake; it holds the foreign lakes too (Geneva, Constance, Maggiore, Lugano, Como, Iseo, Orta, Varese, Annecy). Neighbours Natural Earth 1:10m Admin 0 - Countries, version 5.1.1 (ne_10m_admin_0_countries.zip, from https://naciscdn.org/naturalearth/10m/cultural/, as logged in FrontPlus-Plan/mapdata/DOWNLOADS.txt); public domain, "Made with Natural Earth". Only for the lines between France, Germany, Italy and Austria: Switzerland's border is swisstopo's. Geometry -------- Projection EPSG:2056 (CH1903+ / LV95), the official Swiss projection -- conformal and metric, so no latitude aspect correction is used. Grid 2000 x 1472 tiles at 175 m/tile (350.0 x 257.6 km); 4x 1000 x 736, 16x 500 x 368. Origin tile (x,y) covers E = 2484634 + 175*x, N = 1316501 - 175*y The box the Switzerland map's own grid (the same origin column, the same 175 m tiles, the same 2000 columns) with 116 rows (20.3 km) more to the north and 92 rows (16.1 km) more to the south. Both are multiples of 4, so the Swiss part is the same tiles at every detail: row y here is row y - 116 of the Switzerland map. The north band brings in all of Lake Constance and nearly doubles Germany's land; the south band puts Lake Maggiore and Lake Iseo wholly inside. The west and the east edges are the Switzerland map's. Elevation curve magnitude = round(unsharp(elevation) / 120 m), clamped 0..31, where unsharp = e + 2*(e - gaussian(e, sigma = 2 tiles)), on the whole box (the east too: its real, mostly low relief, not raised). Terrain band cuts at 1200 m and 2400 m. 4x and 16x by the Switzerland map's 2x2 vote (land if 2 of 4 are, the magnitude the mean of the winning class). Latitude row 0 = 48.00 N, last row = 45.68 N (the middle column). Land, lakes and the neighbours ------------------------------ Labels Switzerland: swisstopo's LANDESGEBIET CH with its holes filled (the Buesingen and Campione enclaves stay Swiss, as on the Switzerland map); Liechtenstein: swisstopo's LI; every other tile the nearest Natural Earth country of France, Germany, Italy and Austria. Liechtenstein goes with Austria: one closed east. Land every tile but the lakes: no rivers (the Rhine between Basel and Lake Constance is a land border), no sea (the box is landlocked; boats sail the lakes only). Lake policy the Switzerland map's rule everywhere, the map's edge too: a lake under 40 tiles (~1.2 km2) is filled back to land at the ground's height, and at 4x and 16x the same rule in km2 (10 and 3 tiles) after the 2x2 vote. A lake the map's edge cuts to under 400 tiles is filled (one, 78 tiles, on the bottom edge). No lake touches the edge. Islands an island in a foreign lake becomes lake, at every detail: 17 at full detail, the largest Monte Isola in Lake Iseo (143 tiles), the rest of 1 to 17 tiles (in Lake Constance, Lake Maggiore, Lake Como and smaller lakes); none more at 4x or 16x. Swiss islands stay as on the Switzerland map. Counts land 2,865,094 / 717,283 / 179,719 tiles (full / 4x / 16x); 82 / 69 / 55 lakes. At full detail Switzerland holds 1,305,416 land tiles and Liechtenstein 5,237 (the Switzerland map's 1,310,581 less the one-tile isthmus it needed in Lake Lugano, plus 74 tiles of border lakes under 40 tiles that were its sea), France 593,821, Germany 326,031, Italy 505,448, Austria 129,141. Against Switzerland in the Swiss window (rows 116 to 1379): at full detail every land tile of the Switzerland map is land here but that isthmus, and the magnitude differs on 1 tile, by 1; at 4x and 16x every land tile is still land, and the magnitude differs on 490 and 385 tiles along the border (the 2x2 mean now counts the foreign land beside them). Climate (climate.bin) --------------------- Source Beck, H.E., N.E. Zimmermann, T.R. McVicar, N. Vergopolan, A. Berg, E.F. Wood: Present and future Koppen-Geiger climate classification maps at 1-km resolution, Scientific Data 5, 180214 (2018), doi:10.1038/sdata.2018.214. Data: figshare, doi:10.6084/m9.figshare.6396959 (Beck_KG_V1.zip, no login), Beck_KG_V1_present_0p0083.tif (present day, 1980-2016, ~1 km). Licence CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/): attribution required; the classes were turned into moisture values and reprojected (changes made). Grid the map16x grid, 500 x 368: one byte per 16x tile, 0 = driest, 255 = wettest, on the terrain shader's own moisture scale (x 255). Method each Koppen class -> a moisture (table below); reprojected with the map's projection, each 16x tile the area average of the 1 km cells in it; the lakes take the nearest land's value (this map has no sea, and France, Germany, Italy and the east are land with their own climate); Gaussian smoothing, sigma 8 km (11.4 tiles of 0.70 km). Made by mapgen.py configs/switzerlandneighbours.json --climate-only (a config with only the grid, as configs/switzerland.json). Classes BWh, BWk 0.06; BSh, BSk 0.28; Csa 0.34; Dsa 0.40; Csb, Csc, Dsb 0.46; Dsc, Dsd 0.48; Aw, ET, EF 0.50; Cwa, Cwb, Cwc, Dwa, Dfa 0.52; Cfb, Cfc, Dwb, Dwc, Dwd, Dfb 0.53; Dfc, Dfd 0.58; Cfa 0.60; Am 0.66; Af 0.76. The shader's temperate ladder: desert under 0.22, steppe to 0.33, grass to 0.56, forest above; in hot country savanna from 0.24, grass from 0.45, jungle above 0.56. Tundra and snow come from the temperature. Land the largest classes by 16x land tile: Dfb 47%, Cfb 19%, ET 16%, Dfc 15%, Cfa 2%. As the temperate ladder reads it: desert 0.0%, steppe 0.0%, grass 97.5%, forest 2.5% (before the shader's noise, heat and altitude). Colour (colour.jpg) ------------------- Source the ESA WorldCover Sentinel-2 median L2A (RGBNIR) composite of 2021, v200 (the ESA WorldCover project; made by the ESA WorldCover consortium from Copernicus Sentinel-2 data), its true-colour bands B04, B03 and B02 (the NIR band not used): one cloud-optimised GeoTIFF a 1 x 1 degree cell in the open-data bucket https://esa-worldcover-s2.s3.eu-central-1.amazonaws.com/rgbnir/2021//ESA_WorldCover_10m_2021_v200__S2RGBNIR.tif, read at its overview level 2 (3000 pixels a degree), only that level, by range requests (Front+ 1.0.9 step s02, 16 October 2026; every piece in mapdata/DOWNLOADS.txt). 18 cells used; of the cells under the land and its one-tile ring 0 the bucket does not have (open sea) and 0 are missing. Licence CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); the terms: https://esa-worldcover.org/en/data-access ("provided free of charge, without restriction of use"). Attribution © ESA WorldCover project / Contains modified Copernicus Sentinel data (2021) processed by ESA WorldCover consortium Grid the full map grid twice over, 4000 x 2944: RGB, 8 bits a channel, sRGB, two texels a tile (0.087 km in the map's projection); JPEG, quality 90. Changed the source pixels averaged in blocks of 1 x 1 (2.4 x 3.4 of them a texel, north-south x east-west, at the land's middle), reprojected with the map's projection onto its grid, each texel the area average of the pixels in it in linear light (reflectance); water left out by the map's own land mask, and within 2 tiles of the map's own water also the imagery's own water (dark and blue pixels); clouds left out under the game's snow line (mean reflectance over 1.50 and spread under 0.05 of the mean; 9 texels touched); the 51,486 land texels with no data or mostly left-out pixels filled from the land round them, every texel that is not land from the nearest land texel; the tone: 1.6 x reflectance, to the power 0.9, highlights rolled off above 0.6, the colours 1.45 x as far from grey, exposure 1. Built 2026-10-16 (mapgen_imagery.py). Pair the colours of the Switzerland map are cut from this map's (the same lattice: the same x0, texel and width, 232 texel rows (116 tiles) lower), so its land texels are this map's, texel for texel: checked before the JPEG step (max difference 0 over 5,242,324 texels); after it the two files differ there by 0.05 of 255 on average (at most 40). Land mean colour 101, 111, 88 (sRGB), spread 36 / 32 / 41; 42,677 of 11,460,376 land texels had no source pixel with data (0.37%). Game the terrain shader takes the land's base colour from this instead of its biome palette, under its own light, relief shading, territory tint, borders, haze, snow and water, while the Realistic look is on (the Settings switch is the default for every map; each map can change it on the Singleplayer page; off, it draws the palette). Land a match raises where this map has sea keeps the palette. Nations ------- The 26 cantons, as on the Switzerland map: each canton's spawn is the Switzerland map's (the population-weighted centre of its municipalities in swissBOUNDARIES3D, snapped to low ground inside the canton), 116 rows lower. All 26 are on Swiss land at full, 4x and 16x, outside every door and the mountains, so in The Neighbours every canton plays. France, Germany and Italy are not nations: they come from modes.json. The Neighbours (modes.json) --------------------------- modes.json holds only The Neighbours' section (no other mode plays this map): Doors France (flag fr), Germany (de) and Italy (it), each its own land, no canton: rings of full-map tile corners filled by the even-odd rule, as the game draws them at each detail (of_sim doors.rs). Traced round the labels above by swiss_doors.py's tracer, cut where three labels meet; every arc that touches Switzerland is the exact staircase of its tiles, so no Swiss tile is in a door at any detail, and the other arcs are simplified once each to within 1.5 tiles, so neighbours share one line. Specks: a label's land piece under 80 tiles joins the foreign label it touches most before tracing (one German tile went to France; one Italian tile with no foreign neighbour went to Switzerland); then the rings are drawn back with the game's rule at every detail, and a piece under 80 / 20 / 5 tiles (full / 4x / 16x) makes the arcs near it finer, or, where the staircase itself makes it, its tiles leave that label for the one they touch most (three Austrian specks, 15 tiles, went to Switzerland). So 16 foreign tiles (13 of them land) are Switzerland's open ground. France 1 ring (2,556 points), Germany 1 ring (1,554), Italy 1 ring (3,288). Land at full / 4x / 16x: France 593,763 / 148,283 / 37,102 (20.7%), Germany 326,080 / 81,538 / 20,417 (11.4%), Italy 505,462 / 126,920 / 31,841 (17.6%), each in one piece. Mountains the east (Austria with Liechtenstein), traced the same way: 1 ring (901 points), 134,360 / 33,581 / 8,417 land tiles (4.7%). Closed all match; nobody comes from there. Places each door's towns for the invaders' kit, biggest first, in full tiles; each lies on its own door's land at all three details (none had to move). Sizes: Natural Earth 1:10m populated places' POP_MAX where it has the town (Mulhouse, Besancon, Annecy; Como, Bergamo, Aosta), else the town's own population (about 2022; Natural Earth has no German town in the box). France Mulhouse, Besancon, Annecy, Belfort, Thonon, Montbeliard, Pontarlier, Chamonix Germany Konstanz, Friedrichshafen, Ravensburg, Loerrach, Singen, Waldshut Italy Como, Bergamo, Varese, Lecco, Aosta, Sondrio, Domodossola Zones sides (2, 3 and 4 teams) and vs_ai, proposed by `mode_points neighbours switzerlandneighbours --write` over all 26 cantons, the doors and the mountains closed: every zone wholly on Swiss land, and no zone's middle within 25 tiles at 16x (50 at 4x, 100 at full) of a door or the mountains, so no side starts with its back to an invader; `mode_points check switzerlandneighbours` passes every line at all three details.