MapConv(NG) for Windows crash on big map sizes

MapConv(NG) for Windows crash on big map sizes

Discuss maps & map creation - from concept to execution to the ever elusive release.

Moderator: Moderators

User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

Sadly I'm not able to process my map source data in MapConv if the map size gets over some size. I was historically able to produce 24x24 maps, currently even texture of 22x22 map is problem and I receive

Code: Select all

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
I guess there is hidden problem with memory allocation but not sure where the memory is missing - for sure it is not drive where temp files are created - have 25 GB of free space for 18x18-32x32 map with texture of size between 200-800 MB. Do I need bigger ram? Space on C drive? Memory for GPU? some graphic settings?

I'm not sure if it helps but one of by batch files i run launching mapconv (this one is referencing one of the older versions of MapConv, but I tried the latest versions as well and results are same from perspective of this issue) with all params looks like this

Code: Select all

n:\nota_dev_pack\tools\mapconv\MapConv.exe -i -l -c 0^
 -x 471^
 -n -40^
 -o "n:\nota_dev_pack\000\SpringData\maps\mffarena002.sdd\maps\mffarena002v1.smf"^
 -t "n:\nota_dev_pack\000\courses\mffmap002\texture4.bmp"^
 -a "n:\nota_dev_pack\000\courses\mffmap002\height8bit.bmp"^
 -m "metal.bmp"^
 -z "n:\nota_dev_pack\tools\mapconv\nvdxt.exe -dxt1a -nmips 4 -Sinc -quality_highest -file"
pause
For maps up to 16x16 I observe no problems.
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: MapConv(NG) for Windows crash on big map sizes

Post by Silentwings »

32 bit mem allocation limit.

Use pymapconv, https://github.com/Beherith/springrts_smf_compiler
User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

Re: MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

I'm not able to build it because http://effbot.org/downloads/PIL-1.1.7.win32-py2.7.exe install crash on my PC.

Do you have windows build of pymapconv, please?
User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

Re: MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

PepeAmpere wrote:I'm not able to build it because http://effbot.org/downloads/PIL-1.1.7.win32-py2.7.exe install crash on my PC.

Do you have windows build of pymapconv, please?
Ok nvm, it was stupid Program Files (x86) install folder...

but I have another issue:

Code: Select all

n:\nota_dev_pack\tools\springrts_smf_compiler-master>python setup.py build
Traceback (most recent call last):
  File "setup.py", line 2, in <module>
    from cx_Freeze import setup, Executable
ImportError: No module named cx_Freeze
so I manually added https://pypi.org/project/cx_Freeze/#files but now I get

Code: Select all

n:\nota_dev_pack\tools\springrts_smf_compiler-master>python setup.py build
Traceback (most recent call last):
  File "setup.py", line 29, in <module>
    shortcutDir="DesktopFolder",
TypeError: __init__() got an unexpected keyword argument 'appendScriptToLibrary'
User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

Re: MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

if i call mapconv.py directly from batch file, processing works up to

Code: Select all

Compiling SMF with the following options: Namespace(decompile=None, featurelist=None, featuremap=None, featureplacement=None, geoventfile='geovent.bmp', grassmap=None, heightmap='n:\\nota_dev_pack\\000\\courses\\dotamap\\height.bmp', intex='n:\\nota_dev_pack\\000\\courses\\dotamap\\texture.bmp', linux=False, maxheight=200.0, metalmap='metal.bmp', minheight=-55.0, minimap=None, nvdxt_options='-Sinc -quality_highest', outfile='n:\\nota_dev_pack\\000\\SpringData\\maps\\dotamap30.sdd\\maps\\dotamap30.smf', quick=False, typemap=None)
Texture image n:\nota_dev_pack\000\courses\dotamap\texture.bmp seems to have the correct dimensions (15360x15360) for a spring map size of (30x30)
Texture image n:\nota_dev_pack\000\courses\dotamap\texture.bmp is RGB, just making sure you dont have alpha in it...
Warning: you are using an 8-bit heightmap. This will most likely result in terracing effects, so consider switching to 16-bit depth .png!
Traceback (most recent call last):
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 919, in <module>
    okbuttonhandler(parser)
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 916, in okbuttonhandler
    compileSMF(parsed_args)
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 282, in compileSMF
    heights.append(sum(otherheight_pixels[col, row]) * 256 / 3)
TypeError: 'int' object is not iterable
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: MapConv(NG) for Windows crash on big map sizes

