Help with very large map

I’ve looked at many threads on this forum about large maps, but many of them are very old, and the rest didn’t seem to help, so I’ve concluded that I’m not understanding something correctly, so would appreciate any tips from the VASSAL gurus!

I’m trying to create a module with a map that is currently a png file which is 32k by 20k pixels. I understand that:
–the file size doesn’t matter, only the pixel dimensions;
–cutting a map up into slices does not reduce the memory footprint; and
–the memory requirements for maps are pixel width x pixel height x 4 (I believe 2.56 GB in my case).

My computer has 64 GB of RAM, so I was thinking that I’d be able to load a pretty large map, but I’ve gotten repeated crashes or out of memory messages. I was able to load a 16k by 8k pixel map pretty easily, but have not been able to load the module when it has the 32k x 20k map after many tries. Here is what I tried:

  1. I tried changing the heap to several values, from 4000 MB up to 16MB…didn’t work, and I often got out of memory errors. My understanding from other threads is that VASSAL needs contiguous memory, so changing the heap to a larger amount may not help if that makes it harder to get a contiguous block? Is that correct?
  2. Turned off the DirectX D3D pipeline (have no idea if this would help/hurt).
  3. Tried launching the module right after rebooting my computer.

Thanks in advance for any tips.

Which max heap setting are you adjusting?

If you haven’t adjusted the max heap for the tiler, then it will be running out of memory before the map ever finishes tiling.

Sorry, I should have mentioned that: I’ve been changing the VASSAL (tiler) heap, rather than the module level heap…the module is not even loading. In the past (with different maps) I’ve gotten out of memory errors after loading the module while trying to launch a specific scenario with a large map, but that is not what is happening now. Right now I’ve got both heaps set to 6000 MB.

Also, one other question: my understanding is that VASSAL maps use RAM, not VRAM, is that correct?

In that case, we need to see an errorLog from a failed run.

Both, but we don’t control the latter.

OK…I submitted a report via a dialog that popped up this morning when I tried with a tiler heap of 16000 MB after a reboot (didn’t work, obviously). Can you work from that report? Otherwise I’m happy to upload the error log a bit later today…should I just paste into the forum, attach the file, or what is best?

Also, you haven’t asked the obvious question of whether I really need such a large map…I think the answer is yes, but perhaps I’m missing something, my understanding of computer graphics is rudimentary. While the map image itself could be of any size, my problem is hex size and the number of hexes required; the counters I’m using are very information-dense and can’t really be smaller than 60px, which seems to require a hex size of approximately 95 px (I could probably make slightly smaller, but that won’t help much). And then I’d like for the (fictional) map to be as large as possible (in hex terms). As I mentioned, I successfully loaded a module with a 16k x 10k map a couple of times without issue, but 32k x 20k has failed repeatedly. Later today I will try 24k x 15k to see what happens.

One more question: can I use SVG files for maps? I understand that it won’t make a difference for heap memory purposes, but the files should be smaller, and dealing with png files this large is a PITA.

Thanks much for helping with this, I realize that this is far from a typical VASSAL install.

OK, the error file was pretty short, so I’m just pasting it here:


