Brad Wardell's site for talking about the customization of Windows.
What you need to know
Published on February 14, 2018 By Frogboy In GalCiv III Dev Journals

One of the biggest challenges we have faced in developing Galactic Civilizations III has been map sizes and the memory they require.

On a number of occasions, we have tried to reduce the the largest map sizes down to improve performance and shrink memory requirements.  And each time we have attempted to do that, we have ended up with a very vocal outcry of anger.

But large map sizes come with a significant memory cost to be aware of.

Galactic Civilizations, like its inspiration, Sid Meier's Civilization, is a tile based game.   Virtually every space strategy game is point based (you travel across the galaxy from point A to point B without going in-between). There's a good reason why they do that: scale.  If you want your space game to appear to have an epic scale, then you need to have stars that appear to be very far from one another.  For Galactic Civilizations to pull off the same thing, as a tile based game, means a lot more tiles and a lot faster (late game) ships.

For reference, here are the map sizes for Civilization VI:

Size Dimensions Players (Default/Maximum) City-States (Default/Maximum) Total Tiles
Duel 44×26 2/4 3/6 1144
Tiny 60×38 4/6 6/10 2280
Small 74×46 6/10 9/14 3404
Standard 84×54 8/14 12/18 4536
Large 96×60 10/16 15/22 5760
Huge 106×66 12/20 18/24

6996

The largest map size would require around 2GB of memory (on average). So, the largest map size in Civilization VI has around 7,000 hexes. 

Let's take a look at Galactic Civilizations III:

Map Size Players (rec) RAM Req (MB) Tiles
Tiny                       3                       967                   2,037
Small                       4                    1,483                   4,157
Medium                       5                    1,939                   6,495
Large                       7                    2,903                12,731
Huge                       9                    3,925                21,044
Gigantic                     12                    5,544                37,412
Immense                     16                    7,246                58,457
Excessive                     32                  16,647              233,827
Ludicrous                     50                  30,729              649,519

That's right, the Ludicrous map size has 100 times more tiles than the largest Civilization VI map.  More tiles isn't better, it just means the maps are much bigger and more to the point, and the memory requirements go way up.

Until you get to HUGE map sizes, you don't really need a crazy system to play Galactic Civilizations III.  But what frequently happens is that people with perfectly good gaming systems will paly on the Ludicrous size and find it very slow. Why? Because you need 32GB of memory to play it well (or else you'll be swapping out memory constantly to disk).

Even if you have enough memory, picture the pathfinding for 50 players (and GalCiv III supports 128 players) if there's 650,000 tiles to potentially go through.  Path finding is what most of your turn time gets consumed by. 

Luckily, GalCiv III has a multicore AI which means that each pathfinding task can be distributed to your CPU.  But again, even if you have 32GB of memory, if you have 50 players but only a 4 core processor, you're going to be in for a world of hurt.

For optimal performance, you shouldn't have more than 2 players per logical processor (usually 2X your cores).  So if you have an 8 core machine with 16 logical threads, you're probably fine with 32 players.

However, I frequently get saved games from players who have 4 core machines with 8GB of memory trying to play on these ludicrous maps with 100 players who have given us a negative review because "obviously" we have a memory leak.

Going forward, I highly recommend not going beyond Gigantic unless you meet the specs above.  In version 3.0, we will be listing these requirements when you pick the map size to help players keep themselves out of trouble.

So now you know why we keep trying to roll back those big maps.


Comments (Page 5)
5 PagesFirst 3 4 5 
on Feb 28, 2021

I liked the way that Star Wars: Empire at War did it; each planet/star system was a build tile where you could build things, then it was connected to the local planets by traversible routes, which you couldn't stop midtransit. Some were hyperlanes that you could travel faster on. I wouldn't want the same exact system, perhaps more freedom of where you can build and so forth, but I think it would provide a basis for reducing memory load. It would also help make things a bit more defensible - something I'm finding pretty hard at the moment.

on Mar 01, 2021

This game mechanic have its advantage - like it in SW:EaW self, but here it is at lore not possible to going in the space between planet systems - so here it make sense ....