Post by Silentwings »

I think you've found a bug that's likely only triggered if you use a low res height map. Try using a proper res (8/16-bit per channel) rgb height map.

Alternatively, quickfix attempt without reading any code:

Code: Select all

heights.append([sum(otherheight_pixels[col, row]) * 256 / 3])
User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

Re: MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

Silentwings wrote:I think you've found a bug that's likely only triggered if you use a low res (8-bit) height map. Try using a proper res (16-bit) height map.

Alternatively, quickfix attempt without reading any code:

Code: Select all

heights.append([sum(otherheight_pixels[col, row]) * 256 / 3])
I was trying to debug it and it looks like all variables are valid. No idea why it fails in the cycle. I tried your fix, does not help, error is still the same.

If I use 16bit-grey heightmap, i get error ending with this

Code: Select all

Texture image n:\nota_dev_pack\000\courses\dotamap\texture.bmp is RGB, just making sure you dont have alpha in it...
You are using 65534 unique height levels in your heightmap.
Traceback (most recent call last):
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 919, in <module>
    okbuttonhandler(parser)
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 916, in okbuttonhandler
    compileSMF(parsed_args)
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 296, in compileSMF
    metalmap.append(metalimage_pixels[col, row][0])
TypeError: 'int' object has no attribute '__getitem__'
FYI
  • I made sure metal map have proper size
  • I save the metal map as 8bit bmp
Last edited by PepeAmpere on 16 Jun 2018, 13:52, edited 1 time in total.
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: MapConv(NG) for Windows crash on big map sizes

Post by Silentwings »

I don't think my suggested fix could have given the exact same error message.

All variables are defined, what's needed is effectively a type conversion, from int to a single element list.
User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

Re: MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

Silentwings wrote:I don't think my suggested fix could have given the exact same error message.

All variables are defined, what's needed is effectively a type conversion, from int to a single element list.
Based on https://www.tutorialspoint.com/python/list_append.htm there is no need for conversion of this kind (unless I look at docu of wrong python version), if its already int, isn't it? Btw the error have some problem with the iterator.
User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

Re: MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

Btw even for this MapConv version I still use 32bit python and 32bit extensions (I used the suggested setup from repo). If there was originally some limit regarding this, is it here as well?
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: MapConv(NG) for Windows crash on big map sizes

Post by Silentwings »

Ok, I'll look at the error again when I'm home this week. If you could zip your heightmaps and upload them somewhere that would be handy.

32bit python ... some limit ... here as well?
Not here - pymapconv has a different architecture. I think the size of map it will compile is basically limitless; also it is much nicer to work with than old mapconv. This 28x28 map was one I compiled with it https://springfiles.com/spring/spring-maps/faya
User avatar
Beherith
Posts: 5145
Joined: 26 Oct 2007, 16:21

Re: MapConv(NG) for Windows crash on big map sizes

Post by Beherith »

That metalmap error was throw because metalmap is traditionally the red channel of 8bit rgb bmp e.g metalmap[row,col][0]. Use 8bit rgb metal map instead of 8bit greyscale.
User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

Re: MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

Hi, finally I found some time to continue with my big maps compilation struggle :)

I attach example sources of one incomplete map - its in stage of first map playtest with some basic texture https://drive.google.com/drive/folders/ ... sp=sharing

There are two batch files at your disposal which I use for comfort re-binarization of whole map.

First anyville.cmd for 24x32 map.

Code: Select all

n:\nota_dev_pack\tools\mapconv\MapConv.exe -i -l -c 0^
 -x 240^
 -n -14^
 -o "n:\nota_dev_pack\000\SpringData\maps\anyville.sdd\maps\anyville001.smf"^
 -t "n:\nota_dev_pack\000\courses\anyville\texture_full.bmp"^
 -a "n:\nota_dev_pack\000\courses\anyville\height_full.png"^
 -m "n:\nota_dev_pack\000\courses\anyville\metal.png"^
 -z "n:\nota_dev_pack\tools\mapconv\nvdxt.exe -dxt1a -nmips 4 -Sinc -quality_highest -file"
pause
After running this code the application ends up with this output

Code: Select all

