Size of Maps in Different Mapscripts

Snofru1

Emperor
Joined
Dec 29, 2005
Messages
1,356
Location
Germany
I have compared map sizes in the three mapscripts that in my eyes are best suited for use in C2C. This is what I found:

............................Huge......Large....Standard...Small.....Tiny.......Duel
World (Toffer)....................132x88...120x80....108x72...84x56...60x40
PerfectWorld 2f.................120x80.....96x64......72x48...60x40
Tectonics............128x80...104x64.....84x52......64x40...52x32

As you can see there are quite some differences. If you use a small "World" map it will be bigger than a standard PerfectWorld 2f map and even bigger than a large Tectonics map.

Wouldn´t it make sense to align this at least a little bit?
@Toffer90 Would you find it reasonable to change your World mapscript so that current "Large" maps will be called "Huge", "Standard" will be called "Large" and so on? Even then your maps would still have the biggest size compared to the others but they would be close.
 
Last edited:
I think Raxxo and Toffer have talked with each other of this subject and a consensus was reached, iirc. I even think Raxxo made some changes to the map sizes for a more standardized progression. Will need to check the SVN to verify though.

EDIT: Seems he has not done so yet. But I do know they talked about this too. Now if I can remember in which thread the conversation was in. :P

Not being much help am I Snofru. :(
 
Yeah raxxo has held off and I think it's because of another area that needs some work done so he can commit it.

Oops my browser hiccupped on me! Yikes!
 
Yeah, I was working on some other stuff.

Also some map scripts intentionally said, that they were making maps bigger or smaller.

Default grid sizes:
Duel - 10x6
Tiny - 13x8
Small - 16x10
Standard - 21x13
Large - 26x16
Huge - 32x20
Giant - 40x25
Gigantic - 50x30
Multiply by 4 to get map sizes.

I guess I can override those.
 
Last edited:
@Toffer90 Would you find it reasonable to change your World mapscript so that current "Large" maps will be called "Huge", "Standard" will be called "Large" and so on? Even then your maps would still have the biggest size compared to the others but they would be close.
I would rather see the other maps resemble the world mapscript closer in regards to map sizes.

Here's a table over amount of plots by mapsize and maptype.
Code:
         World    Default    Highlands   PM/Terra    Tilted Axis
Duel     2400     960        1664        1536        1024
Tiny     4704     1664       2560        2400        1600
Small    7776     2560       4368        3456        2704
Standa   9600     4368       6656        6144        4096
Large    11616    6656       10240       9600        6400
Huge     13824    10240      14592       13824       10000
Giant    16224    16000      22080       18816       14400
Gigantic 18816    24000      31104       24576       25600

default represent the values set in CIV4WorldInfo.xml

The small is too small and the big is too big in all other mapscripts than 'World' in my opinion.

@raxo2222: If you are going to make changes here, make sure you follow aspect ratio rules that is obviously used in some mapscripts, and don't make any changes to World please.
Tilted axis is supposed to be equally wide as it is high, so it needs to be AxA not AxB.
All maps don't have to be exactly equal in regards to size, but the amount of plots in a map size should not be dramatically different from one script to another.
 
Last edited:
I'm in favor of making C2C_World the standard too.
So change grid size of all mapscripts and make it so:
Duel is Small sized
Tiny - Standard+ sized
Small - Large+ sized
Standard - Huge- sized
Large - Huge+ sized
Huge - Half way between Huge and Giant sized.
Giant - Mostly unchanged
Gigantic - Giant+ sized.

This size flattening could help with balance on largest and smallest maps, as map sizes would be effectively between Small and Giant+ sized.

What do you think about it @strategyonly @Thunderbrd @JosEPh_II ?
With those settings AI would have more space on Duel - Huge map sizes and less space on Gigantic sized map, but that size would be more compatible with memory limitations.

Size defines weren't changed since vanilla and now we have more terrains, features and map resources too.
 
I trust Toffer's judgement here and overall standardizing to his set seems fine to me. I usually play huge but do like it to be on the larger side of the variation range.
 
@Toffer90
I can't find how sizes are defined in following mapscripts:
Archipelago, Balanced, Big and Small, Continents, Custom Continents, Fractal, Full of Resources, Hemispheres, Islands, Planet_Generator_0_68, Shuffle, Smartmap, Tectonics.

Three Planets map sizes are fixed to 35x15 grid (140x60 map size)

Donut and Tilted Axis were square maps, so I readjusted scale.
Total area should be similar.
Code:
def getGridSize(argsList):
   grid_sizes = {
   ## Mini-Map Aspect Ratio kept 1, area should be similar to other map scripts. Average of standard X/Y grid size.
       WorldSizeTypes.WORLDSIZE_DUEL:       (12, 12), 48x48
       WorldSizeTypes.WORLDSIZE_TINY:       (17, 17), 68x68
       WorldSizeTypes.WORLDSIZE_SMALL:       (22, 22), 88x88
       WorldSizeTypes.WORLDSIZE_STANDARD:   (25, 25), 100x100
       WorldSizeTypes.WORLDSIZE_LARGE:       (27, 27), 108x108
       WorldSizeTypes.WORLDSIZE_HUGE:       (30, 30), 120x120
       6:                                   (32, 32),   128x128
       7:                                   (35, 35) 140x140
   }

Otherwise I used World map script sizes.
Code:
def getGridSize(argsList):
   grid_sizes = {
## Mini-Map Aspect Ratio Changed to 1.5
##                       Perhaps change aspect ratio to:
##                                                           1.75,   or 2? Original 1.647540984
       WorldSizeTypes.WORLDSIZE_DUEL:       (15, 10),  60x40
       WorldSizeTypes.WORLDSIZE_TINY:       (21, 14),   84x56
       WorldSizeTypes.WORLDSIZE_SMALL:       (27, 18),  108x72
       WorldSizeTypes.WORLDSIZE_STANDARD:   (30, 20),  120x80
       WorldSizeTypes.WORLDSIZE_LARGE:       (33, 22),  132x88
       WorldSizeTypes.WORLDSIZE_HUGE:       (36, 24),  144x96
       6:                                   (39, 26),   168x84 - giant
       7:                                   (42, 28)  192x96 - gigantic
   }
 
Last edited:
@Toffer90
I can't find how sizes are defined in following mapscripts:
Archipelago, Balanced, Big and Small, Continents, Custom Continents, Fractal, Full of Resources, Hemispheres, Islands, Planet_Generator_0_68, Shuffle, Smartmap, Tectonics.

Three Planets map sizes are fixed to 35x15 grid (140x60 map size)
There may be a default somewhere in the code. Mapscripts that don't define something are usually falling to code defaults. I don't know that for sure here though.

EDIT: If we find there IS a default then I can probably update to the defaults we're determining and then we can just remove those from ALL the mapscripts and voilla we have them all unified.
 
Archipelago, Balanced, Big and Small, Continents, Custom Continents, Fractal, Full of Resources, Hemispheres, Islands, Planet_Generator_0_68, Shuffle, Smartmap, Tectonics.
They use the default values defined in CIV4WorldInfo.xml.

I'm surprised by your question as you recently posted a list of those default values...
Default grid sizes:
Duel - 10x6
Tiny - 13x8
Small - 16x10
Standard - 21x13
Large - 26x16
Huge - 32x20
Giant - 40x25
Gigantic - 50x30
 
They use the default values defined in CIV4WorldInfo.xml.

I'm surprised by your question as you recently posted a list of those default values...
I meant, that they could be overridden in different way.
 
Full of Resources map script is bit weird:
This map script is too clunky with all its options, that appear when you choose that map script.

It has weirdly defined map sizes.
Code:
def getGridSize(argsList):
    if (argsList[0] == -1): # (-1,) is passed to function on loads
        return []

    listSize = [(6,4), (8,5), (10,6), (13,8), (16,10), (21,13), (26,16), (32,20), (38,24)]
    if idMap == "chess" : listSize = [(6,6), (9,6), (15,9), (21,12), (24,15), (27,18), (30,18), (33,21), (36,21), (39,24), (42,24), (45,27), (48,30)]
    elif idMap == "maze" : listSize = [(6,4), (9,4), (10,6), (14,8), (18,10), (24,14)]

    [eWorldSize] = argsList
    iWorldSize = int(eWorldSize)
    if not iWorldSize in range(6) :
                xSize = gc.getWorldInfo(iWorldSize).getGridWidth()
                ySize = gc.getWorldInfo(iWorldSize).getGridHeight()
                if idMap == "chess" :
                        diffAreas = [abs(xSize*ySize - item[0]*item[1]) for item in listSize]
                        tWorldSize = listSize[diffAreas.index(min(diffAreas))]
                else :
                        tWorldSize = (xSize, ySize)
        else :
                # chess, maze have a custom list . inlandsea, lakes are the smallest maps
                if idMap in ["hub", "pangaea", "ring", "wheel"] : iWorldSize += 1
                elif idMap in ["archipelago", "continents", "customcontinents", "fractals", "islands", "shuffle", "bigandsmall", "hemispheres", "mediumandsmall"] : iWorldSize += 2
                elif idMap in ["terra"] : iWorldSize += 3

                tWorldSize = listSize[iWorldSize]

        writeLog("getGridSize", True, [" world entry : %r , world int : %d , grid size : %r" %(eWorldSize, iWorldSize, tWorldSize)])

    return tWorldSize
Also we don't have those two map scripts it mentions..
By the way it mentions map scripts that we don't have (likely vanilla ones) in a lot of places.
That it this map script isn't really compatible with C2C.

I simplified that to this:
Code:
def getGridSize(argsList):
    if (argsList[0] == -1): # (-1,) is passed to function on loads
        return []

    listSize = [(15, 10), (21, 14), (27, 18), (30, 20), (33, 22), (36, 24), (39, 26), (42, 28)]

    [eWorldSize] = argsList
    iWorldSize = int(eWorldSize)
    if not iWorldSize in range(6):
            xSize = gc.getWorldInfo(iWorldSize).getGridWidth()
            ySize = gc.getWorldInfo(iWorldSize).getGridHeight()
            tWorldSize = (xSize, ySize)
        else:
            tWorldSize = listSize[iWorldSize]
    return tWorldSize
It was referring nonexistant map scripts anyway (our ones start with C2C).

It is also giving python errors.
It also doesn't know, that we have Giant and Gigantic sizes for further processing and it somehow made 40x24 map size instead of 60x40.

Planet Generator and Smart Map scripts have ingname option to override map size

Smart map is being funny with generating maps: Duel is 52x20 instead of 60x40.
 
Last edited:
Also we don't have those two map scripts it mentions..
By the way it mentions map scripts that we don't have (likely vanilla ones) in a lot of places.
That it this map script isn't really compatible with C2C.

It was referring nonexistant map scripts anyway (our ones start with C2C).
That mapscript doesn't reference any other mapscripts.
You can delete all the other mapscripts and this script will still work as well as if you hadn't deleted the other scripts.

The thing about that script is that it combines all those scripts into one script in a standalone fashion.
 
Last edited:
That mapscript doesn't reference any other mapscripts.
You can delete all the other mapscripts and this script will still work as well as if you hadn't deleted the other scripts.

The thing about that script is that it combines all those scripts into one script in a standalone fashion.
I meant that it uses names of mapscripts that are in vanilla but not in C2C meaning they could be as well removed to simplify it.

That is Full of Resources, Smartmap and Three Planets don't want to use default sizes.
 
There are too many issues with the Full of resources mapscript though, so I vote to delete it alltogether. Too much work to make it a proper C2C script imo.
Yeah, it would be fine to delete it.

Smartmap can be our universal map script generator along with Planet Generator - both of them allow to choose size of map.

Map area per civ (default):
Code:
Duel     2400/2 = 1200
Tiny     4704/3 = 1569
Small    7776/5 = 1555
Standard   9600/7 = 1371
Large    11616/9 = 1291
Huge     13824/11 = 1257
Giant    16224/13 = 1248
Gigantic 18816/15 = 1254

Old values:
Code:
Duel     960/2 = 480
Tiny     1664/3 = 555
Small    2560/5 = 512
Standard  4368/7  = 624
Large    6656/9 = 740
Huge     10240/11 = 931
Giant    16000/13 = 1231
Gigantic 24000/15 = 1600

This means Duel - Huge map scripts get more land per AI meaning bigger empires, Giant isn't changed much and Gigantic is now not much larger than Giant map now.

Standard now has 4x bigger area than Duel and Gigantic has 2x more area than Standard.

We could pick different player count defaults for Tiny and bigger maps:
Code:
Duel     2400/2 = 1200
Tiny     4704/4 = 1176
Small    7776/6 = 1296
Standard   9600/8 = 1200
Large    11616/10 = 1162
Huge     13824/12 = 1152
Giant    16224/14= 1159
Gigantic 18816/16 = 1176
Notice how size almost linearly increases.
 
Last edited:
Here's two examples of C2C_Full_of_Resources_3_00.py

1. Map option is set to idMap == "maze"
8800_20181208124600_1.jpg
2. Map option is set to idMap == "chess"
8800_20181208125316_1.jpg
 
Last edited:
Here's two examples of C2C_Full_of_Resources_3_00.py

1. Map option is set to idMap == "maze"
View attachment 511429
2. Map option is set to idMap == "chess"
View attachment 511430
Ah so this was what those were referring.

So for example those also were referring options?
Code:
 if idMap in ["hub", "pangaea", "ring", "wheel"] : iWorldSize += 1
                elif idMap in ["archipelago", "continents", "customcontinents", "fractals", "islands", "shuffle", "bigandsmall", "hemispheres", "mediumandsmall"] : iWorldSize += 2
                elif idMap in ["terra"] : iWorldSize += 3

Also I like that now there is 1200 - 1600 tiles per civ depending on chosen map size.
That is smallest map sizes are going to be more fun.

With default civ count being 2/4/6/8.... area per civs is around 1200 tiles.
Also map area increases almost linearly.
 
Last edited:
Back
Top Bottom