Europe map -- data sources and attribution ========================================== Built by mapgen.py (with mapgen_continent.py) from configs/europe.json on 2026-10-09. Every input is public and needs no account or key. Rebuilt from open data in Front+ 1.0.6 in place of the OpenFront map of the same name (CC BY-SA); nothing of that map is used except its size, the shape it was fitted to (see Geometry) and its nations' names, flags and spawn places. Datasets used ------------- Land Natural Earth 1:10m Physical Vectors, PUBLIC DOMAIN (https://www.naturalearthdata.com, 'Made with Natural Earth'; no permission needed). Downloaded from https://naciscdn.org/naturalearth/10m/physical/.zip ne_10m_land (version 5.1.1, 6836 polygon parts), ne_10m_minor_islands (version 4.1.0, 683 polygon parts): every land polygon in the map's box is land (no country is cut out). Lakes Natural Earth 1:10m (ne_10m_lakes, ne_10m_lakes_europe), public domain. Rivers Natural Earth 1:10m ne_10m_rivers_lake_centerlines (version 5.0.0), public domain. Elevation ETOPO 2022 Global Relief Model v1, ice surface elevation, NOAA National Centers for Environmental Information. PUBLIC DOMAIN (a work of the U.S. Government; NOAA: "freely available to use for all private, academic, or commercial purposes"). From https://www.ncei.noaa.gov/products/etopo-global-relief-model, files: ETOPO_2022_v1_15s_N30W030_surface.tif, ETOPO_2022_v1_15s_N30W015_surface.tif, ETOPO_2022_v1_15s_N30E000_surface.tif, ETOPO_2022_v1_15s_N30E015_surface.tif, ETOPO_2022_v1_15s_N30E030_surface.tif, ETOPO_2022_v1_15s_N30E045_surface.tif, ETOPO_2022_v1_15s_N45W030_surface.tif, ETOPO_2022_v1_15s_N45W015_surface.tif, ETOPO_2022_v1_15s_N45E000_surface.tif, ETOPO_2022_v1_15s_N45E015_surface.tif, ETOPO_2022_v1_15s_N45E030_surface.tif, ETOPO_2022_v1_15s_N45E045_surface.tif, ETOPO_2022_v1_15s_N60W030_surface.tif, ETOPO_2022_v1_15s_N60W015_surface.tif, ETOPO_2022_v1_15s_N60E000_surface.tif, ETOPO_2022_v1_15s_N60E015_surface.tif, ETOPO_2022_v1_15s_N60E030_surface.tif, ETOPO_2022_v1_15s_N60E045_surface.tif, ETOPO_2022_v1_15s_N75W030_surface.tif, ETOPO_2022_v1_15s_N75W015_surface.tif, ETOPO_2022_v1_15s_N75E000_surface.tif, ETOPO_2022_v1_15s_N75E015_surface.tif, ETOPO_2022_v1_15s_N75E030_surface.tif, ETOPO_2022_v1_15s_N75E045_surface.tif (15 arc-second cells). Cite as: NOAA National Centers for Environmental Information. 2022: ETOPO 2022 15 Arc-Second Global Relief Model. NOAA National Centers for Environmental Information. DOI: 10.25921/fd45-gt74. ETOPO 2022's land elevation is built from, among others, Copernicus DEM 30 m, credited by NOAA's User Guide as: The European Space Agency. Copernicus DEM - Global and European Digital Elevation Model (COP-DEM); and FABDEM (Hawker et al. 2022, Environmental Research Letters 17(2), 024016, doi:10.1088/1748-9326/ac4d4f). Geometry -------- Projection +proj=eqc +lat_ts=1.4062 +lon_0=12.5000 +ellps=WGS84 +units=m +no_defs (pyproj 3.8.0) equirectangular (plate carree) with true scale along 1.4 N: the projection the old map fits best (fit_old.py; IoU 0.950 at 16x with its river channels as land, 0.896 as it is; Miller 0.697, Mercator 0.669, Lambert conformal conic 0.668). A degree of longitude and a degree of latitude are nearly the same number of tiles, as on the old map. Not conformal: a tile is 2,740 m tall everywhere and, on the ground, 2,373 m wide at 30.1 N, 1,765 m at 50 N and 881 m at 71.3 N; the game treats tiles as square, so no aspect correction is used. Fitted by fit_old.py to the old map's land (its map16x.bin): the eqc projection and box under which Natural Earth's land, rasterised on the old grid, best matches the old land: intersection over union 0.8963 at 16x (0.9495 with the old map's one-tile river channels counted as land). Grid 2904 x 1672 tiles at 2739.7 m/tile (7956.0 x 4580.7 km), the old map's size Origin tile (x,y) covers E = -4146310.0 + 2739.7*x, N = 7912506.0 - 2739.7*y Latitude row 0 = 71.3 N, last row = 30.1 N (crates/of_app/src/view.rs latitude_range: "europe" => (71.3, 30.1)), set in the config: the centre column (a row is a parallel in this projection). Centre column (71.3, 30.1): off by 0.02 deg on average over the land (0.03 at worst); least squares (71.3, 30.1): 0.01 deg (0.03 at worst). Coastline Natural Earth's outline refined by ETOPO 2022: a tile is land when at least half of its ETOPO cells are above 0 m (5.89 to ~5.91 cells across a tile), within 3 km of Natural Earth's coast inside the land and within 40 km of it out at sea (the small islands Natural Earth leaves out); deeper inland Natural Earth decides. ETOPO made 15,203 tiles land that Natural Earth has as sea and 6,636 the other way. Elevation curve magnitude = round(curve(u)), clamped 0..31, where e is the tile's mean ETOPO elevation (area average of its cells) and u = e - 0.3*(e - gaussian(e, sigma = 2 tiles)), the blur taken over land only so the sea does not drag the coast down. The curve is the auto_bands fit on the field u with the old map's own band shares: 57% of the land is Plains, 13% Mountain (the old Europe measured 57-30-13, slope 1.16, rock 29%), the top segment running to the highest u so peaks are not clamped. The mask (-0.3 over a 2-tile sigma, a light softening) is the --tune row whose slope is nearest 0.6 with rock under 12%: 0.59 and 10.2%. Measured alternatives: no mask 0.61 / 10.9%; -0.3 over 4 tiles 0.57 / 9.5%; +1 over 2 tiles 0.70 / 13.7%; +2 over 2 tiles 0.79 / 16.9%. curve: auto_bands {'plains': 0.57, 'mountain': 0.13} -> piecewise-linear [[0.0, 0.0], [237.1, 9.5], [868.8, 19.5], [3325.1, 31.0]]. Result: mean slope 0.596 magnitude steps/tile, 10.29% rock, bands 57.0% Plains / 30.0% Highland / 13.0% Mountain, mean magnitude 9.61 (Switzerland 0.62 / 8.8% / 51-34-15 / 11.10, Britannia 0.67 / 12.4% / 39-53-9 / 10.12, measured the same way by validate_map.py). map4x / map16x: slope 0.93 / 1.432, rock 19.11% / 33.25%. Water magnitude OpenFront's convention: min(ceil(d/2), 31), d = Manhattan distance from the shoreline water. Lake policy Natural Earth lakes are lakes; a lake that touches the map's edge, the sea or a river that reaches the sea is ocean. A lake under 40 tiles at full res (300.2 km2), 10 at 4x or 3 at 16x is filled back to land at the ground height. Island policy land bodies under 2 tiles at full resolution are dropped; every island that survives the downsample is kept at 4x and 16x. Downsampling map4x / map16x: plurality vote of each 2x2 block (a 2-2 tie goes to the side with the larger sub-tile land fraction); sea cut off by the vote is reconnected along its real channel; then the small-body cleanup above. 16x is built from 4x. Carved channel tiles: 4x 47, 16x 63. River policy Natural Earth centre lines (all) burnt as water: every tile whose centre is within 0.71 tile of the line (3.9 km wide at full resolution), and burnt again from the same lines into map4x and map16x (half width 0.71 tile) after the plurality vote, so each river is one continuous 4-connected channel at every resolution. A river that reaches the sea is ocean, so boats can use it. A river mouth short of other water by <= 10 tiles is extended to it (to water of at least 40 tiles, not to a speck); a river's lower end only, by ETOPO's elevation, never its source. Natural Earth's lake centre lines are burnt too (a river's course through its lakes and reservoirs), so a reservoir narrower than a tile does not cut the river. Landmasses map4x and map16x keep the landmasses of the finer detail. Two that are apart stay apart (where the vote closed the water between them, a tile over both becomes water: 10 tiles at 4x, 2 at 16x), and one piece stays one (where a river burnt one tile wide would split it, two sources a coarse tile apart, the highest one-tile water between the pieces becomes land: 8 tiles at 4x, 18 at 16x). The old map had river water: 42,828 tiles of one- and two-tile channels at full detail, open to the sea, at all three resolutions. The same rivers are burnt here from Natural Earth's centre lines with scalerank <= 12, the cut whose lines best match the old channels (fit_old.py: 44,669 tiles, 77% of them within 3 tiles of an old channel, 65% of the old channels within 3 tiles of one), one tile wide. Estuaries a river system cut off from the sea (Natural Earth's line stops where its estuary begins, and the estuary, narrower than a tile and at ETOPO's water surface above 0 m, is land on the grid) is joined to the sea along the cheapest path over low ground: land tiles no higher than 30 m, at most 60 of them, burnt one tile wide and carried to map4x and map16x: 13 river systems, 160 tiles. Straits kept open: Bosporus, Dardanelles, Oresund, Little Belt, Strait of Messina: the strait's centre line (traced on ETOPO's cells below sea level) burnt as water like a river, at every detail. The Bosporus (under a kilometre at its narrowest), the Dardanelles (1.2 km), the Little Belt (0.7 km at Middelfart), the Oresund (4 km at Helsingor) and the Strait of Messina (3 km) close on this grid at one detail or more by themselves; each carries a line traced on ETOPO, so all five are open at every detail, as on the old map. Gibraltar, the Great Belt, the Kerch Strait, Otranto and the Strait of Dover are open by themselves at every detail, as on the old map. compare_old_europe.txt checks each strait inside its own box. 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, 726 x 418: 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 sea and the neighbours (water on this map) take the nearest own land's value; Gaussian smoothing, sigma 8 km (1.0 tiles of 10.96 km). 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 30%, Dfc 21%, BWh 10%, Cfb 9%, BSk 8%, Csa 7%, ET 3%, Dfa 3%, BWk 2%, Dsb 2%, Cfa 2%, BSh 1%, Csb 1%. As the temperate ladder reads it: desert 12.0%, steppe 8.6%, grass 58.6%, forest 20.8% (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 4 (750 pixels a degree), only that level, by range requests (Front+ 1.0.9 step s02, 16 October 2026; every piece in mapdata/DOWNLOADS.txt). 1901 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, 2904 x 1672: RGB, 8 bits a channel, sRGB, one texel a tile (2.740 km in the map's projection); JPEG, quality 90. Changed the source pixels averaged in blocks of 6 x 6 (3.1 x 3.1 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; 89 texels touched); the 12,863 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). Land mean colour 118, 114, 90 (sRGB), spread 45 / 30 / 27; 35 of 2,356,424 land texels had no source pixel with data (0.00%). 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 old map's 52 nations, with their names and flags exactly as its manifest had them and in its order. Each spawn is the lon/lat of the old spawn tile on the fitted grid, snapped to the nearest tile that is land at all three resolutions, on the landmass of the land nearest that point, off the 16x coast where one is within 8 tiles more. Each nation's spawn must then lie in its own country (Natural Earth's admin-0 map units; England, Wales, Scotland and Northern Ireland their own units): where the old spot is across a border on the real coast, it moves to the nearest tile of its country that is land at all three resolutions (the moves are named below). Sapmi, a cultural region, and Kazakhstan, of which the map shows only a sliver at its east edge, keep their old spots. Ireland ie ( 634, 781) the old map's spawn (634, 781) on the fitted grid; snapped 0 tiles England gb-eng ( 962, 780) the old map's spawn (962, 780) on the fitted grid; snapped 0 tiles Spain es ( 874, 1286) the old map's spawn (874, 1286) on the fitted grid; snapped 0 tiles France fr (1087, 983) the old map's spawn (1087, 983) on the fitted grid; snapped 0 tiles Italy it (1541, 1180) the old map's spawn (1541, 1180) on the fitted grid; snapped 0 tiles Switzerland ch (1339, 997) the old map's spawn (1339, 997) on the fitted grid; snapped 0 tiles Norway no (1360, 428) the old map's spawn (1360, 428) on the fitted grid; snapped 0 tiles Sweden se (1609, 477) the old map's spawn (1609, 477) on the fitted grid; snapped 0 tiles Finland fi (2032, 346) the old map's spawn (2032, 346) on the fitted grid; snapped 0 tiles Belgium be (1182, 836) the old map's spawn (1182, 836) on the fitted grid; snapped 0 tiles Netherlands nl (1268, 764) the old map's spawn (1268, 764) on the fitted grid; snapped 0 tiles Germany de (1445, 821) the old map's spawn (1445, 821) on the fitted grid; snapped 0 tiles Austria at (1508, 960) the old map's spawn (1507, 959) on the fitted grid; that spot is not in Austria on Natural Earth's map, so it moved 1 tiles to the nearest tile of it that is land at all three resolutions; snapped 1.4 tiles Poland pl (1751, 767) the old map's spawn (1751, 772) on the fitted grid; snapped 5 tiles Czechia cz (1618, 874) the old map's spawn (1618, 874) on the fitted grid; snapped 0 tiles Ukraine ua (2231, 885) the old map's spawn (2231, 885) on the fitted grid; snapped 0 tiles Belarus by (2206, 676) the old map's spawn (2206, 676) on the fitted grid; snapped 0 tiles Romania ro (2046, 990) the old map's spawn (2046, 990) on the fitted grid; snapped 0 tiles Türkiye tr (2334, 1313) the old map's spawn (2334, 1313) on the fitted grid; snapped 0 tiles Morocco ma ( 769, 1535) the old map's spawn (769, 1535) on the fitted grid; snapped 0 tiles Russia ru (2591, 610) the old map's spawn (2591, 610) on the fitted grid; snapped 0 tiles Syria sy (2538, 1418) the old map's spawn (2538, 1418) on the fitted grid; snapped 0 tiles Iraq iq (2689, 1441) the old map's spawn (2689, 1441) on the fitted grid; snapped 0 tiles Georgia ge (2746, 1143) the old map's spawn (2748, 1138) on the fitted grid; that spot is not in Georgia on Natural Earth's map, so it moved 5 tiles to the nearest tile of it that is land at all three resolutions; snapped 5.4 tiles Tunisia tn (1359, 1473) the old map's spawn (1359, 1473) on the fitted grid; snapped 0 tiles Algeria dz (1066, 1506) the old map's spawn (1066, 1506) on the fitted grid; snapped 0 tiles Portugal pt ( 680, 1254) the old map's spawn (680, 1254) on the fitted grid; snapped 0 tiles Greece gr (1891, 1299) the old map's spawn (1891, 1299) on the fitted grid; snapped 0 tiles Serbia rs (1906, 1113) the old map's spawn (1906, 1113) on the fitted grid; snapped 0 tiles Hungary hu (1751, 983) the old map's spawn (1751, 983) on the fitted grid; snapped 0 tiles Slovakia sk (1826, 902) the old map's spawn (1826, 902) on the fitted grid; snapped 0 tiles Croatia hr (1625, 1039) the old map's spawn (1624, 1038) on the fitted grid; that spot is not in Croatia on Natural Earth's map, so it moved 1 tiles to the nearest tile of it that is land at all three resolutions; snapped 1.4 tiles Bosnia and Herzegovina ba (1738, 1107) the old map's spawn (1738, 1107) on the fitted grid; snapped 0 tiles Albania al (1817, 1213) the old map's spawn (1817, 1213) on the fitted grid; snapped 0 tiles Bulgaria bg (2092, 1158) the old map's spawn (2092, 1158) on the fitted grid; snapped 0 tiles Lithuania lt (1959, 704) the old map's spawn (1958, 704) on the fitted grid; that spot is not in Lithuania on Natural Earth's map, so it moved 1 tiles to the nearest tile of it that is land at all three resolutions; snapped 1 tiles Latvia lv (2030, 614) the old map's spawn (2030, 617) on the fitted grid; that spot is not in Latvia on Natural Earth's map, so it moved 3 tiles to the nearest tile of it that is land at all three resolutions; snapped 3 tiles Estonia ee (2052, 516) the old map's spawn (2052, 516) on the fitted grid; snapped 0 tiles Wales gb-wls ( 863, 775) the old map's spawn (863, 775) on the fitted grid; snapped 0 tiles Scotland gb-sct ( 841, 603) the old map's spawn (841, 603) on the fitted grid; snapped 0 tiles Kazakhstan kz (2890, 857) the old map's spawn (2890, 857) on the fitted grid, kept: the map shows only a sliver of Kazakhstan at its east edge, south of this spot; snapped 0 tiles Northern Ireland northern_ireland ( 719, 685) the old map's spawn (719, 685) on the fitted grid; snapped 0 tiles Sápmi Sami flag (1900, 132) the old map's spawn (1900, 132) on the fitted grid; snapped 0 tiles Denmark dk (1377, 625) the old map's spawn (1377, 625) on the fitted grid; snapped 0 tiles Israel il (2406, 1638) the old map's spawn (2406, 1638) on the fitted grid; snapped 0 tiles Egypt eg (2226, 1661) the old map's spawn (2226, 1661) on the fitted grid; snapped 0 tiles Libya ly (1847, 1652) the old map's spawn (1847, 1652) on the fitted grid; snapped 0 tiles Jordan jo (2535, 1608) the old map's spawn (2535, 1609) on the fitted grid; that spot is not in Jordan on Natural Earth's map, so it moved 1 tiles to the nearest tile of it that is land at all three resolutions; snapped 1 tiles Lebanon lb (2468, 1530) the old map's spawn (2473, 1528) on the fitted grid; that spot is not in Lebanon on Natural Earth's map, so it moved 5 tiles to the nearest tile of it that is land at all three resolutions; snapped 5.4 tiles Iceland is ( 268, 265) the old map's spawn (266, 265) on the fitted grid; snapped 2 tiles Andorra ad (1064, 1167) the old map's spawn (1045, 1188) on the fitted grid; that spot is not in Andorra on Natural Earth's map, so it moved 28 tiles to the nearest tile of it that is land at all three resolutions; snapped 28.3 tiles Monaco mc (1305, 1119) the old map's spawn (1290, 1121) on the fitted grid; that spot is not in Monaco on Natural Earth's map, so it moved 15 tiles to the nearest tile of it that is land at all three resolutions; snapped 15.1 tiles