n:\nota_dev_pack\000\courses\anyville>n:\nota_dev_pack\tools\mapconv\MapConv.exe -i -l -c 0 -x 240 -n -14 -o "n:\nota_dev_pack\000\SpringData\maps\anyville.sdd\maps\anyville001.smf" -t "n:\nota_dev_pack\000\courses\anyville\texture_half.bmp" -a "n:\nota_dev_pack\000\courses\anyville\height_half.png" -m "n:\nota_dev_pack\000\courses\anyville\metal_half.png" -z "n:\nota_dev_pack\tools\mapconv\nvdxt.exe -dxt1a -nmips 4 -Sinc -quality_highest -file"
Mothers Mapconv version 2.4 updated by Beherith (mysterme at gmail dot com)
Loading texture

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

n:\nota_dev_pack\000\courses\anyville>pause
Press any key to continue . . .
If I just take subset of given map (north 24x24 part), using anyvilleHalf.cmd

Code: Select all

n:\nota_dev_pack\tools\mapconv\MapConv.exe -i -l -c 0^
 -x 240^
 -n -14^
 -o "n:\nota_dev_pack\000\SpringData\maps\anyville.sdd\maps\anyville001.smf"^
 -t "n:\nota_dev_pack\000\courses\anyville\texture_half.bmp"^
 -a "n:\nota_dev_pack\000\courses\anyville\height_half.png"^
 -m "n:\nota_dev_pack\000\courses\anyville\metal_half.png"^
 -z "n:\nota_dev_pack\tools\mapconv\nvdxt.exe -dxt1a -nmips 4 -Sinc -quality_highest -file"
pause
... and the map gets compiled in 80 % of the cases - producing proper smt file which I can test.

Observations - i tried the same setup on three computers (2 high-end gaming laptops of current days, 3rd game developer 3 years old PC):
  • none of them is able to finish compilation of the 24x32 map, the newest laptop struggles also with 24x24, older laptop can do max 28x28 maps and the oldest PC can do 30x30 maps with 50 % probability - based on this I suspected some cache on any level of the execution beeing depleted, but I'm not expert on the low-level programming :)
  • once you reach the texture size limit, results are unreliable (5 times runs ok, 6th run same error like the map would be "too" big), which turns me to idea there is some problem in the implementation which is not handling properly big data sources.
  • because I succeed with smaller maps and fail with big ones, I think the problem is not directly in my "corrupted" source data, but still there can be something I can do better.
Btw to give you idea what i mean by high-end, here is the HW setup of the newest laptop I tried as the last one to compare the results (I used clean computer which was in default factory setup with empty drives, clean OS and no extra applications running on backround)

Schenker XMG APEX 15
Intel i5-8500
32GB RAM
nVidia GTX 1060 - 6GB
SSD 500GB
SSD 1TB
Windows 10 Pro
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: MapConv(NG) for Windows crash on big map sizes

Post by Silentwings »

And what happens if you fix your metal map, as Behe suggested, and then use pymapconv?
User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

Re: MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

Silentwings wrote: 25 Dec 2018, 22:00 And what happens if you fix your metal map, as Behe suggested, and then use pymapconv?
Yes I tried, no success

Using next params

Code: Select all

n:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py ^
 -x 240^
 -n -14^
 -o "n:\nota_dev_pack\000\SpringData\maps\anyville.sdd\maps\anyville001.smf"^
 -t "n:\nota_dev_pack\000\courses\anyville\texture_half.bmp"^
 -a "n:\nota_dev_pack\000\courses\anyville\height_half16.png"^
 -m "n:\nota_dev_pack\000\courses\anyville\metal_half.png"
pause
As result I get this:

Code: Select all

