Map Sizes

using civ5 firetuner and opening the Autoplay.ltp panel that is in the game's debug folder.
 
Update: I tried 240x150 on minimum memory usage and it crashed at 2 GB system RAM usage because it maxed out my video card's 3 GB of VRAM. If I can get it to crash for a reason other than using up my video card memory I may try looking at the disassembly of the dump to see if there is some obvious limit in the binaries. Also if someone has a GTX 1080 or 1070 with 8GB of VRAM and 16+ GB of system RAM it would be nice if they could test a very large map.

I tried to also load a 240x150 map and after 9mins of loading time it CTD!

My specs are in my sig to save me time writing them out since we are testing things quite a bit.
 
More Test Results

150x82
Type: Continent
Speed: Epic
Civ: France
Game Seed: 587872199
Map Seed: 587872200

With Barbs:
Load Time: 1:14m
Turns 0 - 27 (1 Civ, 1 CS) = 7s
Turn 28 (1 Civ, 1 CS, 1 Barb Camp) = 30s
Turn 29 (1 Civ, 1 CS, 2 Barb Camps) = 40s
Turn 30 (1 Civ, 1 CS, 2 Barb Camps) = 47s

Without Barbs
Load Time: 1:14m
Turn 0 - 30 (3 Civs, 3 CS) = 7s

Figures in brackets are the number of players/barbs found on the map

Based on my crude testing above, it seems that barbarians are indeed the slowdown in turn times. Judging by my previous games, as the turns progress the waiting time also does with my turns taking around 1-2 mins when in the 70ish turn.
 
Last edited:
I tried to also load a 240x150 map and after 9mins of loading time it CTD!

My specs are in my sig to save me time writing them out since we are testing things quite a bit.
OK yeah it is a software limit. Could you upload the dump file of that so I can take a look?
 
I would diffidently be interested in larger maps size. Huge is too small for the amount of civs provided i found it cramped.
 
Could you upload the dump file of that so I can take a look?

As I have never looked at these files, where are they normally located and would it override if I start new games?
 
What a fabulous thread. Kudos to all who are testing! :thumbsup:
 