2023-11-06 07:30:51,613 [17572-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file D:\Games\VASSAL\modules\Mudan-AW v2 32x20.vmod
2023-11-06 07:31:05,978 [17572-SwingWorker-pool-2-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching D:\Games\VASSAL\VASSAL-3.7.5\jre\bin\java -classpath lib\Vengine.jar -Xmx-2597M -Duser.home=C:\Users\tomre VASSAL.tools.image.tilecache.ZipFileImageTiler D:\Games\VASSAL\modules\Mudan-AW v2 32x20.vmod C:\Users\tomre\AppData\Local\VASSAL\tiles\e05988336bf8e2962079b4baeadd55bde4390b6c 256 256
2023-11-06 07:31:06,038 [17572-ProcessLauncher-1] WARN VASSAL.tools.logging.LoggedOutputStream - Invalid maximum heap size: -Xmx-2597M
2023-11-06 07:31:06,038 [17572-ProcessLauncher-1] WARN VASSAL.tools.logging.LoggedOutputStream - Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
2023-11-06 07:31:06,039 [17572-SwingWorker-pool-2-thread-1] ERROR VASSAL.launch.TilingHandler - Error during tiling
java.io.IOException: EOF before tiler started
at VASSAL.launch.TilingHandler.runSlicer(TilingHandler.java:361)
at VASSAL.launch.TilingHandler.sliceTiles(TilingHandler.java:514)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:316)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:268)
at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:305)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:342)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
2023-11-06 07:31:06,055 [17572-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.TilingHandler - Tiling failed with return value == 1 MaxHeap=-2597 MaxHeapLimit=16000 PhysMemory:65339
2023-11-06 07:31:06,055 [17572-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.TilingHandler - Tiling with -2597 possibly ran out of memory. Retrying tiling with 50% more (-3895).
2023-11-06 07:31:07,777 [17572-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog -
java.util.concurrent.ExecutionException: java.io.IOException: Possibly ran out of memory. Tiling failed with return value == 1
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at java.desktop/javax.swing.SwingWorker.get(SwingWorker.java:612)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.done(AbstractLaunchAction.java:517)
at VASSAL.launch.Editor$LaunchAction$1.done(Editor.java:247)
at java.desktop/javax.swing.SwingWorker$4.run(SwingWorker.java:749)
at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:847)
at java.desktop/sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:857)
at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:311)
at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:243)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.io.IOException: Possibly ran out of memory. Tiling failed with return value == 1
at VASSAL.launch.TilingHandler.sliceTiles(TilingHandler.java:524)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:316)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:268)
at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:305)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:342)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
2023-11-06 07:31:37,269 [17572-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManagerWindow - Exiting


As I mentioned, this is from when I tried starting with a 16000 MB tiler heap right after rebooting; let me know if you’d like an error message from a different setup.

FYI, I was just able to load a module with a 24k x 15k map; both tiler and module heaps were set at 6000 MB. There didn’t seem to be any particular issue. loaded pretty quickly.

Next I’ll try to load the 32k x 20k map again with a smaller tiler heap (8000MB?) after rebooting. But it will be later today, have some other stuff to do…

OK, so I just retried the 32k x 20k map with a tiler heap of 8000 MB after a reboot and purging the tiler cache; didn’t work, here is the error log; I note that both of them say “Invalid maximum heap size”, so neither 8000 nor 16000 MB seem to be valid maximum heap sizes, although 6000 MB has been shown to work (with a smaller map):


2023-11-06 12:04:32,453 [18196-main] INFO VASSAL.launch.StartUp - Starting
2023-11-06 12:04:32,463 [18196-main] INFO VASSAL.launch.StartUp - OS Windows 10 10.0 amd64
2023-11-06 12:04:32,463 [18196-main] INFO VASSAL.launch.StartUp - Java version 21
2023-11-06 12:04:32,463 [18196-main] INFO VASSAL.launch.StartUp - Java home D:\Games\VASSAL\VASSAL-3.7.5\jre
2023-11-06 12:04:32,463 [18196-main] INFO VASSAL.launch.StartUp - VASSAL version 3.7.5
2023-11-06 12:04:32,562 [18196-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager
2023-11-06 12:04:51,986 [18196-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file D:\Games\VASSAL\modules\Mudan-AW v2 32x20.vmod
2023-11-06 12:05:48,095 [18196-SwingWorker-pool-2-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching D:\Games\VASSAL\VASSAL-3.7.5\jre\bin\java -classpath lib\Vengine.jar -Xmx-2597M -Duser.home=C:\Users\tomre VASSAL.tools.image.tilecache.ZipFileImageTiler D:\Games\VASSAL\modules\Mudan-AW v2 32x20.vmod C:\Users\tomre\AppData\Local\VASSAL\tiles\e05988336bf8e2962079b4baeadd55bde4390b6c 256 256
2023-11-06 12:05:48,268 [18196-ProcessLauncher-1] WARN VASSAL.tools.logging.LoggedOutputStream - Invalid maximum heap size: -Xmx-2597M
2023-11-06 12:05:48,268 [18196-ProcessLauncher-1] WARN VASSAL.tools.logging.LoggedOutputStream - Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
2023-11-06 12:05:48,269 [18196-SwingWorker-pool-2-thread-1] ERROR VASSAL.launch.TilingHandler - Error during tiling
java.io.IOException: EOF before tiler started
at VASSAL.launch.TilingHandler.runSlicer(TilingHandler.java:361)
at VASSAL.launch.TilingHandler.sliceTiles(TilingHandler.java:514)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:316)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:268)
at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:305)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:342)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
2023-11-06 12:05:48,291 [18196-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.TilingHandler - Tiling failed with return value == 1 MaxHeap=-2597 MaxHeapLimit=8000 PhysMemory:65339
2023-11-06 12:05:48,291 [18196-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.TilingHandler - Tiling with -2597 possibly ran out of memory. Retrying tiling with 50% more (-3895).
2023-11-06 12:05:49,004 [18196-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog -
java.util.concurrent.ExecutionException: java.io.IOException: Possibly ran out of memory. Tiling failed with return value == 1
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at java.desktop/javax.swing.SwingWorker.get(SwingWorker.java:612)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.done(AbstractLaunchAction.java:517)
at VASSAL.launch.Editor$LaunchAction$1.done(Editor.java:247)
at java.desktop/javax.swing.SwingWorker$4.run(SwingWorker.java:749)
at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:847)
at java.desktop/sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:857)
at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:311)
at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:243)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.io.IOException: Possibly ran out of memory. Tiling failed with return value == 1
at VASSAL.launch.TilingHandler.sliceTiles(TilingHandler.java:524)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:316)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:268)
at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:305)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:342)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)


Last post for awhile; I tried the 32k x 20k map again (after reboot and tile cache purge) with a 6000 MB tiler heap; I got another “Invalid maximum heap size” message, even though 6000MB worked with a smaller map, so perhaps “invalid” means “insufficient,” dunno…


