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

choke point mini mod

Discussion in 'Civ4 - Fall from Heaven' started by dreiche2, Mar 11, 2007.

  1. dreiche2

    dreiche2 Prince

    Joined:
    Apr 9, 2003
    Messages:
    320
    I expanded a little bit on the choke point algorithm I used once in my flavor scripts. This little module searches for choke points on the current map, evaluates their 'chokiness' using a custom algorithm, and then places forts on the better choke points.

    Choke value:

    The idea is that a choke point between two areas is the better the "longer you have to walk" around the blocking tiles until you get from on to the other side. Starting towards an free tile from the choke point, the algorithm counts the number of steps necessary to get back to the choke point while clinging to the blocking tiles at its right hand side. If the choke point hasn't been reached after CHOKE_FORT_MAX_WALK steps, it aborts and the latter value is taken as result.
    Then it does the same with starting in the opposite direction. The choke point value is then the minimum of the two step counts.

    Note: When the choke points sits on a land bridge that separates two areas of land, the step count obtained from the above algorithm will be an approximate measure for the size of the separated areas. Hence, also here it can be seen as an appropriate measure for the qualitiy of the choke point.

    For further details, see selected comments from the script in the spoiler:

    Spoiler :
    FILE: ChokeFortModule.py
    VERSION: 1.00
    AUTHOR: David Reichert (dreiche2)
    PURPOSE: Find good choke points and place forts on them.

    DESCRIPTION:
    This module provides a function placeForts(), which will place forts on choke points, i.e. land bridges, mountain passes, etc. It could for example be called from within a map script or from within inititialization procedures of a mod. The script searches for the choke points and examines them for their 'choke value', see below. It will start with the best choke points, and the minimal valid choke value and the minimal distance between forts can be set via global parameters.

    A plot is defined as choke point in 6 different situations:
    (the central plot is the choke point, x is blocking, o is land, in u there must be at least one land per area)

    1 2
    uuu uxu
    xox uou
    uuu uxu

    3 4 5 6
    oxx xxo xuu uux
    xou uox xou uox
    xuu uux oxx xxo




    Details of the algorithm:

    When talking about "right" and "left", this is always meant relative to the direction the 'walker' is currently facing:

    nortwest north northeast
    west 0 east
    southwest south southeast

    left front left front

    back left / front right

    back back right right

    Run I:
    start:
    -face east
    -if not blocked:
    *while front right is free, turn front right
    -else:
    *turn front left until front is free
    (#front right is blocked now#)
    -go front, save this initial direction
    walk:
    -while current position != starting point and steps <= max steps
    *if last step was diagonal:
    +face right
    *else:
    +face front right (#asymmetry comes from quadratic map grid#)
    (#front right is blocked now#)
    *while front is blocked, turn front left
    *go front, steps=steps+1

    Run II:
    as Run I, but in beginning face in opposite direction from Run I initial direction



    Proof that this algorithm works: Proven by example ;)



    screens:




    The icy spots mark the tiles the algorithm "walked". They are shown for debugging reasons only, of course, and will not be placed normally.

    Installation:


    To try it out, you'll have to replace one of the default FfH files with one provided.

    download:
    View attachment ChokeFortModule.zip

    There are two files in the archive, ChokeFortModule.py and a modified CvEventManager.py, the latter for FfH 0.21

    1. Go to Mods/<current FFH dir>/Assets/python/
    2. Backup the file CvEventManager.py so that you can do undo the changes!
    3. Extract the archive here. In the end, you should have the module file and the modified event manager file in this directory. Note that the modified file just has two additional lines: one imports the module, the other one calls the placeForts() function.

    Note 1: For new FfH versions, the event manager file possibly has to be updated.

    Note 2: I think sometimes forts still get placed at not so great spots, although not often. I'm currently out of time to search for the reason, but it's not that bad, anyway.
     
  2. dreiche2

    dreiche2 Prince

    Joined:
    Apr 9, 2003
    Messages:
    320
    general thoughts:

    I've chosen the forts for the choke points because they seem to be underused, and they somehow fit (they could be ancient forts just like there are ancient towers). Still, with 25% defensive bonus, they're not that great.

    Some things to think about:

    1. Increase fort defense bonus.
    2. Maybe place a resource at the choke points so that the AI guards them. Maybe a new one, related to trade/tolls or something, maybe one that actually needs forts as improvement to be harvested...
    3. Something else for the choke points, some sort of natural defenses, whatever...
     
  3. seZereth

    seZereth FfH´s art monk(ey)

    Joined:
    Feb 3, 2006
    Messages:
    3,900
    Location:
    Bayreuth
    That sounds and looks great, i also appreciate your ideas!
     
  4. eerr

    eerr Emperor

    Joined:
    May 27, 2006
    Messages:
    1,077
    maybe.. a rescource that gives trade routes? lol
     
  5. Go Boks

    Go Boks Prince

    Joined:
    Mar 5, 2007
    Messages:
    340
    Maybe a goodie hut inside?

    It would be cool if Doviello style barbarian units, as opposed to Orcs, occupied them. Sort of an ice age hold over that never got big enough to start a civ. Maybe a warrior or two to guard the fort, and a horseman or two to send out raiding parties? If you had the map place these units, you might not need a resource at all as you would have to take them out to move through the choke point.

    Another thought on forts in general to make them more useful. Make them buildable anywhere. If it is connected to your trade network, any units inside don't have a unit supply cost. Maybe also give it zone of control from previous Civ games?

    Otherwise, you could make them work like colonies from Civ 3.
     
  6. Sureshot

    Sureshot Goddess

    Joined:
    Feb 2, 2006
    Messages:
    3,771
    great idea, was missing this from your previous flavour maps. its a shame that the old Tower resources can't be used for that anymore, the AI was great at building forts on the chokepoint sentry towers and guarding them.
     
  7. Thennorin

    Thennorin Chieftain

    Joined:
    Oct 15, 2006
    Messages:
    84
    Great idea! But given the sheer number of threads and suggestions on how to improve forts and the distinct lack of trialling any of them, I don't think they're going to be useful any time soon :sad: Still, if ever they are I'll grab this script immediately. Thanks!
     
  8. Chandrasekhar

    Chandrasekhar Determined

    Joined:
    Mar 30, 2006
    Messages:
    4,415
    Location:
    Seattle, WA
    Wow, that's a nifty feature.
     
  9. dreiche2

    dreiche2 Prince

    Joined:
    Apr 9, 2003
    Messages:
    320
    The thing with the choke points is to 50% a proof of concept, something I wanted to try out for quite some time... we'll have to see if something really useful comes out of it. Maybe the code could also be used for strategical considerations of the AI, without necessarily placing anything on the plots...
     
  10. onedreamer

    onedreamer Dragon

    Joined:
    Oct 21, 2004
    Messages:
    6,580
    Location:
    Torino - Italia
    completely off topic, but where did you get that retreating-ice terrain I see in the screenshots ?
     
  11. dreiche2

    dreiche2 Prince

    Joined:
    Apr 9, 2003
    Messages:
    320
    That's simply what it looks like when you place the ice 'feature' on those terrains... I think usually it's only on oceans? That's also why it looks 'retreating', it intersects with land tiles, which apparently have the same height.
     
  12. Go Boks

    Go Boks Prince

    Joined:
    Mar 5, 2007
    Messages:
    340
    Might be worth remembering that if the team ever decides to implement a retreating ice caps as the Age of Ice ends concept to preserve unexplored wilderness for the mid to late game. You would also have to make ice an impassable terrain.
     
  13. Bad Player

    Bad Player Deity

    Joined:
    Oct 31, 2005
    Messages:
    3,531
    Location:
    (Bris)Vegas!
    It would make sense from a flavour perspective to have a much higher defensive bonus in a fort if your unit is fortified there. Perhaps forts could give +25&#37; defence normally but a fortified unit in a fort gets 2x bonus on their total defensive strength.
     
  14. eerr

    eerr Emperor

    Joined:
    May 27, 2006
    Messages:
    1,077
    now we just need randomly generated deathnights to guard randomly generated fortresses
    : O
     
  15. Go Boks

    Go Boks Prince

    Joined:
    Mar 5, 2007
    Messages:
    340
    How about the Knights of Nee?
     
  16. eerr

    eerr Emperor

    Joined:
    May 27, 2006
    Messages:
    1,077
    give them a sword that goes snicker-snack!
     
  17. JDexter

    JDexter Prince

    Joined:
    Dec 18, 2003
    Messages:
    565
    Gender:
    Male
    Location:
    Germany
    Has anyone tried this with 0.25 already?
     
  18. Kael

    Kael Deity

    Joined:
    May 6, 2002
    Messages:
    17,401
    Location:
    Ohio
    It wouldn't work, it will need to be converted (the particular way this is implemented means that it would need to be converted for each patch).
     
  19. [NWO]_Valis

    [NWO]_Valis A bad kitty!

    Joined:
    Feb 20, 2007
    Messages:
    643
    Location:
    Gates of Ultramar [Szczecin]
    If someone picks up the torch here is a nice thread in the new SDK/python subforum about forts having zone of control and expanding curtular borders [source code included].

    http://forums.civfanatics.com/showthread.php?t=234446

    I bet there are some ppl who would love to have it implemented.
     
  20. Kael

    Kael Deity

    Joined:
    May 6, 2002
    Messages:
    17,401
    Location:
    Ohio
    Personally I think it would be better to implement this as a custom map script, not as a mini-mod or python replacement (as it was done the first time).

    Done correctly a custom map script won't be obsoleted by new versions (as long as the fort improvement is maintained and we have no plans to remove it).
     

Share This Page