1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Size of Maps in Different Mapscripts

Discussion in 'Civ4 - Caveman 2 Cosmos' started by Snofru1, Dec 7, 2018 at 7:07 AM.

  1. Snofru1

    Snofru1 Chieftain

    Joined:
    Dec 29, 2005
    Messages:
    990
    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: Dec 7, 2018 at 11:45 AM
  2. JosEPh_II

    JosEPh_II TBS WarLord

    Joined:
    Jun 20, 2007
    Messages:
    14,352
    Gender:
    Male
    Location:
    Western IL. cornfields
    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. :(
     
  3. Snofru1

    Snofru1 Chieftain

    Joined:
    Dec 29, 2005
    Messages:
    990
    Location:
    Germany
    Thank you anyway! I also vaguely remembered this discussion but the data above was taken from current SVN so I guess the changes are not implemented yet.
     
  4. JosEPh_II

    JosEPh_II TBS WarLord

    Joined:
    Jun 20, 2007
    Messages:
    14,352
    Gender:
    Male
    Location:
    Western IL. cornfields
    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!
     
    raxo2222 likes this.
  5. raxo2222

    raxo2222 Warlord

    Joined:
    Jun 10, 2011
    Messages:
    3,608
    Location:
    Poland
    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: Dec 7, 2018 at 12:17 PM
  6. Toffer90

    Toffer90 C2C Modder

    Joined:
    Oct 16, 2011
    Messages:
    4,827
    Location:
    Norway
    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: Dec 7, 2018 at 2:04 PM
    raxo2222 and KaTiON_PT like this.
  7. KaTiON_PT

    KaTiON_PT Chieftain

    Joined:
    Jan 2, 2010
    Messages:
    678
    Location:
    Portugal
    I'm in favor of making C2C_World the standard too.
     
  8. raxo2222

    raxo2222 Warlord

    Joined:
    Jun 10, 2011
    Messages:
    3,608
    Location:
    Poland
    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.
     
  9. Thunderbrd

    Thunderbrd C2C War Dog

    Joined:
    Jan 2, 2010
    Messages:
    23,441
    Gender:
    Male
    Location:
    Las Vegas
    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.
     
  10. raxo2222

    raxo2222 Warlord

    Joined:
    Jun 10, 2011
    Messages:
    3,608
    Location:
    Poland
    @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: Dec 8, 2018 at 5:38 AM
  11. Thunderbrd

    Thunderbrd C2C War Dog

    Joined:
    Jan 2, 2010
    Messages:
    23,441
    Gender:
    Male
    Location:
    Las Vegas
    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.
     
    KaTiON_PT likes this.
  12. Toffer90

    Toffer90 C2C Modder

    Joined:
    Oct 16, 2011
    Messages:
    4,827
    Location:
    Norway
    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...
     
  13. raxo2222

    raxo2222 Warlord

    Joined:
    Jun 10, 2011
    Messages:
    3,608
    Location:
    Poland
    I meant, that they could be overridden in different way.
     
  14. raxo2222

    raxo2222 Warlord

    Joined:
    Jun 10, 2011
    Messages:
    3,608
    Location:
    Poland
    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: Dec 8, 2018 at 6:29 AM
  15. Toffer90

    Toffer90 C2C Modder

    Joined:
    Oct 16, 2011
    Messages:
    4,827
    Location:
    Norway
    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: Dec 8, 2018 at 6:44 AM
  16. raxo2222

    raxo2222 Warlord

    Joined:
    Jun 10, 2011
    Messages:
    3,608
    Location:
    Poland
    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.
     
  17. Toffer90

    Toffer90 C2C Modder

    Joined:
    Oct 16, 2011
    Messages:
    4,827
    Location:
    Norway
    No, it is not mentioning any other mapscripts. Those are map options for the C2C_Full_of_Resources_3_00 script.
     
    Last edited: Dec 8, 2018 at 6:44 AM
  18. raxo2222

    raxo2222 Warlord

    Joined:
    Jun 10, 2011
    Messages:
    3,608
    Location:
    Poland
    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: Dec 8, 2018 at 7:17 AM
  19. Toffer90

    Toffer90 C2C Modder

    Joined:
    Oct 16, 2011
    Messages:
    4,827
    Location:
    Norway
    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: Dec 8, 2018 at 6:55 AM
    raxo2222 likes this.
  20. raxo2222

    raxo2222 Warlord

    Joined:
    Jun 10, 2011
    Messages:
    3,608
    Location:
    Poland
    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: Dec 8, 2018 at 7:21 AM

Share This Page