Geek out a bit on map dimension constraints.
authorkyberneticist@gmail.com
Wed, 06 Nov 2013 17:47:36 +0000
changeset 339 1664d3e63c05
parent 338 6153b382a125
child 340 f5e34867f3ba
Geek out a bit on map dimension constraints.
PresetMaps.wiki
--- a/PresetMaps.wiki	Wed Nov 06 16:34:21 2013 +0000
+++ b/PresetMaps.wiki	Wed Nov 06 17:47:36 2013 +0000
@@ -59,7 +59,12 @@
 Image of visible land area.
   * Usually _width/length ratio_ of 2:1
   * Typical size: 2048 x 1024
-  * Max size: no limit, 0.9.18+.  4096 x 2048 or less in 0.9.17 and earlier.  (note: while there is no in-game limit apart from a mild sanity check restricting width or height to < 1073741824 and total size to < 24GiB of RAM, there is a limit if hedgewars is built w/ SDL 1.2 that restricts the maximum width to 16,384 and maximum height to 65,536)
+  * Max size: no limit, 0.9.18+.  4096 x 2048 or less in 0.9.17 and earlier.  There are a few practical limits to map size that should be examined for people trying to make very large maps.
+  ** SDL 1.2 - SDL 1.2 can only load maps that are 16,384px wide or less, and 65,536px high or less.
+  ** GIMP.  GIMP 2.8 can only create PNGs that are 262,144px wide or high - is an arbitrary hardcoded sanity check.  GIMP 2.10 allows 524,288 wide or high.
+  ** libpng - libpng can only load maps that are < 1 million px high.
+  ** Graphics card. This is the big one. Your graphics card probably has anywhere from 256MiB to 2GiB of vRAM.  If blurry land is enabled and the map has a typical amount of empty space, you can make a map w/ ~2x the pixels as a card has vRAM. But. Most people don't like using Blurry Land, so best to limit to ~½ the pixels as a card has vRAM. Targetting support for people on 256MiB of vRAM, that means a 2:1 rectangular map should not be larger than 16,384x8192 which coincidentally fits in the SDL 1.2 width limit.
+  ** There is also a completely arbitrary check in game for widths/height < ~billion pixels which avoids possible integer issues, and a limit on size in pixels of 6 billion or so, which was just a basic sanity limit.  However given the limitations above, these are not likely to be reached.
   * If there is no _mask.png_, this image will also be used for deciding what pixels are subject to collision: _alpha value_ not equal to 0 (so below max transparency) will be considered land
   * As of 0.9.19+, map.png is optional if a mask.png is provided.  If there is no map.png, the theme will be used to decorate the map.