n:\nota_dev_pack\000\courses\anyville>n:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py  -x 240 -n -14 -o "n:\nota_dev_pack\000\SpringData\maps\anyville.sdd\maps\anyville001.smf" -t "n:\nota_dev_pack\000\courses\anyville\texture_half.bmp" -a "n:\nota_dev_pack\000\courses\anyville\height_half16.png" -m "n:\nota_dev_pack\000\courses\anyville\metal_half.png"
Welcome to the SMF compiler/decompiler by Beherith (mysterme@gmail.com)
Namespace(decompile=None, featurelist=None, featuremap=None, featureplacement=None, geoventfile='geovent.bmp', grassmap=None, heightmap='n:\\nota_dev_pack\\000\\courses\\anyville\\height_half16.png', intex='n:\\nota_dev_pack\\000\\courses\\anyville\\texture_half.bmp', linux=False, maxheight=240.0, metalmap='n:\\nota_dev_pack\\000\\courses\\anyville\\metal_half.png', minheight=-14.0, minimap=None, nvdxt_options='-Sinc -quality_highest', outfile='n:\\nota_dev_pack\\000\\SpringData\\maps\\anyville.sdd\\maps\\anyville001.smf', quick=False, typemap=None)
Compiling SMF with the following options: Namespace(decompile=None, featurelist=None, featuremap=None, featureplacement=None, geoventfile='geovent.bmp', grassmap=None, heightmap='n:\\nota_dev_pack\\000\\courses\\anyville\\height_half16.png', intex='n:\\nota_dev_pack\\000\\courses\\anyville\\texture_half.bmp', linux=False, maxheight=240.0, metalmap='n:\\nota_dev_pack\\000\\courses\\anyville\\metal_half.png', minheight=-14.0, minimap=None, nvdxt_options='-Sinc -quality_highest', outfile='n:\\nota_dev_pack\\000\\SpringData\\maps\\anyville.sdd\\maps\\anyville001.smf', quick=False, typemap=None)
Texture image n:\nota_dev_pack\000\courses\anyville\texture_half.bmp seems to have the correct dimensions (12288x12288) for a spring map size of (24x24)
Texture image n:\nota_dev_pack\000\courses\anyville\texture_half.bmp is RGB, just making sure you dont have alpha in it...
You are using 254 unique height levels in your heightmap.
Warning: Even though you have specified a 16-bit heightmap, you are only using 254 unique height levels.
Warning: This may result in terracing, consider using some surface blur on your heightmap to utilize full 16-bit depth!
Traceback (most recent call last):
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 919, in <module>
    okbuttonhandler(parser)
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 916, in okbuttonhandler
    compileSMF(parsed_args)
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 296, in compileSMF
    metalmap.append(metalimage_pixels[col, row][0])
TypeError: 'int' object has no attribute '__getitem__'

n:\nota_dev_pack\000\courses\anyville>pause
Press any key to continue . . .
I uploaded unique files (16bit heightmap + cmd for python) to same folder, https://drive.google.com/drive/folders/ ... sp=sharing
User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

Re: MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

Beherith wrote: 17 Jun 2018, 14:22 That metalmap error was throw because metalmap is traditionally the red channel of 8bit rgb bmp e.g metalmap[row,col][0]. Use 8bit rgb metal map instead of 8bit greyscale.
Silentwings wrote: 25 Dec 2018, 22:00 And what happens if you fix your metal map, as Behe suggested, and then use pymapconv?
Hm, when I try with just 32bit or 24bit RGB(A) PNG for metal map, the python solution does something. Seems 8bit rgb may be not as good tip - esp. if this solution can eat 32bit/24bit colored PNGs.

I still get errors but the smt is produced.

Code: Select all