As I have never looked at these files, where are they normally located and would it override if I start new games?
They are in the executable folder (Sid Meier's Civilization VI\Base\Binaries\Win64Steam). They are overwritten every time you crash as far as I can tell.
 
They are in the executable folder (Sid Meier's Civilization VI\Base\Binaries\Win64Steam). They are overwritten every time you crash as far as I can tell.

Alright, I have a dump. 230x116 worked fine. 230x118 crashed to desktop. I used CrancK's (thanks!) mod since changing the map.xml file directly didn't seem to do anything.

How do I tell where it crashed? Or alternatively how do I quickly view and redact the dmp file?

P.S. I was only using like 3.4GB of system ram and 600MB of graphics card ram when it crashed. I have 16GB system and 8GB graphics.
 
Last edited:
239 turns so far on auto play on a 230x115 map with 32 civs and some CS, no crash so far, seems stable

launched ~3h25 ago for reference

turn 238 (1640 AD) took 1mn50s

:goodjob:

Now running for 14h20, turns 472 (2035 AD)

Each turn takes 4 minutes.

For reference :
CPU : i7 4770K / RAM : 16 GB / GPU : gtx 980ti
 
Okay everyone, I've discovered a bit about resource generation for maps! Long story short, resource generation appears to keep up with customized increased map sizes! This is great news, because IIRC it wasn't the case in Civ 5, where increased map sizes resulted in pretty barren land.

Methods: I tested on Pangaea only, low water, abundant resources. I tested duel, huge, and a customized huge (141 x 88). Disclaimer: I could not figure out how to get a log listing the resources as Gedemon pointed out, so I counted by hand. This can result in error. Please keep this in mind.

  • COPIES of luxuries scale directly with map size. On a duel map, each luxury gets about 7 copies. On a huge map, there are roughly 10 copies of each luxury on the normal sized continent. One smaller continent gets only about 3 copies, and the other continent with 3 luxuries only gets 1 copy. On the customized huge map, this resulted in up 20 copies of each luxury on normal sized maps.
  • Strategic and bonus resources scale directly with map size as well. Example: Duel gets about 20 crabs. Huge gets about 114 crabs. My modified huge ended up with around 150 crab.
  • The amount of unique luxuries generated is tied to continents, and the maximum observable amount of unique luxuries a continent can have is 4. A normal-sized continent gets 4 unique luxuries, this goes for DUEL and HUGE sized pangaea. Increasing map size does NOT result in a continent with more than 4 unique luxuries. Duel maps specifiy 1 continent, so there are 4 unique luxuries. Huge pangaea maps generate 6 continents. 4 are normal-sized and get this distribution. 1 continent is smaller and gets 4 luxuries as well but with fewer copies. Another continent is even smaller and only gets 3 luxuries.
There are of course some things I have no clue about despite testing:

  • Altering the amount of continents per map is...interesting. Let's look at a duel map: 4 luxuries, 7 copies each, 1 continent. Making it have 2 continents results in one continent with 4 luxuries and 5-6 copies each, and a second continent with 4 luxuries but only 2 copies each.
  • Increasing a huge map from 6 continents to 8 continents results in two continents with ZERO luxuries, but apparently normal bonus and strategic distribution. Two continents can never share luxuries, even if the amount of continents and map size in the game push it beyond the max of 24 luxuries.
  • There is a line of code in ResourceGenerator.Lua that references default player size: self.iLuxuriesThisSizeMap = GameInfo.Maps[Map.GetMapSize()].DefaultPlayers * 2. This equation however lines up with what we observe. A duel map has a default of 2 players and so gets 4 unique luxuries (with 1 continent), and a huge map has 12 default players and gets 24 luxuries (with 6 continents). Changing the 2 to another number did not result in observable changes. Changing map sizes in maps.xml and mapsize.xml did not result in observable changes either.
If I could figure out how to get this data spit out into a log or something, it'd be much more concrete. I hope this can serve as a rough first step into figuring out how the game handles resource generation, and potentially how to force continents to generate more or less than 4 unique luxuries, etc.
 
Alright, I have a dump. 230x116 worked fine. 230x118 crashed to desktop. I used CrancK's (thanks!) mod since changing the map.xml file directly didn't seem to do anything.

How do I tell where it crashed? Or alternatively how do I quickly view and redact the dmp file?

P.S. I was only using like 3.4GB of system ram and 600MB of graphics card ram when it crashed. I have 16GB system and 8GB graphics.

The dump file contains, in this case, the contents of the stack and the relevant heap structures when the program crashed. Normally it isn't too useful without debug information for the program (which we will get if Firaxis gives us the DLL source soon), but I'm mostly just curious if it is crashing due to a limit in the DLL or elsewhere, which I can ascertain by looking at the provided disassembly in Visual Studio.
 
The dump file contains, in this case, the contents of the stack and the relevant heap structures when the program crashed. Normally it isn't too useful without debug information for the program (which we will get if Firaxis gives us the DLL source soon), but I'm mostly just curious if it is crashing due to a limit in the DLL or elsewhere, which I can ascertain by looking at the provided disassembly in Visual Studio.

I think there's a cap on how much memory it will request but improperly tries to keep writing outside of that when we boost the map size.

upload_2016-10-23_11-39-31.png


Full explanation of the exception is 'The thread tried to read from or write to a virtual address for which it does not have the appropriate access.'

There's a ton of modules open. You'll have to tell me how to tell me how to figure out if the bad write is coming from a specific dll function.
 
I think there's a cap on how much memory it will request but improperly tries to keep writing outside of that when we boost the map size.

View attachment 456305

Full explanation of the exception is 'The thread tried to read from or write to a virtual address for which it does not have the appropriate access.'

There's a ton of modules open. You'll have to tell me how to tell me how to figure out if the bad write is coming from a specific dll function.

Not quite, it probably is crashing due to memory issues, but that error is very generic. Are there GameCoreDLL functions in the call stack?
 
Question if i make a copy of that file and put it on the mods folder and make the change, would the game recognize that file or does it require something more than just that.

That isn't a good sign. Although it is not impossible that it is still a DLL-fixable thing due to how Firaxis memory management works.

How would an issue like that be fixable?
 
Last edited:
Is windows error reporting really that bad? This isn't just accessing element n+1 of an n element array and hitting some security feature? Can we patch the exe in memory? I know **** all about windows.
 
Question if i make a copy of that file and put it on the mods folder and make the change, would the game recognize that file or does it require something more than just that.



How would an issue like that be fixable?
Short answer is that in Civ 5 memory allocation was done through firaxis macros which gave pools to various modules, so to allocate memory in the dll you didn't malloc or free you used FNEW (or something) and the exe actually gave you the memory. So if that is the case and the DLL is allocating only so much memory for tiles changing the DLL source would fix it but without the PDB for the dll the crash would still appear to be in the Civ 6 exe.
 
Back
Top Bottom