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

Advanced Civ

Discussion in 'Civ4 - Modpacks' started by f1rpo, Apr 16, 2017.

  1. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    405
    Location:
    Germany
    There's a download link on the database page, about 10 MB. The archive does not include the manual and source code, which are hosted on GitHub.

    AdvCiv is mostly an AI mod at this point, based on and in the spirit of K-Mod. I've tried to fix the most common gripes with the K-Mod AI and UI, and to improve some areas of the game that K-Mod doesn't touch.
    • War AI: I've almost entirely replaced the BtS/K-Mod code dealing with war planning and peace treaties. I like to think that my AI makes more sensible decisions about war and peace, and strikes a balance between K-Mod aggressiveness and BtS passiveness.
    • Diplomacy: I've gone through the AI diplo modifiers and got rid of a number of loopholes and inconsistencies, especially regarding worst enemies, vassals and shared wars. I've also set decay rates for all AI memory, including "You declared war on us".
    • Barbarians: The spawn rate increases gradually and peaks (usually) in the early centuries AD. And many smaller changes.
    • Culture: Tile culture no longer vanishes when a civ is eliminated. The dead culture can cause anger and revolts, and revolts can happen in any cities, not just those near a border. My formula for the revolt chance works more like the BtS formula than the one in K-Mod, so that some 5-10 units are normally enough to hold onto a city.
    • Player handicap: If the "Start Points as Handicap" option is checked on the Custom Game screen, the human civs start with a Settler and Warrior as normal, while the AI civs get Advanced Starts. (Hence the name "Advanced Civ".)
    • UI: I've merged or replaced some essential BULL features missing in K-Mod, in particular the Show Hidden Attitude mod, Sentry-Heal outside cities, and Ctrl to stop worker builds before completion ("pre-chop"). I've also added some new UI conveniences, e.g. an expanding (fly-out) scoreboard, and made some improvements to AI Auto Play.
    • Game option "Rise & Fall": Divides the game into chapters and lets the (single) human player control a different civ in each chapter. The objective is to maximize a score awarded for each chapter.
    • Plus a handful of balance changes (e.g. Financial trait, Hereditary Rule, Granary) in addition to those in K-Mod, closed loopholes (e.g. fail gold only for wonders in the production queue) and some other rule changes (e.g. need to reveal the entire path to a city in order to get a trade route, no Worker stealing) and AI changes (e.g. trades resources based on whether it needs them, abandons untenable cities).
    The manual describes all this in (much) more detail. In case someone's interested in the inner workings of AI war planning, I've attached an annotated logfile to this post and a play report to a later post. (The logfile is a bit outdated by now; e.g. says that the AI never contacts humans for peace, which is no longer true.)

    Status: I can never do enough playtesting to ensure that everything works as intended in the latest release, but, overall, the mod has become quite stable I believe. Since autumn 2017, there have been only minor functional additions, and my focus has been on bugfixing, UI tweaks and working out flaws in my AI code. I've also gotten some reassuring and helpful feedback from players (special thanks to @SuperXANA, @Cruiser76 and @keldath). See this post (the first two paragraphs) about the status of multiplayer support; not sufficiently tested.
     

    Attached Files:

    Last edited: Jul 27, 2019
    devolution and cobbaut like this.
  2. blast21

    blast21 Chieftain

    Joined:
    May 6, 2013
    Messages:
    4
    Thanks for this mod - I've really been enjoying it!
     
  3. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    405
    Location:
    Germany
    Glad to hear it. Trying a mod with 0 replies is a bit scary, so thanks for taking the leap of faith, and confirming that there isn't something horribly wrong with it.
     
  4. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    405
    Location:
    Germany
    I'm attaching a report of my latest test game with v0.87v0.95d to this post; focusing on AI decisions about war and peace. I'm leaving the earlier sample game (v0.87) attached as well. Caveats about that one:
    Spoiler :
    Diplomacy has changed a bit with v0.90. This test game would've been more heated with the current version because relations bonuses from Open Borders and resource trade are harder to get now. The bonuses from resource trade were even miscalculated in 0.87. Also, the UI has also changed quite a bit in between v0.87 and 0.95.
    I'm also attaching a replay from an all-AI game with v0.95e. I don't know how useful that is, but since it's so easy to create and share a replay ... A double-click should suffice to play it, though perhaps not on Windows 10 – will then have to move it into My Games\Beyond the Sword\Replays and play it from the Hall of Fame screen. Either way, AdvCiv writes the same replay format as BtS, so the mod doesn't have to be installed.

    ----

    For fellow (DLL) modders, I've put together a list of bugfixes and UI changes in AdvCiv that could be added to other mods without much effort.
    Spoiler :

    • Leads-to info added to promotion buttons; e.g. "Flanking I: Leads to Flanking II, Navigation, Sentry". CvGameTextMgr.cpp#L6652
    • Don't place the first Barbarian city on an empty continent arbitrarily. See the bolded parts in this post.
    • Don't let Barbarians exclude one city per landmass from pillaging. CvUnitAI.cpp#L17300
    • The AI closeness heuristic no longer counts cities on other landmasses as closer than those on the same landmass. CvCityAI.cpp#L12251, CvCityAI.cpp#L12214
    • Increased initial camera distance. Just a single value in GlobalDefines.xml: CAMERA_START_DISTANCE set to 4600 instead of 2200.
    • Message about gold stolen by enemy spies says how much was stolen. Civ 4 Reimagined also does this. CvPlayer.cpp#L15939, CIV4GameText_advc.xml#L1287
    • Advanced Start points of the AI increased through the AIAdvancedStartPercent values in Handicap XML, as had probably been intended. CvPlayer.cpp#L1541
    • When BBAI decides if there are enough ships for a "minimal attack force", it counts all ships currently available or in production (not just those in production). CvCityAI.cpp#L1102
    • The K-Mod AI says "not right now" (instead of "we'd love to") to brokered peace when war is too recent. CvTeamAI.cpp#L4134
    • With Show Hidden Attitude mod (or BULL): Sum of the relations modifiers shown along with diplo breakdown, e.g. "Pleased (+7) towards Gandhi". CvGameTextMgr.cpp#L14352, Civ4GameText_advc.xml#L2484 (updated in October 2018 to match the colors of the Glance tab)
    More changes added in April 2018:
    Spoiler :

    • The AI plotDanger functions mustn't check canMoveOrAttackInto because that function, in turn, checks isMadeAttack, meaning that hostile units aren't counted if they have attacked on their owner's most recent turn. This bug was introduced with the BtS expansion. The fix is easiest to adopt from AdvCiv v0.89: CvPlayerAI.cpp; the three locations marked with "001k".
      Update (April19): The above can (rarely) cause human Workers to be interrupted when they aren't actually threatened. A better bugfix is to let the AI_*Danger functions pass a bDangerCheck parameter to canMoveInto (via canMoveOrAttackInto) that disables the isMadeAttack check. See the CvPlayerAI and CvUnit classes in AdvCiv 0.95 if this is too unspecific (the specific Git commits are too messy to be helpful).
    • When playing with "Minimize Pop-Ups", have the game kill redundant and outdated choose-tech, change-civics and change-religion popups. This change increments the savegame version (though backwards compatible) and is a bit laborious to merge: 10 short bits of code in CvCity.cpp and 6 in CvPlayer.cpp, all marked with "004x". Plus a couple of declarations in CvCity.h and CvPlayer.h.
      Update (Oct18): The code above might not work correctly in Hot Seat, so you may want to make these two small changes in killAll and (unrelated to Hot Seat) acquireCity in addition, and possibly this change too, though that one's really minor.
      Update (Jul19): Bugfix for the Choose Religions option: Git commit.
    • When in Debug mode, let the Military Advisor show all foreign units. I find this very helpful for debugging and very easy to change. CvMilitaryAdvisor.py#L290 and for BUG-based mods also CvBUGMilitaryAdvisor.py#L979.
    • About merging graphical changes (more distinct player colors, Blue Marble light), see this post.
    The rest only concerns K-Mod:
    • Likely bug in K-Mod's computation of AI city trade values. Previously owned cities are valued way too highly, so that the K-Mod AI practically always agrees to make peace in exchange for such a city. CvPlayerAI
    • Uninitialized memory bug in K-Mod. Had led to inconsistent PRNG sequences (possibly also OOS errors in multiplayer). CvPlayerAI#L7095
    • Two likely bugs fixed in K-Mod's evaluation of city sites (AI_foundValue):
      The AI sometimes places an early city in the middle of a jungle because it doesn't realize that removing jungle has a tech requirement: CvPlayerAI#L3408
      The AI overrates additional copies of strategic resources: CvPlayerAI#L3731
      No bug, but an oversight, and just a few lines below: Shouldn't count the trade value of resources near a city site when the resource tile is already within the AI's borders. CvPlayerAI#L3761
    And a few more from Oct 2018:
    Spoiler :

    • Vanilla Civ 4 bug: Crash when loading a savegame from inside a game with more civs than in the savegame while the camera is near a city owned by a player whose slot is empty in the savegame. Just a few lines in CvInitCore::resetPlayer and in CvCity::getMusicScriptId.
    • Vanilla Civ 4 bug: When computing the trade value for an embargo, the AI counts all deals of the civ that is supposed to stop trading, not just those with the target of the embargo. Fix: In CvPlayerAI::AI_stopTradingTradeVal (this is the K-Mod version of the file, but K-Mod doesn't modify that function) it should be pLoopDeal->isCancelable(ePlayer), not getID(). Then, in the next line, a check
      GET_PLAYER(pLoopDeal->getSecondPlayer()).getTeam() == eTradeTeam
      needs to be added, and, a symmetrical check a few lines below:
      GET_PLAYER(pLoopDeal->getFirstPlayer()).getTeam() == eTradeTeam
    • No fail gold for wonders that have been removed from the production queue because this is a loophole. And fail gold is paid immediately when a rival completes a wonder, not with a one-turn delay. Git commit (changes in about half a dozen places in CvCity.cpp and an optional one in GlobalDefines.xml) plus a declaration that is missing from the Git commit: CvCity.h#L1372
    • K-Mod: CvPlayerAI.cpp#L3743 needs to say
      kLoopPlayer.firstCity and kLoopPlayer.nextCity.
      As it is, the code intended to adjust city placement "based on proximity to other players" does nothing.
    • K-Mod: In CvPlayerAI.cpp#L16699, need to make a "temporary switch just to test the anarchy length" as a comment in line 16738 says, i.e.:
      Code:
      CivicTypes eOtherCivic = aeBestCivic[iI];
      if(eOtherCivic == eNewCivic) // Not necessary, but might as well.
         continue;
      aeBestCivic[iI] = eNewCivic;
      int iTestAnarchy = getCivicAnarchyLength(&aeBestCivic[0]);
      aeBestCivic[iI] = eOtherCivic;
    If you've merged the kill-redundant-popups change I posted in April 2018 — I've made a few minor improvements since then; see the spoiler above.
    Three bugs fixed in Dec 2018, two of them discovered by @vedg:
    Spoiler :

    • When a civ agrees to change both its civics and its religion in a single trade, the religion change isn't always applied. See this post for a bugfix.
    • K-Mod: When a city finishes a unit whose national limit is reached, overflow gold equal to
      that unit's production cost is paid. See this post for a bugfix.
    • K-Mod: Idle ships are stationed in unsafe cities. CvUnitAI.cpp#L20460 should say:
      for (int iPass = (getGroup()->canDefend() && getDomainType() == DOMAIN_LAND ? 1 : 0) ; iPass < 3; iPass++)
      As it is, pass 0 is skipped for ships and line L20483 won't check plotDanger.
    Added in April 2019:
    Spoiler :

    • An amendment to the plotDanger bugfix (see April 2018 above).
    • K-Mod: The "Simple Unit Selection" option has no effect because the option id set in XML is "SimpleSelection" (BUG Main Interface.xml#L117), but the DLL code (CvGame.cpp#L2491) assumes it to be "SimpleSelectionMode". One of these needs to be changed. (If it's changed in XML, the id also needs to be changed in BugGeneralOptionsTab.py and BUG Main Interface Options.xml to keep the BUG menu intact.)
    • A minor known issue with the Great General bar in the BUG mod
      is easy to fix in the DLL: At the end of the iExperience != getCombatExperience() branch in CvPlayer::setCombatExperience, add
      Code:
      if(getID() == GC.getGameINLINE().getActivePlayer() && getBugOptionBOOL("MainInterface__Combat_Counter", false))
        gDLL->getInterfaceIFace()->setDirty(GameData_DIRTY_BIT, true);
      and make sure that CvPlayer.cpp includes "CvBugOptions.h".
    Two more (AI bugs) added in July 2019:
    Spoiler :

    • Found a bug in my minimize-popups change; see April 2018 above.
    • This line in the (BtS) code for ferrying workers in between cities
      CvUnitAI.cpp#L18222
      fails to take into account the number of workers already available to the potential destination city. In contrast, line 18231 does subtract the available workers when evaluating the workers needed in the area, so line 18222 looks like an accidental omission. Should be:
      int iValue = pLoopCity->AI_getWorkersNeeded() - pLoopCity->AI_getWorkersHave();
    • K-Mod: In CvCityAI::AI_getPlotMagicValue, the YieldWithBuild value needs to be taken times 100 to match the scale of AI_getYieldMagicValue:
      Code:
      if (bFinalBuildAssumed)
      {
          aiYields[iI] = kPlot.getYieldWithBuild(AI_getBestBuild(
                  getCityPlotIndex(&kPlot)), eYield, true) * 100;
      }
      This probably matters only for the iPopToGrow computation in CvCityAI::AI_yieldValue. The erroneous code was actually introduced by the BtS expansion, but had remained unused until K-Mod 1.46.
     

    Attached Files:

    Last edited: Jul 24, 2019
    lfgr, devolution and AbsintheRed like this.
  5. xaster

    xaster Chieftain

    Joined:
    Oct 5, 2003
    Messages:
    128
    Oh great..... this looks like a really good alternative for the K-Mod with further ongoing support :thumbsup::thumbsup::thumbsup:

    May a question. Is it possible for you to include BTS Next War to your AdvCiv ??
    Or may create a patch to merge the python functions from Next War ?

    Here is a list from Next War functions.
    - Next War Story Popup if the Next War map will be loaded - runs in CvEventManager.py
    - Prevent a player to build an a lower arcology if a higher arcology level is already build - runs in CvGameUtils.py
    - remove lower arcology level if a higher level is build - runs in CvEventManager.py
    - setup arcology ruins if a city with arcology has been destroyed
    - place a destroyed arcology, if a city getting razed - runs in CvEventManager.py
    - World break script if over 20 nukes used - runs in CvEventManager.py

    many thanks in advance !
     
    Last edited: Aug 18, 2017
  6. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    405
    Location:
    Germany
    My efforts have been almost exclusively in C++. I've posted what little I know about merging Python over here. Generally, when it comes to merging mods, I can give some advice about potential conflicts in the DLL, but not much more. I don't see a problem there with Next War and AdvCiv (or K-Mod), except maybe the arcology ruins because city ruins have names in AdvCiv, but I think it should work.
     
  7. Archid

    Archid Chieftain

    Joined:
    Oct 30, 2009
    Messages:
    287
    Location:
    North Wales, UK
    Thanks for the link to these fixes, I like a couple and will using them into my own mod. I do have a minor suggestion for the following one:

    Would the first fix for the owned tiles multiplier be better using std::max rather than always adding 1 to the number of owned tiles? That way you are only changing the value when necessary.
     
    Last edited: Aug 17, 2017
  8. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    405
    Location:
    Germany
    Archid: I can't think of a situation where either solution would lead to (noticeably) odd behavior. As a question of programming style, I think changing the value unnecessarily is no worse than treating 0 and 1 the same. That said, max also takes care of negative numbers and communicates clearly that the multiplier needs to be positive, so it's better I guess.
     
  9. xaster

    xaster Chieftain

    Joined:
    Oct 5, 2003
    Messages:
    128
  10. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    405
    Location:
    Germany
    I guess the simplest way to reproduce the issue is to give a unit that already has different art styles in BtS a different button in one of the ArtStyles. I've given ART_DEF_UNIT_ARCHER_ASIAN an Axeman button (,Art/Interface/Buttons/Units/Axeman.dds,Art/Interface/Buttons/Unit_Resource_Atlas.dds,3,1), then started a game as Mongolia. The Axeman button shows up in Civilopedia, in the tech tree and in the city production chooser, but not on the main interface or in the WorldBuilder. Same in BUGBULL (I didn't have a pure BUG installation at hand), except that the Axeman also doesn't appear in Sevopedia. In (otherwise) unmodded BtS, the Axeman does appear on the main interface. I can get it to appear in AdvCiv as follows:
    Spoiler :
    In CvMainInterface.py, function updatePlotListButtons_Orig, replace the line
    screen.changeImageButton( szString, gc.getUnitInfo(pLoopUnit.getUnitType()).getButton() )
    with
    screen.changeImageButton( szString, gc.getPlayer(pLoopUnit.getOwner()).getUnitButton(pLoopUnit.getUnitType())). (edit: without the dot at the end)
    There is also a function updatePlotListButtons_BUG; maybe there is a better way to fix this issue inside that function.

    Edit: The above doesn't work if, on the "Plot List" tab of the BUG interface options, "BUG" is selected as the "Draw Method". Will have to make the following additional change:
    Spoiler :
    In Python/BUG/BUGUnitPlot.py, function _drawUnitIcon, replace
    self.screen.changeImageButton(szCell, gc.getUnitInfo(BupUnit.UnitType).getButton())
    with
    self.screen.changeImageButton(szCell, gc.getPlayer(BupUnit.Owner).getUnitButton(BupUnit.UnitType))
    This still doesn't work if "PLE" is selected as the "Draw Method".
     
    Last edited: Aug 19, 2017
    xaster likes this.
  11. xaster

    xaster Chieftain

    Joined:
    Oct 5, 2003
    Messages:
    128
    @f1rpo YOU MAKE MY DAY :eek: :goodjob: :hug:

    I just checkout your code and for CvMainInterface.py it must be:
    Code:
    screen.changeImageButton( szString, gc.getUnitInfo(pLoopUnit.getUnitType()).getButton() )
    to
    screen.changeImageButton( szString, gc.getPlayer(pLoopUnit.getOwner()).getUnitButton(pLoopUnit.getUnitType()))
    
    one . at the code end was to much and crash the HUD and some menu options.

    Now i can confirm the unitbuttons shows correctly in Standard and BUG draw option :thumbsup::bowdown::woohoo:
    Thank you very much for your support :trophy:.... you are a good one and my next bigger project is to merge fully to your Advanced Civ Mod. :yup:
    One more thing to make it complete is it possible to update the PLE view as well ?
    I think this is a good fix for Advanced Civ as well :clap:
     
  12. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    405
    Location:
    Germany
    Oh, the dot was supposed to be a punctuation mark. I shouldn't have placed it there obviously. :blush:
    I had kind of hoped that you'd figure out the PLE issue. But it's actually easy:
    Spoiler :
    In Python\Screens\PLE.py, replace
    screen.changeImageButton( szString, gc.getUnitInfo(pLoopUnit.getUnitType()).getButton() )
    with
    screen.changeImageButton( szString, gc.getPlayer(pLoopUnit.getOwner()).getUnitButton(pLoopUnit.getUnitType()))
    As for merging with AdvCiv: Bear in mind that K-Mod has had way, way more testing and is very stable. There are probably still some unpleasant surprises in AdvCiv. For instance, yesterday I've accidentally, for the first time in my life, clicked on one of the BUG City Cycling arrows (above the large flag on the main interface) – and the mod crashed. I intend to fix issues like this if they're reported, but it's still a hassle. Perhaps try a game on AI Auto Play (Ctrl+Shift+X) on your preferred settings to see if the mod handles that well.

    In any case, it's good that you've worked out the compatibility problems with BUG because lots of mods are BUG-based.
     
  13. xaster

    xaster Chieftain

    Joined:
    Oct 5, 2003
    Messages:
    128
    Juuppp, did this already :goodjob:
    Now the works with my mod project can go on. I stay tuned and looking forward to your further releases. You are doing a great job ! :thanx:
     
    f1rpo likes this.
  14. DarkLunaPhantom

    DarkLunaPhantom Chieftain Supporter

    Joined:
    Feb 4, 2013
    Messages:
    399
    I am really glad to see all these bugfixes and improvements. AI changes related to war look great, I cannot wait to try this out.
    I would have probably missed all this if it weren't for your recent post in the K-Mod thread.

    Wow, this manual is huge. Great job!
     
  15. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    405
    Location:
    Germany
    It's probably for the best that you haven't tried the initial version. I mean, no leaps and bounds since, but it has improved a bit.

    As you may have noticed, some changes from your mod (let me link to it) are included. The one about unused power plants looked like a pain to write; thanks for that. I didn't merge the multiplayer changes because I can't test multiplayer properly, and most of the things you've changed about barbarians I had already addressed in some form (e.g. barbs can't upgrade at all in AdvCiv and never try to generate culture). Your post has reminded me to finally test Permanent Alliances – result: they crash in the current version, but it's easy enough to fix; will work in v0.89.

    About the lengthy manual ... 90% is the changelog part, which is mostly internal documentation that I thought I might as well release. For people who already know K-Mod and don't care about the Start-Points-as-Handicap option or barbarians on Terra-like maps, it's really just 10 pages, and I hope that the first post of this thread already covers the essentials.
     
  16. xaster

    xaster Chieftain

    Joined:
    Oct 5, 2003
    Messages:
    128
    I can only say GO GO GO :goodjob:
    Your efforts to the community are freaky awesome. I learn a lot about DLL complie and game mechanism.
    Since K-Mod getting stuck in v1.45 your Advanced Civ is the way into Civ4 future :love:
     
  17. keldath

    keldath LivE LonG AnD PrOsPeR

    Joined:
    Dec 20, 2005
    Messages:
    6,400
    Location:
    israel
    hey friend
    good work!

    always nice to see more of kmod.


    have you used something from kek modmod?
     
  18. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    405
    Location:
    Germany
    Thanks!

    keldath: See my previous post, middle paragraph. Or, for details, search for "dlph" in the manual (it didn't have a name yet when I started merging it).

    xaster: I don't think either mod will go much further; but I hope I'll get to something I can call v1.0.

    I'm currently adding a game option that I had wanted to make since I started modding three years ago. Blurb:
    "Rise & Fall: Game option that divides the game into chapters; you take control of a different civ in each chapter. A score is awarded after each chapter based on how the standing of your civ has changed. The overall objective is to maximize the total of the awarded scores."
     

    Attached Files:

  19. FrozenShadows

    FrozenShadows Chieftain

    Joined:
    Jul 20, 2010
    Messages:
    22
    Gender:
    Male
    Location:
    Florida
    Firstly, Love the mod. You are doing fantastic.

    I noticed you said you mostly work on C++ so I was wondering if there was anyway whatsoever to include/integrate the CvGameCore.dll that allows for 50 civs in a game. I don't personally have the time to try and learn it well enough to try it myself otherwise I wouldn't ask. Thankyou! (personally i wanna use about 34 but thats neither here nor there.)

    Please keep up the great modding!
     
  20. f1rpo

    f1rpo plastics

    Joined:
    May 22, 2014
    Messages:
    405
    Location:
    Germany
    The thing is that raising the civ limit slows the game down. I wasn't sure if the effect would be noticeable, so I did a test: 200 turns on AI Auto Play, Normal speed, Large map, Low sea level, with 16 civs. This took 11.5 minutes with my current version of the mod, and 18 minutes with a modified version allowing 48 civs. So, the limit will have to remain 18 in the main branch of the mod, but I can easily provide a 48-civ DLL in addition. I'll do that when I upload v0.89 later this week.

    I've also run 200 turns with 25 civs (as many as I was able to fit on a Huge map) to see if my AI changes work with so many parties. Looked all right; I didn't spot anything odd. By turn 200, each turn took 30 seconds though. This is apparently slower than K-Mod because, after disabling the war/peace AI component of AdvCiv (i.e. the bulk of the new AI code), the turn time dropped to 15 seconds. In some earlier tests with only a dozen or so civs, AdvCiv was just a few percentage points slower than K-Mod, so it seems that my AI code scales rather badly with the number of civs.
     

Share This Page