n:\nota_dev_pack\000\courses\anyville>n:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py  -x 240 -n -14 -o "n:\nota_dev_pack\000\SpringData\maps\anyville.sdd\maps\anyville001.smf" -t "n:\nota_dev_pack\000\courses\anyville\texture_full.bmp" -a "n:\nota_dev_pack\000\courses\anyville\height_full.png" -m "n:\nota_dev_pack\000\courses\anyville\metal32.png"
Welcome to the SMF compiler/decompiler by Beherith (mysterme@gmail.com)
Namespace(decompile=None, featurelist=None, featuremap=None, featureplacement=None, geoventfile='geovent.bmp', grassmap=None, heightmap='n:\\nota_dev_pack\\000\\courses\\anyville\\height_full.png', intex='n:\\nota_dev_pack\\000\\courses\\anyville\\texture_full.bmp', linux=False, maxheight=240.0, metalmap='n:\\nota_dev_pack\\000\\courses\\anyville\\metal32.png', minheight=-14.0, minimap=None, nvdxt_options='-Sinc -quality_highest', outfile='n:\\nota_dev_pack\\000\\SpringData\\maps\\anyville.sdd\\maps\\anyville001.smf', quick=False, typemap=None)
Compiling SMF with the following options: Namespace(decompile=None, featurelist=None, featuremap=None, featureplacement=None, geoventfile='geovent.bmp', grassmap=None, heightmap='n:\\nota_dev_pack\\000\\courses\\anyville\\height_full.png', intex='n:\\nota_dev_pack\\000\\courses\\anyville\\texture_full.bmp', linux=False, maxheight=240.0, metalmap='n:\\nota_dev_pack\\000\\courses\\anyville\\metal32.png', minheight=-14.0, minimap=None, nvdxt_options='-Sinc -quality_highest', outfile='n:\\nota_dev_pack\\000\\SpringData\\maps\\anyville.sdd\\maps\\anyville001.smf', quick=False, typemap=None)
Texture image n:\nota_dev_pack\000\courses\anyville\texture_full.bmp seems to have the correct dimensions (12288x16384) for a spring map size of (24x32)
Texture image n:\nota_dev_pack\000\courses\anyville\texture_full.bmp is RGB, just making sure you dont have alpha in it...
You are using 254 unique height levels in your heightmap.
Warning: Even though you have specified a 16-bit heightmap, you are only using 254 unique height levels.
Warning: This may result in terracing, consider using some surface blur on your heightmap to utilize full 16-bit depth!
Placed a total of 0 features out of 17 feature types (17 of which are built-in), with the following distribution:
Total grass coverage of map is 0.000000 percent
Creating temp directory for intermediate tiles
Writing tiles 0 12 24 36 48 60 72 84 96 108 120 132 1 13 25 37 49 61 73 85 97 109 121 133 2 14 26 38 50 62 74 86 98 110 122 134 3 15 27 39 51 63 75 87 99 111 123 135 4 16 28 40 52 64 76 88 100 112 124 136 5 17 29 41 53 65 77 89 101 113 125 137 6 18 30 42 54 66 78 90 102 114 126 138 7 19 31 43 55 67 79 91 103 115 127 139 8 20 32 44 56 68 80 92 104 116 128 140 9 21 33 45 57 69 81 93 105 117 129 141 10 22 34 46 58 70 82 94 106 118 130 142 11 23 35 47 59 71 83 95 107 119 131 143 
Converting to dds with the command:  nvdxt.exe -file temp\temp*.bmp -dxt1c -outsamedir -nmips 4 -Sinc -quality_highest
Version 8.30
    Reading temp\temp0.bmp  [Processing] Writing temp\\temp0.dds
    Reading temp\temp1.bmp  [Processing] Writing temp\\temp1.dds
    Reading temp\temp10.bmp  [Processing] Writing temp\\temp10.dds
    Reading temp\temp100.bmp  [Processing] Writing temp\\temp100.dds
    Reading temp\temp101.bmp  [Processing] Writing temp\\temp101.dds
    Reading temp\temp102.bmp  [Processing] Writing temp\\temp102.dds
    Reading temp\temp103.bmp  [Processing] Writing temp\\temp103.dds
    Reading temp\temp104.bmp  [Processing] Writing temp\\temp104.dds
    Reading temp\temp105.bmp  [Processing] Writing temp\\temp105.dds
    Reading temp\temp106.bmp  [Processing] Writing temp\\temp106.dds
    Reading temp\temp107.bmp  [Processing] Writing temp\\temp107.dds
    Reading temp\temp108.bmp  [Processing] Writing temp\\temp108.dds
    Reading temp\temp109.bmp  [Processing] Writing temp\\temp109.dds
    Reading temp\temp11.bmp  [Processing] Writing temp\\temp11.dds
    Reading temp\temp110.bmp  [Processing] Writing temp\\temp110.dds
    Reading temp\temp111.bmp  [Processing] Writing temp\\temp111.dds
    Reading temp\temp112.bmp  [Processing] Writing temp\\temp112.dds
    Reading temp\temp113.bmp  [Processing] Writing temp\\temp113.dds
    Reading temp\temp114.bmp  [Processing] Writing temp\\temp114.dds
    Reading temp\temp115.bmp  [Processing] Writing temp\\temp115.dds
    Reading temp\temp116.bmp  [Processing] Writing temp\\temp116.dds
    Reading temp\temp117.bmp  [Processing] Writing temp\\temp117.dds
    Reading temp\temp118.bmp  [Processing] Writing temp\\temp118.dds
    Reading temp\temp119.bmp  [Processing] Writing temp\\temp119.dds
    Reading temp\temp12.bmp  [Processing] Writing temp\\temp12.dds
    Reading temp\temp120.bmp  [Processing] Writing temp\\temp120.dds
    Reading temp\temp121.bmp  [Processing] Writing temp\\temp121.dds
    Reading temp\temp122.bmp  [Processing] Writing temp\\temp122.dds
    Reading temp\temp123.bmp  [Processing] Writing temp\\temp123.dds
    Reading temp\temp124.bmp  [Processing] Writing temp\\temp124.dds
    Reading temp\temp125.bmp  [Processing] Writing temp\\temp125.dds
    Reading temp\temp126.bmp  [Processing] Writing temp\\temp126.dds
    Reading temp\temp127.bmp  [Processing] Writing temp\\temp127.dds
    Reading temp\temp128.bmp  [Processing] Writing temp\\temp128.dds
    Reading temp\temp129.bmp  [Processing] Writing temp\\temp129.dds
    Reading temp\temp13.bmp  [Processing] Writing temp\\temp13.dds
    Reading temp\temp130.bmp  [Processing] Writing temp\\temp130.dds
    Reading temp\temp131.bmp  [Processing] Writing temp\\temp131.dds
    Reading temp\temp132.bmp  [Processing] Writing temp\\temp132.dds
    Reading temp\temp133.bmp  [Processing] Writing temp\\temp133.dds
    Reading temp\temp134.bmp  [Processing] Writing temp\\temp134.dds
    Reading temp\temp135.bmp  [Processing] Writing temp\\temp135.dds
    Reading temp\temp136.bmp  [Processing] Writing temp\\temp136.dds
    Reading temp\temp137.bmp  [Processing] Writing temp\\temp137.dds
    Reading temp\temp138.bmp  [Processing] Writing temp\\temp138.dds
    Reading temp\temp139.bmp  [Processing] Writing temp\\temp139.dds
    Reading temp\temp14.bmp  [Processing] Writing temp\\temp14.dds
    Reading temp\temp140.bmp  [Processing] Writing temp\\temp140.dds
    Reading temp\temp141.bmp  [Processing] Writing temp\\temp141.dds
    Reading temp\temp142.bmp  [Processing] Writing temp\\temp142.dds
    Reading temp\temp143.bmp  [Processing] Writing temp\\temp143.dds
    Reading temp\temp15.bmp  [Processing] Writing temp\\temp15.dds
    Reading temp\temp16.bmp  [Processing] Writing temp\\temp16.dds
    Reading temp\temp17.bmp  [Processing] Writing temp\\temp17.dds
    Reading temp\temp18.bmp  [Processing] Writing temp\\temp18.dds
    Reading temp\temp19.bmp  [Processing] Writing temp\\temp19.dds
    Reading temp\temp2.bmp  [Processing] Writing temp\\temp2.dds
    Reading temp\temp20.bmp  [Processing] Writing temp\\temp20.dds
    Reading temp\temp21.bmp  [Processing] Writing temp\\temp21.dds
    Reading temp\temp22.bmp  [Processing] Writing temp\\temp22.dds
    Reading temp\temp23.bmp  [Processing] Writing temp\\temp23.dds
    Reading temp\temp24.bmp  [Processing] Writing temp\\temp24.dds
    Reading temp\temp25.bmp  [Processing] Writing temp\\temp25.dds
    Reading temp\temp26.bmp  [Processing] Writing temp\\temp26.dds
    Reading temp\temp27.bmp  [Processing] Writing temp\\temp27.dds
    Reading temp\temp28.bmp  [Processing] Writing temp\\temp28.dds
    Reading temp\temp29.bmp  [Processing] Writing temp\\temp29.dds
    Reading temp\temp3.bmp  [Processing] Writing temp\\temp3.dds
    Reading temp\temp30.bmp  [Processing] Writing temp\\temp30.dds
    Reading temp\temp31.bmp  [Processing] Writing temp\\temp31.dds
    Reading temp\temp32.bmp  [Processing] Writing temp\\temp32.dds
    Reading temp\temp33.bmp  [Processing] Writing temp\\temp33.dds
    Reading temp\temp34.bmp  [Processing] Writing temp\\temp34.dds
    Reading temp\temp35.bmp  [Processing] Writing temp\\temp35.dds
    Reading temp\temp36.bmp  [Processing] Writing temp\\temp36.dds
    Reading temp\temp37.bmp  [Processing] Writing temp\\temp37.dds
    Reading temp\temp38.bmp  [Processing] Writing temp\\temp38.dds
    Reading temp\temp39.bmp  [Processing] Writing temp\\temp39.dds
    Reading temp\temp4.bmp  [Processing] Writing temp\\temp4.dds
    Reading temp\temp40.bmp  [Processing] Writing temp\\temp40.dds
    Reading temp\temp41.bmp  [Processing] Writing temp\\temp41.dds
    Reading temp\temp42.bmp  [Processing] Writing temp\\temp42.dds
    Reading temp\temp43.bmp  [Processing] Writing temp\\temp43.dds
    Reading temp\temp44.bmp  [Processing] Writing temp\\temp44.dds
    Reading temp\temp45.bmp  [Processing] Writing temp\\temp45.dds
    Reading temp\temp46.bmp  [Processing] Writing temp\\temp46.dds
    Reading temp\temp47.bmp  [Processing] Writing temp\\temp47.dds
    Reading temp\temp48.bmp  [Processing] Writing temp\\temp48.dds
    Reading temp\temp49.bmp  [Processing] Writing temp\\temp49.dds
    Reading temp\temp5.bmp  [Processing] Writing temp\\temp5.dds
    Reading temp\temp50.bmp  [Processing] Writing temp\\temp50.dds
    Reading temp\temp51.bmp  [Processing] Writing temp\\temp51.dds
    Reading temp\temp52.bmp  [Processing] Writing temp\\temp52.dds
    Reading temp\temp53.bmp  [Processing] Writing temp\\temp53.dds
    Reading temp\temp54.bmp  [Processing] Writing temp\\temp54.dds
    Reading temp\temp55.bmp  [Processing] Writing temp\\temp55.dds
    Reading temp\temp56.bmp  [Processing] Writing temp\\temp56.dds
    Reading temp\temp57.bmp  [Processing] Writing temp\\temp57.dds
    Reading temp\temp58.bmp  [Processing] Writing temp\\temp58.dds
    Reading temp\temp59.bmp  [Processing] Writing temp\\temp59.dds
    Reading temp\temp6.bmp  [Processing] Writing temp\\temp6.dds
    Reading temp\temp60.bmp  [Processing] Writing temp\\temp60.dds
    Reading temp\temp61.bmp  [Processing] Writing temp\\temp61.dds
    Reading temp\temp62.bmp  [Processing] Writing temp\\temp62.dds
    Reading temp\temp63.bmp  [Processing] Writing temp\\temp63.dds
    Reading temp\temp64.bmp  [Processing] Writing temp\\temp64.dds
    Reading temp\temp65.bmp  [Processing] Writing temp\\temp65.dds
    Reading temp\temp66.bmp  [Processing] Writing temp\\temp66.dds
    Reading temp\temp67.bmp  [Processing] Writing temp\\temp67.dds
    Reading temp\temp68.bmp  [Processing] Writing temp\\temp68.dds
    Reading temp\temp69.bmp  [Processing] Writing temp\\temp69.dds
    Reading temp\temp7.bmp  [Processing] Writing temp\\temp7.dds
    Reading temp\temp70.bmp  [Processing] Writing temp\\temp70.dds
    Reading temp\temp71.bmp  [Processing] Writing temp\\temp71.dds
    Reading temp\temp72.bmp  [Processing] Writing temp\\temp72.dds
    Reading temp\temp73.bmp  [Processing] Writing temp\\temp73.dds
    Reading temp\temp74.bmp  [Processing] Writing temp\\temp74.dds
    Reading temp\temp75.bmp  [Processing] Writing temp\\temp75.dds
    Reading temp\temp76.bmp  [Processing] Writing temp\\temp76.dds
    Reading temp\temp77.bmp  [Processing] Writing temp\\temp77.dds
    Reading temp\temp78.bmp  [Processing] Writing temp\\temp78.dds
    Reading temp\temp79.bmp  [Processing] Writing temp\\temp79.dds
    Reading temp\temp8.bmp  [Processing] Writing temp\\temp8.dds
    Reading temp\temp80.bmp  [Processing] Writing temp\\temp80.dds
    Reading temp\temp81.bmp  [Processing] Writing temp\\temp81.dds
    Reading temp\temp82.bmp  [Processing] Writing temp\\temp82.dds
    Reading temp\temp83.bmp  [Processing] Writing temp\\temp83.dds
    Reading temp\temp84.bmp  [Processing] Writing temp\\temp84.dds
    Reading temp\temp85.bmp  [Processing] Writing temp\\temp85.dds
    Reading temp\temp86.bmp  [Processing] Writing temp\\temp86.dds
    Reading temp\temp87.bmp  [Processing] Writing temp\\temp87.dds
    Reading temp\temp88.bmp  [Processing] Writing temp\\temp88.dds
    Reading temp\temp89.bmp  [Processing] Writing temp\\temp89.dds
    Reading temp\temp9.bmp  [Processing] Writing temp\\temp9.dds
    Reading temp\temp90.bmp  [Processing] Writing temp\\temp90.dds
    Reading temp\temp91.bmp  [Processing] Writing temp\\temp91.dds
    Reading temp\temp92.bmp  [Processing] Writing temp\\temp92.dds
    Reading temp\temp93.bmp  [Processing] Writing temp\\temp93.dds
    Reading temp\temp94.bmp  [Processing] Writing temp\\temp94.dds
    Reading temp\temp95.bmp  [Processing] Writing temp\\temp95.dds
    Reading temp\temp96.bmp  [Processing] Writing temp\\temp96.dds
    Reading temp\temp97.bmp  [Processing] Writing temp\\temp97.dds
    Reading temp\temp98.bmp  [Processing] Writing temp\\temp98.dds
    Reading temp\temp99.bmp  [Processing] Writing temp\\temp99.dds