For GC3 i am happy to have the option to going in the space between .... but i think only, as the planet systems self are to limited (small/uninteresting) so nothing from value i get from the planet system self ...

The same problem have Stellaris - one of the reasons i stop playing it ....

The planet system self is an big space - but you cant build things like you will - as it was before 2.x - here you can build bases anywear in the system ... (now after 2.x you musst build an defence station always in the centre - limit the strategic posibilitys heavy)

This is the reason my all-time-top 4X SpaceStrategic game is still SpaceEmpire 5 (with mods)

Here you have the limited game mechanic like in stellaris and SW:EaW that the space between the systems cant be reached...

But you have "in" the planet system an Hex field so you can build a base where you like .... place resource stations where you like, with mods even in nebulae and asteroid fields ... so much more options ...

But i have no problem with an full open space (as in GC3 and Distant Universe) too ....

on Jun 19, 2021

Old-Spider

x = HexSectorSize

Total Hexes = 3x^2 + 3x +1

 

 

It's exactly the right formula. HexSectorSize is the radius of galaxy minus 1 (the central hex) and also the galaxy's edge length minus 1 ('cause first hex is also the last of previous edge)

Here a little explanation of where the formula comes from and an update with the latest MapSizeDefs.xml:

To know how many hexs counts my galaxy, I've to calculate my central hex (1) plus the number of hexs added by each ring of hexs from the centrum to the last edge. We can quickly see that each new ring adds 6 hexs more than the previous ring.

So first ring (2) brings 6 hexs (6 because central poly is an hexagone), second ring (3) 12 hexs, third ring 18 and so on.

We can write 1 hex (central hex) + 6 x 1 (first ring) hex + 6 x 2 (second ring) hex + ... + 6 x n (n = number of rings) hex

To simplify, we have 1 hex + 6 x ( 1+2+...+n) hex = total number of hexs in given galaxy

To know what gives 1+2+3+...+n where n could be egal to 1 million if we want, the best way is to consider it like a stair and use geometry.

Then, for example 1+2+3+4 : 

 

When I add a copy of my stair upon the initial stair I get a rectangle of 4 x 5 squares. The principle is to determinate dimensions of our rectangle, I've to take the highest number of my initial stair (here 4) and multiply by itself plus 1 because to make match my stairs and form the rectangle, I have to add a column or a line (here a line). It gives 4 x 5.

Now to come back to the right number of squares in my initial stair, I have to divide by 2 because before I doubled the number of stairs (initial + copy). Just like if you wanted split a rectangle into two egal triangles.

To translate into equation: 1+2+3+4 = (4 x (4+1)) / 2 = 10 (you can count each squares, that's right)

With n: 1+2+3+...+n = (n x (n+1)) / 2

The full equation is 1 (central hex) + 6 (because hexagonal) x (n x (n+1)) / 2 (n is the number of rings) = total number of hexs in galaxy.

We get: 1 + 3 x (n x (n+1)) or simplified 1 + 3n² + 3n

Practical example: Tiny galaxy has 32 HexSectorSize ( =number of rings of hexs)

so you can choose: 3 x 32 ² + 3 x 32 + 1 =  3072 + 96 + 1 = 3169 hexs in tiny galaxy

                          or: 1 + 6 x (32 x (32+1)) /2 = 1+ 3 x 32 x 33 = 3169 hexs (this one is easier to write in your calculator)

Now the table for each galaxy size:

 

Denomination               HexSectorSize             Tiles number

 

Tiny                               32                                   3169 hexs

Small                             50                                   7651 hexs

Medium                        64                                  12481 hexs 

Large                             90                                  24571 hexs

Huge                             120                                43561 hexs

Gigantic                         180                                97741 hexs

Immense                        250                              188251 hexs

Excessive                        400                              481.201 hexs

Insane                             524 (a lot of rings)      825301 hexs

 

I guess if you conquer the full galaxy you become the Lord of the rings. Cheers

5 PagesFirst 3 4 5