2023-11-06 12:34:19,395 [16016-main] INFO VASSAL.launch.StartUp - Starting
2023-11-06 12:34:19,404 [16016-main] INFO VASSAL.launch.StartUp - OS Windows 10 10.0 amd64
2023-11-06 12:34:19,404 [16016-main] INFO VASSAL.launch.StartUp - Java version 21
2023-11-06 12:34:19,404 [16016-main] INFO VASSAL.launch.StartUp - Java home D:\Games\VASSAL\VASSAL-3.7.5\jre
2023-11-06 12:34:19,404 [16016-main] INFO VASSAL.launch.StartUp - VASSAL version 3.7.5
2023-11-06 12:34:19,514 [16016-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager
2023-11-06 12:34:31,389 [16016-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file D:\Games\VASSAL\modules\Mudan-AW v2 32x20.vmod
2023-11-06 12:36:18,464 [16016-SwingWorker-pool-2-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching D:\Games\VASSAL\VASSAL-3.7.5\jre\bin\java -classpath lib\Vengine.jar -Xmx-2597M -Duser.home=C:\Users\tomre VASSAL.tools.image.tilecache.ZipFileImageTiler D:\Games\VASSAL\modules\Mudan-AW v2 32x20.vmod C:\Users\tomre\AppData\Local\VASSAL\tiles\e05988336bf8e2962079b4baeadd55bde4390b6c 256 256
2023-11-06 12:36:18,569 [16016-ProcessLauncher-1] WARN VASSAL.tools.logging.LoggedOutputStream - Invalid maximum heap size: -Xmx-2597M
2023-11-06 12:36:18,569 [16016-ProcessLauncher-1] WARN VASSAL.tools.logging.LoggedOutputStream - Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
2023-11-06 12:36:18,570 [16016-SwingWorker-pool-2-thread-1] ERROR VASSAL.launch.TilingHandler - Error during tiling
java.io.IOException: EOF before tiler started
at VASSAL.launch.TilingHandler.runSlicer(TilingHandler.java:361)
at VASSAL.launch.TilingHandler.sliceTiles(TilingHandler.java:514)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:316)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:268)
at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:305)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:342)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
2023-11-06 12:36:18,594 [16016-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.TilingHandler - Tiling failed with return value == 1 MaxHeap=-2597 MaxHeapLimit=6000 PhysMemory:65339
2023-11-06 12:36:18,595 [16016-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.TilingHandler - Tiling with -2597 possibly ran out of memory. Retrying tiling with 50% more (-3895).
2023-11-06 12:36:18,830 [16016-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog -
java.util.concurrent.ExecutionException: java.io.IOException: Possibly ran out of memory. Tiling failed with return value == 1
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at java.desktop/javax.swing.SwingWorker.get(SwingWorker.java:612)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.done(AbstractLaunchAction.java:517)
at VASSAL.launch.Editor$LaunchAction$1.done(Editor.java:247)
at java.desktop/javax.swing.SwingWorker$4.run(SwingWorker.java:749)
at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:847)
at java.desktop/sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:857)
at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:311)
at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:243)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.io.IOException: Possibly ran out of memory. Tiling failed with return value == 1
at VASSAL.launch.TilingHandler.sliceTiles(TilingHandler.java:524)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:316)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:268)
at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:305)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:342)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
2023-11-06 12:37:41,830 [16016-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManagerWindow - Exiting


Your first problem is that you have -2597 as your max heap size for the tiler. I’m surprised that it accepts nonpositive numbers.

Something weird is going on. If I set my Tiler heap size to 1234MB, the generated Tiler command is

2023-11-07 07:55:41,103 [19696-SwingWorker-pool-2-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching C:\Program Files\VASSAL-3.7.5\jre\bin\java -classpath lib\Vengine.jar -Xmx372M -Duser.home=C:\Users\beast VASSAL.tools.image.tilecache.ZipFileImageTiler D:\Data\Vassal\Modules\Test\FoF_All_Volumes_v3.2.03D_Public.vmod

The max heap for the tiler is the maximum max heap. It’s not the first max heap that’s triied.

1 Like

I am absolutely positive that the numbers I’ve indicated are what were entered in the text box for JVM maximum heap (in MB); I can post a screenshot if you’d like. I have not entered any negative numbers, ever. I checked this number every time I tried loading the module (about 20 times now), so I’m pretty confident about this. Unless we are talking about totally different settings, of course…

I’d like to see a screenshot.

Coming right up; this is one example–as I’ve mentioned I’ve tried various settings but it was ALWAYS positive numbers like this.

I know what’s going wrong. The number of bytes in your raw image data overflows a Java int, which has a maximum value of 2^31-1. (This is 2 560 000 000 vs 2 147 483 647.)

Does that mean that the size of a map image file must be less than 4 GB?

ooh, that doesn’t sound good!

Does that max tile heap number apply to all images in the games (counters, charts, etc), or just the maps which are being tiled?

No, the file size is unrelated. This is about the number of pixels.

This affects maps only.

1 Like