Creating minimap temp\mini.png using the command: nvdxt.exe -file temp\mini.png -dxt1c -nmips 9 -output temp/mini.dds -Sinc -quality_highest
Version 8.30
    Reading temp\mini.png  [Processing] Writing .\temp/mini.dds
Building tiles
Lossless compression of 32x32 tiles: 108974 tiles used of 196608 maximum
Writing tile file  n:\nota_dev_pack\000\SpringData\maps\anyville.sdd\maps\anyville001.smt
Size of vegetation (grass) map in pixels =  196608
Length of minimap data chunk =  699048 , should be equal to 699048
Length of metalmap data chunk 786432
Traceback (most recent call last):
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 919, in <module>
    okbuttonhandler(parser)
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 916, in okbuttonhandler
    compileSMF(parsed_args)
  File "N:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py", line 599, in compileSMF
    smffile.write(struct.pack('< i', tileindices[i]))
KeyError: 147456

n:\nota_dev_pack\000\courses\anyville>pause
Press any key to continue . . .
I upload the 32bit metal map file to same folder.

Code: Select all

n:\nota_dev_pack\tools\springrts_smf_compiler-master\pymapconv.py ^
 -x 240^
 -n -14^
 -o "n:\nota_dev_pack\000\SpringData\maps\anyville.sdd\maps\anyville001.smf"^
 -t "n:\nota_dev_pack\000\courses\anyville\texture_full.bmp"^
 -a "n:\nota_dev_pack\000\courses\anyville\height_full.png"^
 -m "n:\nota_dev_pack\000\courses\anyville\metal32.png"
