Advanced Civ

f1rpo

plastics
Joined
May 22, 2014
Messages
1,706
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. For feeback and discussion, please feel free to use either the (more recently) created subforum or this thread.

AdvCiv is primarily an AI mod building on K-Mod. I've tried to address the most common gripes with K-Mod and to improve some aspects of the game that K-Mod doesn't touch.
  • War AI: The BtS and K-Mod code dealing with war planning and peace treaties has been replaced almost entirely. I like to think that the new code makes more sensible decisions about war and peace, and strikes a balance between K-Mod aggressiveness and BtS passiveness. AI personalities and attitudes still play a big part but can be outweighed by strong utilitarian motives.
  • AI attitude: I've gone through the AI diplo modifiers and tried to make them a bit more rational; e.g. the "mutual struggle" modifier is now based on war successes, not just war duration. Overall, these changes make it more difficult to reach Pleased attitude. Another aim has been to make relations less inert; to this end, I've set decay rates for all AI diplo memory and reduced the impact of the "first impression" modifier between AI civs.
  • Trade AI: The AI evaluates resource trades based on the needs of its cities and may give up its only resource of a kind or refuse to import a resource that it has no need for. The AI will sometimes trade cities at peacetime.
  • Misc. AI improvements: My changes in the "back end" of the AI are not nearly as extensive as those inherited from K-Mod. I've focused on amending some K-Mod changes that imo had serious deficits (e.g. sacrificed population, malicious espionage) and on AI decisions with an easily visible outcome, e.g. city placement.
  • Barbarians: The unit creation rate increases gradually and peaks (usually) in the last millennium BC. Fewer Barbarians on Tundra and Jungle, none on foodless Desert and Snow. Barbarian land units can appear aboard Galleys in the fog of war. Reduced "fogbusting" range. 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. As a result, revolt suppression plays a significant role in wars of conquest. On the other hand, 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 mature city, and a decay rate for tile culture makes it easier to acculturate conquered cities.
  • Map generation: Low-key tweaks, especially to starting positions and resource placement, mainly for greater fairness. And added a customized version of the PerfectMongoose script.
  • Misc. balance changes: I've weakened some overpowered unique units and leader traits, nerfed worker stealing and added a "No Slavery" game option. Similarly game-warping imbalances remain (e.g. collateral damage, tech trading) because I either didn't find a simple remedy or the time to address them. No full balance overhaul was attempted; most of the stats are just like in BtS. Various game rules may work a bit differently in the mod; for example, the entire path to a city needs to be revealed in order to enable a trade route. Most of these changes concern only minutiae.
  • Player handicap: Reduced AI discounts and freebies on Emperor and above, but humans face increased production costs, research costs, city growth and GP thresholds. These changes also keep the pace of tech progress somewhere near the historical time line.
  • UI: I've merged or replaced some essential BULL features missing in K-Mod, e.g. the Show Hidden Attitude mod, Sentry-Heal and holding Ctrl to stop worker builds before completion ("pre-chop"). I've also added dozens of new (minor) UI conveniences, many of them optional through the BUG menu.
  • Game options: "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. "True Starts" chooses civs based on the geography of the starting locations. "Start Points as Handicap" lets the human civs start with a Settler and Warrior as normal while the AI civs get Advanced Starts.
  • Performance: Despite adding computationally expensive AI code for war evaluation, AI turn times are, according to my measurements, shorter than in K-Mod and far shorter than in BtS. This is accomplished through various small optimizations across the codebase.
  • Tweaks from other mods: I've been keeping an eye on the change histories of most mods that are still in development and have adopted simple bugfixes and AI, UI and performance tweaks – mainly from Kek-Mod, We the People, More Naval AI and Caveman2Cosmos.
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. (Both are outdated now; especially the logfile – but the basic approach hasn't changed.)

Status: I'm only planning on bugfixes from here on. Version 1.10 has been released only recently, and, despite being a rather minor update, may have introduced bugs yet to be uncovered. Overall, the mod has become quite stable over the years, in no small part thanks to feedback from players and fellow modders. Special thanks to @SuperXANA, @keldath, @Lanstro, @crullerdonut, @Elkad, @Cruiser76, @VDNKh, @Bestban, @Pepo, @xyx, @Jorunkun, @SantaFlagship, @carp, @dreamyeyed, @eXalted, @DeepWell, @Leoreth, @Montezuma12, @Lanstro, @Long try and @spqkfk.

Mod-mods: @keldath's Dawn Of The Overlords (Remastered) is based on AdvCiv 1.10 and @spqkfk's Advanced Civ Plus on AdvCiv 1.08. @DeepWell's Ethnic Artstyles pack is easy to install on top of any recent version of AdvCiv.
 

Attachments

  • UWAI log.pdf
    196.1 KB · Views: 682
Last edited:
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.
 
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. Edit (April 2020): I've created Git commits now for those changes, based on K-Mod 1.46:
GitHub.com/f1rpo/AdvCiv/commits/kmod_tweaks
So the free-form list below is obsolete. The commits after 301125e ("Add ReplayScreen from BtS") contain changes that I made in AdvCiv after July 2019 (not covered by the old list).
Spoiler :
Original list from Aug 2017:
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.
    Edit (August 2020): Not such a good idea after all. It turns out that CAMERA_START_DISTANCE also affects the volume of music. My best bet is to set it dynamically in the DLL based on the field-of-view value, but that's not an easy change to adopt.
  • 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
    Edit (April 2020): Amendment to the translations
  • 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
    Edit (April 2020): I'm not so sure about this anymore. Arguably changes the intention of the BBAI code more than necessary. This Rise of Mankind change (SVN revision) seems less invasive, but also not so easy to merge (requiring a subroutine AI_countNumLocalNavy) and I'm not sure about performance.
  • 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)
    Edit (April 2020): I haven't created a Git commit for this one because K-Mod doesn't include BULL/SHA. Also, the Random Leader option isn't handled perfectly well. I've made some adjustments for that in AdvCiv, but they're not that easily portable. Anyone who still wants to adopt the latest AdvCiv code for total relations modifiers may want to search CvgameTextMgr.cpp for "advc.004q".
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.
    Edit (April 2020): Another bugfix: Git commit
    This is becoming too expansive for this list of easy tweaks. I haven't created a Git commit for it either.
    Edit (Aug 2020): Another bugfix: 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
    Edit (April 2020): I haven't created a Git commit for this one. Doesn't seem like something most players would want. The immediate payout, perhaps, but I can't easily separate that from the rest.
  • 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
    EmperorFool (BUG help file) said:
    One thing to note is the display of the bar will not automatically update after a battle, but you must enter a screen and exit out for it to display properly.
    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.
 

Attachments

  • sample game v0.87.pdf
    5.9 MB · Views: 421
  • sample game v0.95d.pdf
    2.7 MB · Views: 305
  • [AdvCiv]Gilgamesh_AD-1991_30.CivBeyondSwordReplay
    344.2 KB · Views: 224
Last edited:
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:
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.
 
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:

  • Don't place the first Barbarian city on an empty continent arbitrarily. See the bolded parts in this post.

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:
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.
 
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:
@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:
 
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.
 
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:
 
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.

The manual describes all this in (much) more detail.

Wow, this manual is huge. Great job!
 
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.
 
........will work in v0.89.

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:
 
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."
 

Attachments

  • riseAndFall.jpg
    riseAndFall.jpg
    59.4 KB · Views: 526
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!
 
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.
 
Top Bottom