pause

Result:
  • I have smt and I can test the map from the perspective of gameplay
  • Sadly, bottom of the map is not fully textured (see attached screen - top: in spring, bottom: source texture)
texturingFail.jpg
(61.06 KiB) Not downloaded yet
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: MapConv(NG) for Windows crash on big map sizes

Post by Silentwings »

Ok, that seems to be a genuine error - ill look into it.

I think Behe meant 8 bit per rgb channel -> 24 bits total, or 32 with alpha.
User avatar
PepeAmpere
Posts: 589
Joined: 03 Jun 2010, 01:28

Re: MapConv(NG) for Windows crash on big map sizes

Post by PepeAmpere »

Silentwings wrote: 29 Dec 2018, 08:18 Ok, that seems to be a genuine error - ill look into it.
Hi Silentwings, did you have time to look on that (in case it is not bothering you much)?

Btw to give you some motivation, there are some nice outcomes - WIP version of the new s44 map bringing new gameplay like hilly road fights and utilizing some not often used concepts like trenches and walls is released. Bottom of the map is missing part of the texture but gameplay part is present.

See more at:

https://springfiles.com/spring/spring-maps/anyville
• or https://trello.com/c/zKehFqsB/ (while springfiles are down, now)
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: MapConv(NG) for Windows crash on big map sizes

Post by Silentwings »

Not yet, sorry, but I will do - I've been travelling a lot lately and I can only test maps on my machine at home!
User avatar
Beherith
Posts: 5145
Joined: 26 Oct 2007, 16:21

Re: MapConv(NG) for Windows crash on big map sizes

Post by Beherith »

PyMapConv now has a 64bit binary supporting extreme map sizes (no installation required) built on:
https://github.com/Beherith/springrts_smf_compiler
Post Reply

Return to “Map Creation”