The Eternal Peace

... I've run a little Python script (written mostly by a chat AI and relying on the Python random module for the PRNG) that starts with a grid of 8x8 "X"s and then successively chooses one at random and flips it to a blank character – until exactly half of the Xs are gone. Here are six of those half-cleared grids:
Spoiler :
Code:
X           X X
        X   X
X X   X   X X X
    X     X
X   X X X X
X   X X X X
  X     X X X
X X   X X     X



  X X   X X X X
      X     X X
X X   X   X   X
X         X X
    X   X X   X
  X X         X
X X   X X
X X X     X



X X   X X X
  X   X     X X
  X X X     X
X   X   X X
X X X X X
X X     X X
  X           X
    X X   X   X



X X X X X X   X
            X
X   X X   X X
X X X X     X
  X X       X
X   X X   X
  X X       X
X X       X X



X       X X   X
X     X       X
  X       X   X
X X     X   X X
  X     X X X
    X       X
X X X   X   X X
  X X X X X



X   X X X
X   X    
X X   X   X X
X     X X   X X
X   X X  
    X     X   X
X X   X   X X
      X X X X X
The fifth, for example, has a big (3x5) cleared block in the middle. Several of them have long portions of the outer edge left untouched. Your screenshot doesn't blatantly fall out of this pattern to my eye.
Edit3: Let's also go from Chess to a Go-sized grid ...
Spoiler :
Code:
X   X     X         X X   X   X X   X
  X     X     X X   X X   X   X
  X X     X X X     X X         X X
X   X X   X X   X X X X X X     X X
  X         X X X             X X   X
  X   X   X   X   X X X X X         X
    X X   X   X X X X   X      
X     X X       X X X   X   X X   X
X X X X X X       X     X X       X X
X     X X X   X X     X     X   X X
    X X   X X   X   X     X X X X X
X X X X   X         X     X X X X X
    X   X   X X X X X X X X X  
X X   X         X         X X X X X
X X           X   X X   X X     X   X
                X X   X X X     X X X
X   X       X X X X               X X
    X   X     X   X       X X X X X X
X     X         X X X   X X   X X

There is certainly one kink in the syncRandPlot function: It does not first collect all valid tiles and then choose one at random, but it chooses a random coordinate ignoring all selection criteria, checks the criteria and tries again until it happens to pick a valid tile – or until it has failed 100 times. That's the iTimeout default value defined in CvMap.h. Once the number of valid tiles becomes very small, especially on very large maps, it may well happen that the timeout is reached before finding any nondesert, noncity land tile. But this should only affect the (very) late stages of GW. It might explain the surprisingly abrupt flattening of the descending crop yield curve that I've observed in my automated test. This timeout mechanism could also be an intentional design decision (rather than just an attempt to save processing time) to generally allow per-tile events to get canceled that can only affect a very narrow set of tiles. Ensures a degree of unpredictability. After rewriting syncRandPlot in my own mod (so that a tile is guaranteed to be found), I ran into the problem that Barbarians kept respawning too rapidly where they had just been killed when very few eligible tiles were left.

Edit2: The GameCore code may also be in your own Civ 4 install folder, in a subfolder CvGameCoreDLL. But I'm not sure if all editions of the game come with the source code. So (maybe) I don't need to be relied on for providing the source code in its correct version. The game updaters, e.g. for v1.74, also used to include the (presumably) latest version of the source code and (presumably) replaced any older existing version of the code with the latest when applying the update.
Excellent! Exactly the test i was thinking about myself, except it'd take me ages to code it - nowadays. Thanks!! :)

Good news are: you and me don't need to "compare by eyeballing" your results and my screenshot. We can simply quantify the difference. Oh, but before i do - can't see that "big (3x5) cleared block in the middle" in your 5th pattern. Looked 4 times. Real hard. Just ain't there. Am i that blind today? :blush:

Anyhow, to quantify it, lots of methods are possible. Here's one
Spoiler example :

- count how many desert tiles are on my 1st screenshot, except any desert tiles 6 or more distance to the east from Delhi (because few natural-desert tiles were 7 tiles eastwards and further, and we only estimate GW-made deserts, including GW effect on their nearby tiles, hence 6th eastwards tile column is excluded, but still matter as "neighbours" to 5th eastwards tile column). My eyes counted 26 such desert tiles;
- count how many of those 26 desert tiles have half or more of adjucent land non-city tiles - also being deserts. My eyes counted 25 such desert tiles. This gives us "percentage of desert tiles not far from Delhi who love to hang out with other desert tiles", so to say: 25 / 26 = 96.2%. Kinda stunning, ain't it?
- count how many non-desert non-city tiles are in the same area. My eyes counted 18. This gives us "desertification %" for this area: 26 / (26 + 18) = 59.1%. Significantly different than 50% you used in your script, so it'd be best to run it with
something close to 59.1% of symbols removed;
- then count how many of blank symbols in your tests have half or more of adjucent places also being blank. If it'd be anywhere close to 96.2% on multiple attempts - then your doubts are right, and my mind was seeing things; but if it's way lower than 96%, then it'd mean we're onto something indeed, here.

Here's that "5th pattern" you made, with blank spaces replaced by "O" symbols for better geometry in the post - 32 of those and 32 Xs indeed:
X O O O X X O X
X O O X O O O X
O X O O O X O X
X X O O X O X X
O X O O X X X O
O O X O O O X O
X X X O X O X X
O X X X X X O O

And when i count how many "Os" have half-or-more nearby (adjucent) symbols also being "Os" - then i get 16. Out of 32. Exactly 50% such "Os". Far, far less than 96%. Certainly, increasing desertification from 50% to 59% would ramp up the result way closer to 96%, but i guess it'd still be very, very small percentage of tests which by mere fluctuation would produce 96% or more of "buddy-buddy with likes of yourself" Os.
Next, about syncRandPlot function: i totally agree that "failed 100 times" is not the quirk we try to find, here. Can't be. If anything, i'd suspect something fancy in said "criteria", which it uses to decide whether the picked tile "gonna do" or not.

Next, about "intentional design decision ... to generally allow per-tile events to get canceled that can only affect a very narrow set of tiles". This strikes one properly technical revelation into me, man! A little tiny remnant of a tech i once was... Thanks for this!!

It goes: them Firaxis programmers at the time - were quite brilliant. Back in my (very) old coder's days (mainly in 1990s: Pascal and Delphi, i.e. the old strict-programming stuff), i definitely remember writing lots and lots of code which had "secondary purposes" built-in. I.e., things which happened as side effects from running the code which was doing some very different stuff. Akin to that "degree of unpredictability" you've mentioned. And now the fun part: such things, such "secondary effects" - hardly _any_ other coder than the code's author could even figure out from looking at the code. How i know? Well because other young fellas who were looking at my code - hardly noticed any such quirks. And they were good coders, yep. Such things, you only figure out how to do "as a bonus" after running your code this and that way and in a dozen different fashions and circumstances. And it's occasional stuff, too: sometimes it's possible to alter the code to produce such "side benefits", but rather more often - it's not doable. But, such opportunities are not exactly "rare", too. There can be a ton of such things in a program of Civ4 scale, i believe. And, those "little nice extras" are rarely even commented by coders who do have the old honorable habit of commenting their own code - and, of course, lots of coders, even good ones, don't have time for even properly commenting the main ideas their stuff does... %)

Why is that a revelation, here? Because i recognise just-described manner of coding - a bit - in how you described that function's workings, and because any good coder who'd do "how GW works in Civ4" would likely fancy the idea that "any already-existing deserts, naturally, should be expanding overall quite faster than the speed of GW in regions with no deserts at all". And if they would indeed fancy this idea, and then see a way to implement it as such a "nice extra", a little extra feature of their code which is functioning as a far-not-obvious side effect - then, i'm sure, they would. At least, i would, in their shoes. It'd simply be _elegant_, you know? :)

And about that folder: nope, no such folder in my vanilla Civ4 installation. There is such a folder in my BtS installation alright, but not in vanilla. :(

// edits: fixing typos
 
Last edited:
You're quite right about the 3x5 block not being there. Sorry to have you squint for that. I had meant to take out the spaces used as separators in the Python script, but didn't do it properly. So I was counting those separators as deserts. Which also means that my impression of the patterns at a glance was wrong; the desert patches generally aren't nearly as big as I thought. On the other hand, the dimensions I used may have been far too small and the target desert ratio also too small. If we don't want to complicate things to the point of including water, and keeping the dimensions square for simplicity, 48x48 should be a number of cells similar to the land tiles on your Huge(?) map (128 * 80 * 0.22, the last factor being the land ratio at Normal sea level). Your global ratio of GW-affected tiles is probably not above 60%: I'm assuming that you've singled out the region with the most conspicuously large block of desert, so this ought to be a pretty heavily affected region. Though the zoomed out Earth looks heavily affected in general. Let's go with 59.1%, I dunno. First result of that (with the separating spaces finally gone):
Spoiler :
Code:
     X X X X X    X XX X         X X  XX X  X  X
  X   XX  X  X     X XX X    X    X  X      XX  
X XX  X  X XX     XXXXX XX X   XXX XX XX  X     
     X  X     X      XX   XXXXXXX    XXX     XX 
XXXX  XX  X X     X XXX   X X   XXX X XX   X    
 X  X  XXX     XX X  X X X    X X     X X X X   
   X   X X XX  X X  X X  XXX   X X XX X X     XX
X X  XX     XXX   X XX   X X X X  X XX XX X   XX
 XXX X X XX  XX XX X       XXXXX        XX XXX  
X  XXX    XX     X        X  X X X  XXXXXX    X 
  XXXXX     XXXX   X       XX  XX   X  X   X  X 
  X XXXX XXXXX      X    X  XX X         X  XXX 
X   XXX     X  X   X    X      XX  XX   X  XXXXX
 X XX   XXX X XXX            X  X X     X XX  XX
X X  XXX X X X X X  XX  X  XXX X  X XX   X      
  XX X  X X   X X    X    X X  X  X    X X    XX
   XXX  XX   XX X XX   X  XX XX   X  XXX   X    
X XXXX  XXXX    XXX X  XX XX  X    X X X   XXXXX
X    X     X    X X XXX  XX    X    X  X  X    X
X   XXXX    X  X X     XX XX X   XXX X  X XX  XX
 X X  X  X   X     XX  X      XXXXXX  XX  X  X X
X    X  X  XX     X  X  X   XXX XX  X    X      
XX X XXX XXX  XXX X     X  XXXXX X  X X  X   XXX
   XXXX   XX XX XXXX   X X  X  X  XX    XXX  X X
 X X XX X    XXXX    X    XXXXXXX         X  X  
 XX    X  XX  X   X  XXX    X  X XX   X X XX XXX
X X   XXX    X X   X X X XX  X XX X       X  XXX
 X    XXX   X X X   X X  X X X XXXXX XXX X  XX X
     XXX    X X  X     X XX X XXX  X   XXXX   X 
XX   X   X X X XXX        X XX XXX XX XX    X   
   XXX X  X     X XXXX X   X    X   X  XX    XX 
 XX XX   X XXX    X   XX   X   X  XXX X  XX XX  
 X   XXXX X  XX XXX  XXX  XX    XX   XXX    X  X
 XX X   X    X XX     X  X   X XX X XX    X     
     X    X XX     X     X X   XX XXXX    X X   
 X   XX      XXXXX X X  X XX   X         XX    X
  X X    XXXX   X   X  X X   X X    XX XXX    XX
X  X XX  X   XX    X XX  X XX  X XXX        X   
X X XX  X     X  XX XXX  X     X   X    XX     X
XXXX     XXXX X  XXX X  X     X  XX   X  X  X X 
    X XXXXXX    X XXXX    X XX     XXXXXX X XX X
X X X    X  X  XXX   XXXX X   X  X    X X XX XX 
 X X XX  XXXXX  X X  XX  XX     XXXXX X      X  
 X X  X XX      XXX  XX      X X   X XXXX   X XX
XXX    XX X X XX   XXX XX     XX     X  XX      
X X XXX   X  XX X   X  XXX  XXXXX X    X  X   X 
 X  X  XXXX X X  X  X  XX  XXX     XX X X    X X
 X XX X X X  X X    X XXX   X XX   X X    X    X
Now, from this, can we cherrypick a region similar to the Delhi region? Maybe in the center near(-ish) the top. Though the local desert ratio shouldn't be far above 60%. Probably should've used only 55% globally. It's all just about rough intuitions to me, things not looking wildly out of whack. Sticking to 8x8, here's a region that also catches some X clusters to the east, which brings it to 62.5% desert overall:
Spoiler :
Code:
XX   X X
     XXX
    X  X
     XX 
   X  XX
  X     
       X
  X  XXX
Seems, at a quick glance, that just 5 of those deserts (spaces) have at least 4 nondeserts among their neighbors: 4 toward the upper right, 1 in the lower right corner. 5 out of 44 is 11.4%. That kinda sorta may meet your challenge, but the whole experiment seems shaky with the outcome hinging on how freely we get to pick our favorite region (the region you had singled out was in part delineated by coastlines) and what the global desert ratio is. Personally, I feel at ease looking at the 48x48 pattern, going "yea, more lumpy in places than one might think." I'd also be out of my depth with attempting a proper statistical experiment.

This timeout mechanism does whiff of some old game programmer-designer trick that someone remembered or that was perhaps even ported over from Civ 3. By and large, I don't think the DLL codebase (which I've been dealing with for 10 years) employs a lot of this sneaky corner-cutting. Though, if there were some one-line trick to make the deserts cluster more, I also wouldn't be shocked if Firaxis had employed that. Though just keeping things uniformly at random - that one would expect to have more complicated correlations - is a time-honered trick as well.

Different topic: Was it really necessary to disable inflation? Research isn't much use anyway by the time that the economy will get choked. And eventually inflation would force the civs to disband their enormous unit stacks, which are out of place in the Eternal Peace anyway and only increase turn times (and prevent revolts). Also, wondering if allowing warfare in some portion of the game but introducing a balance-oriented objective or restriction, e.g. all players having the same number of cities, would be more interesting – and more feasible wrt. preventing GW. So I Imagine the human player sweeping in to take control of all Uranium at some point, restoring some cities to their original owner to rebalance the city counts and then finesse the world into a peaceful equilibrium that can continue uneventfully until something overflows in the game state/ logic.
 
You're quite right about the 3x5 block not being there. Sorry to have you squint for that. I had meant to take out the spaces used as separators in the Python script, but didn't do it properly. So I was counting those separators as deserts. Which also means that my impression of the patterns at a glance was wrong; the desert patches generally aren't nearly as big as I thought. On the other hand, the dimensions I used may have been far too small and the target desert ratio also too small. If we don't want to complicate things to the point of including water, and keeping the dimensions square for simplicity, 48x48 should be a number of cells similar to the land tiles on your Huge(?) map (128 * 80 * 0.22, the last factor being the land ratio at Normal sea level). Your global ratio of GW-affected tiles is probably not above 60%: I'm assuming that you've singled out the region with the most conspicuously large block of desert, so this ought to be a pretty heavily affected region. Though the zoomed out Earth looks heavily affected in general. Let's go with 59.1%, I dunno. First result of that (with the separating spaces finally gone):
Spoiler :
Code:
     X X X X X    X XX X         X X  XX X  X  X
  X   XX  X  X     X XX X    X    X  X      XX 
X XX  X  X XX     XXXXX XX X   XXX XX XX  X    
     X  X     X      XX   XXXXXXX    XXX     XX
XXXX  XX  X X     X XXX   X X   XXX X XX   X   
 X  X  XXX     XX X  X X X    X X     X X X X  
   X   X X XX  X X  X X  XXX   X X XX X X     XX
X X  XX     XXX   X XX   X X X X  X XX XX X   XX
 XXX X X XX  XX XX X       XXXXX        XX XXX 
X  XXX    XX     X        X  X X X  XXXXXX    X
  XXXXX     XXXX   X       XX  XX   X  X   X  X
  X XXXX XXXXX      X    X  XX X         X  XXX
X   XXX     X  X   X    X      XX  XX   X  XXXXX
 X XX   XXX X XXX            X  X X     X XX  XX
X X  XXX X X X X X  XX  X  XXX X  X XX   X     
  XX X  X X   X X    X    X X  X  X    X X    XX
   XXX  XX   XX X XX   X  XX XX   X  XXX   X   
X XXXX  XXXX    XXX X  XX XX  X    X X X   XXXXX
X    X     X    X X XXX  XX    X    X  X  X    X
X   XXXX    X  X X     XX XX X   XXX X  X XX  XX
 X X  X  X   X     XX  X      XXXXXX  XX  X  X X
X    X  X  XX     X  X  X   XXX XX  X    X     
XX X XXX XXX  XXX X     X  XXXXX X  X X  X   XXX
   XXXX   XX XX XXXX   X X  X  X  XX    XXX  X X
 X X XX X    XXXX    X    XXXXXXX         X  X 
 XX    X  XX  X   X  XXX    X  X XX   X X XX XXX
X X   XXX    X X   X X X XX  X XX X       X  XXX
 X    XXX   X X X   X X  X X X XXXXX XXX X  XX X
     XXX    X X  X     X XX X XXX  X   XXXX   X
XX   X   X X X XXX        X XX XXX XX XX    X  
   XXX X  X     X XXXX X   X    X   X  XX    XX
 XX XX   X XXX    X   XX   X   X  XXX X  XX XX 
 X   XXXX X  XX XXX  XXX  XX    XX   XXX    X  X
 XX X   X    X XX     X  X   X XX X XX    X    
     X    X XX     X     X X   XX XXXX    X X  
 X   XX      XXXXX X X  X XX   X         XX    X
  X X    XXXX   X   X  X X   X X    XX XXX    XX
X  X XX  X   XX    X XX  X XX  X XXX        X  
X X XX  X     X  XX XXX  X     X   X    XX     X
XXXX     XXXX X  XXX X  X     X  XX   X  X  X X
    X XXXXXX    X XXXX    X XX     XXXXXX X XX X
X X X    X  X  XXX   XXXX X   X  X    X X XX XX
 X X XX  XXXXX  X X  XX  XX     XXXXX X      X 
 X X  X XX      XXX  XX      X X   X XXXX   X XX
XXX    XX X X XX   XXX XX     XX     X  XX     
X X XXX   X  XX X   X  XXX  XXXXX X    X  X   X
 X  X  XXXX X X  X  X  XX  XXX     XX X X    X X
 X XX X X X  X X    X XXX   X XX   X X    X    X
Now, from this, can we cherrypick a region similar to the Delhi region? Maybe in the center near(-ish) the top. Though the local desert ratio shouldn't be far above 60%. Probably should've used only 55% globally. It's all just about rough intuitions to me, things not looking wildly out of whack. Sticking to 8x8, here's a region that also catches some X clusters to the east, which brings it to 62.5% desert overall:
Spoiler :
Code:
XX   X X
     XXX
    X  X
     XX
   X  XX
  X    
       X
  X  XXX
Seems, at a quick glance, that just 5 of those deserts (spaces) have at least 4 nondeserts among their neighbors: 4 toward the upper right, 1 in the lower right corner. 5 out of 44 is 11.4%. That kinda sorta may meet your challenge, but the whole experiment seems shaky with the outcome hinging on how freely we get to pick our favorite region (the region you had singled out was in part delineated by coastlines) and what the global desert ratio is. Personally, I feel at ease looking at the 48x48 pattern, going "yea, more lumpy in places than one might think." I'd also be out of my depth with attempting a proper statistical experiment.

This timeout mechanism does whiff of some old game programmer-designer trick that someone remembered or that was perhaps even ported over from Civ 3. By and large, I don't think the DLL codebase (which I've been dealing with for 10 years) employs a lot of this sneaky corner-cutting. Though, if there were some one-line trick to make the deserts cluster more, I also wouldn't be shocked if Firaxis had employed that. Though just keeping things uniformly at random - that one would expect to have more complicated correlations - is a time-honered trick as well.

Different topic: Was it really necessary to disable inflation? Research isn't much use anyway by the time that the economy will get choked. And eventually inflation would force the civs to disband their enormous unit stacks, which are out of place in the Eternal Peace anyway and only increase turn times (and prevent revolts). Also, wondering if allowing warfare in some portion of the game but introducing a balance-oriented objective or restriction, e.g. all players having the same number of cities, would be more interesting – and more feasible wrt. preventing GW. So I Imagine the human player sweeping in to take control of all Uranium at some point, restoring some cities to their original owner to rebalance the city counts and then finesse the world into a peaceful equilibrium that can continue uneventfully until something overflows in the game state/ logic.
Coastlines is not a problem for the quantifying method i offered: it's based on "half of more nearby squares are deserts", and whenever we look at any desert tile with some water and/or city tiles near it - every "excluded" tile does not ruin the criteria used. For example, say there's a desert tile with 3 water tiles near it. So it means only 5 nearby tiles are land tiles. But still, "50% or more of nearby tiles" criteria - does the same thing: 3 or more of 5 nearby tiles are deserts - is still "half or more". Averaged over all possible cases of such occasions, it's very close to the situation when we'd have full 8 nearby tiles all being land non-city tiles. And on top of that, your 8x8 blocks had edges, too - quite the same thing as coastlines, too.

The reasons i picked this near-Delhi region - was indeed not because it was desertified the most. Rather, i had three reasons: 1st, it's one of largest regions with such a clear separation of desertified lands and non-desertified; 2nd, it was the largest mass of land with zero pre-GW desert tiles in it; 3rd, it's AI territory and has always been ever since GW started. Native India's lands.

The 8x8 block you cherry-picked (i get the idea - you emulate world map size, then look for similar case) - has 16 X tiles. Out of 64 total tiles. Meaning, this one has 75% desertification - not 59% like the one i quantified in my previous post. The difference is what i'd call "quite far", yeah. :(

Yet further proving my point, even this one pretty far more desertified 8x8 block you cherry-picked does worse than 96.2% from my screenshot practical case: namely, out of 48 desert tiles in it, only 45 have half-or-more nearby tiles also being desert. Which means the ratio - is 45/48 = 93.75%. I.e., despite being ~25% more desertified, your cherry-pick still produced ~2.5% less of "likes to clump together" desert tiles than my game did. The difference should be far larger for any cherry-picked 8x8 block which is some 57%...61% desertification rate. And this, sir, indicates quite well that there should, indeed, be something in the game which does what i initially reported. With significant chance. Now, if only i had my old ability to dig through heaps of code, i sure would. This got me mighty curious. But i didn't code for last 25+ years, and the practical skill for it is long gone. Sorry about that... :(

About Firaxis coders: interesting opinion, yours. How exactly can you judge there ain't "any much" of tricky corner-cutting, given that it's hella tricky to notice it present? I get it that you're digging into the code for 10 years, but i also understand that such tricky corner-cutting would never do any "seriously important" stuff, too. Could it be that quite many of such little "hardly any player would ever notice" tricks - are in DLLs and such? I don't know the answer to this myself, other than to trust your judgement; which i trust more than my own. 10 years! Holy moly, right!? :thumbsup: So, i'm just wondering, here. Kinda sidenote.

About inflation: yep, it was required. I really wanted to play completely unchanged vanilla, but this one - is a must. Not because of research. You can see on my screenshots i'm so far into "Future tech" my cities choke on happiness and health. My nation has 96 years longevity, and it seems i'll get over 100 by 10000 AD, too. If the corresponding formula is not "approx 100 but never touch it", that is. No, the reason to kill inflation - was, and is, that it affects expenses: upkeep, unit maintenance and such. And it's not anyhow capped, i read. Meaning, play long enough, and _everyone_ would go 0 money. Then, units and buildings will be sold. The further it goes, the less will remain. At some point, i believe, mere super-inflated city maintenance - will cost more than any (finite map!) economy can produce. And then, way too many gameplay mechanics - just die. Stop happening. And that is something i was not fancy to accept. :) There is only one thing which makes Inflation implementation used in the game - proper and reasonable: the game was made with games intended to last until year 2050 (as mentioned in one of BtS civilopedia entries). Which in BtS is merely 500 turns on normal speed. And for this long, yep, Inflation does its job alright. But for a game of 10k or even 20k, 40k turns? Nope. It doesn't. :D

About allowing warfare: i never said i self-forbidden it. No, i merely don't declare war myself. But if an AI attacks, i fight back. Only one did it, so far - Montezuma. After few decades of war, most of his lands were mine, but i spared 2 small cities of his; "don't genocide AI civs to complete extinction" was another thing i went for. Just weaken any agreessor so much it'd take them a millenia to try again. Then he, naturally, offered peace for 3rd time - i accepted it. Mighty interesting, that war in its entirety - happened in my game's 21st century, btw. Coincedence, sure, but it gives me a goose bump or two... %/

And i like your ideas about equilibrium and restoring cities to their original owners, then going on ad infinitum to see how it'd end. Mighty fine kind of game in and of itself, that. But i won't try it. Your post about BtS being the version where forests and jungles mean a thing - you made it a while ago - actually sparked one more idea in me. Another "very long" game, which i'll do after i'm done with this one. Hopefully, it'll be better and hopefully, i'll keep going in it far further than 10k turns.

I already decided how to call that next long game of mine, too: it will be the "Evergreen game" of Civ4 BtS. I already figured out things i'll do differently in it than what i do in this one, and things which i'll keep the same. I already decided which leader and nation i will be playing my Evergreen game with. Etc. But full details about it - have to wait until i'm well into playing it. For now, though, one thing about this name - "Evergreen" game: it's not just about the forests. It's also about one very famous and classic game of chess. One of best games ever played. I keep telling myself, knowing this: "yeah, man. No pressure, right?". %)
 
The 8x8 block you cherry-picked (i get the idea - you emulate world map size, then look for similar case) - has 16 X tiles. Out of 64 total tiles. Meaning, this one has 75% desertification - not 59% like the one i quantified in my previous post. The difference is what i'd call "quite far", yeah. :(
Maybe the bottommost row can get swallowed by the spoiler box somehow. I'm counting 20.
About Firaxis coders: interesting opinion, yours. How exactly can you judge there ain't "any much" of tricky corner-cutting, given that it's hella tricky to notice it present? I get it that you're digging into the code for 10 years, but i also understand that such tricky corner-cutting would never do any "seriously important" stuff, too. Could it be that quite many of such little "hardly any player would ever notice" tricks - are in DLLs and such?
I've done a full pass of refactoring through several of the large classes, including CvGame and CvMap - one aim being to uncover unexpected program behavior (bugs especially). It's certainly possible to steamroll some intricacy of the original code this way and never notice, but, to the extent that I did notice, there was not a lot of intentional, significant, easily missed trickery. Some loop index unexpectedly starting at -1 or 1 comes to mind or the order in which a range of tiles is processed being crucial. The syncRandPlot function isn't all that sneaky either. The maximal number of attempts is a call parameter, i.e. part of the function header line, and it's named "iTimeout". Anyone taking a close look at the function would wonder what it does. It is easy to miss at a cursory look because most (if not all) call locations omit the parameter, which causes the default value of 100 to be used. (And also easy to just assume from the function name that it'll work in a certain way.) I think the programmers had enough of a sense of software engineering practices to eschew obscurity. Coding conventions are also pretty consistent throughout the code. It's not somehow generally inscrutable.

Inflation: Negative gold won't affect buildings. It's mostly just units getting deleted. Strike Economy is even recognized as a (fringe) strategy. (Not that this invalidates your whole reasoning against unbounded inflation.)

Warfare: I see, goading the AI into war and securing the Uranium (in time) that way should work too.
 
Maybe the bottommost row can get swallowed by the spoiler box somehow. I'm counting 20.I've done a full pass of refactoring through several of the large classes, including CvGame and CvMap - one aim being to uncover unexpected program behavior (bugs especially). It's certainly possible to steamroll some intricacy of the original code this way and never notice, but, to the extent that I did notice, there was not a lot of intentional, significant, easily missed trickery. Some loop index unexpectedly starting at -1 or 1 comes to mind or the order in which a range of tiles is processed being crucial. The syncRandPlot function isn't all that sneaky either. The maximal number of attempts is a call parameter, i.e. part of the function header line, and it's named "iTimeout". Anyone taking a close look at the function would wonder what it does. It is easy to miss at a cursory look because most (if not all) call locations omit the parameter, which causes the default value of 100 to be used. (And also easy to just assume from the function name that it'll work in a certain way.) I think the programmers had enough of a sense of software engineering practices to eschew obscurity. Coding conventions are also pretty consistent throughout the code. It's not somehow generally inscrutable.

Inflation: Negative gold won't affect buildings. It's mostly just units getting deleted. Strike Economy is even recognized as a (fringe) strategy. (Not that this invalidates your whole reasoning against unbounded inflation.)

Warfare: I see, goading the AI into war and securing the Uranium (in time) that way should work too.
Spoiler box it is! Damn, i copied whole block, but noticed just now it had not 8, but 7 rows. Sigh... Shouldn't change results oh so much, though. It still was 7/8th of cherry of your pick, you know. :P

Tech details: this time, it's well over my head. Can't fathom roughly half of what you said. Again, i'm sorry... :(

Man, thanks for mentioning that buildings never get sold! I never allow myself to go down into full-blown bankruptcy, so this thing about buildings being sold when having permanent-strike empire - was something i've read somewhere. I've just spent good 10 minutes trying to figure out where - and indeed, i found the lead: https://forums.civfanatics.com/threads/strike-how-does-it-work.569234/ mentions that no less than some Civ4 version's civilpedia was saying so. Which is likely where i've read it at some point. So, again - thanks for setting me straight about this one. Appreciated! :)

As for provoking AIs to declare war on me: nope, didn't do that. Quite the opposite, was monitoring "Power" stat and kept mine sufficiently high (many enough military units) to have a reasonable hope no AI would dare attack me. But, like old roman proverb goes: "if you want peace, prepare for war". That was all i did. Genuine "you don't attack me, i won't attack you" way. Provoking 'em is little different from outright slaughter, the way i see it. You know? And like i said on the 1st page of this topic - i was ready to go through full desertification, if that's what this game would end up having. Not a problem. Just makes this game's story way more sad - but it's still fun to play. Optimizing cities through all the dying, to keep an extra edge over AI, maxing out further culture gains, and so on. Approaching 5000 AD now, and still being busy about it. :crazyeye:

P.S. Oh, and one more bit of news for you: remember that 1st thing we discussed - that Nuclear Plants meltdowns effect on GW is finite length? I now see ample evidence that it's not precisely so. The GW seriously intensified while no more meltdowns happened since 4200. Thing is, after 4200 AD, i cancelled a couple UN resolutions, the AIs had over a dozen revolutions, and my own empire had about half a dozen, too. I was trying to see if such changes would result in re-distribution of their units, in hope to culturally-capture some cities. That didn't work. But now, i suspect that this one - is indeed a bug, and somehow occurs only if civilization which had some city (cities) where a meltdown happened in the past - is having some of other particular civic active. If so, changing from that civic to something else - would "resume" the meltdown(s)' effect on GW. This does seem really far-fetched, i know - but it's the best wild guess i can conjure to explain everything i saw in the game. Wild, yep!
 
Last edited:
My nation has 96 years longevity, and it seems i'll get over 100 by 10000 AD, too.
AFAIK life expectancy is calculated as (total :health:)/(total :health: + total :yuck: )*100, so it can not reach more than 100.



About BtS Inflation I recently had a look and the turn number factoring into it seems to be capped:
Code:
int CvPlayer::calculateInflationRate() const
{
    int iTurns = ((GC.getGameINLINE().getGameTurn() + GC.getGameINLINE().getElapsedGameTurns()) / 2);

    if (GC.getGameINLINE().getMaxTurns() > 0)
    {
        iTurns = std::min(GC.getGameINLINE().getMaxTurns(), iTurns);
    }
    [...]
That cap seems not to be present in 1.74.
 
AFAIK life expectancy is calculated as (total :health:)/(total :health: + total :yuck: )*100, so it can not reach more than 100.



About BtS Inflation I recently had a look and the turn number factoring into it seems to be capped:
Code:
int CvPlayer::calculateInflationRate() const
{
    int iTurns = ((GC.getGameINLINE().getGameTurn() + GC.getGameINLINE().getElapsedGameTurns()) / 2);

    if (GC.getGameINLINE().getMaxTurns() > 0)
    {
        iTurns = std::min(GC.getGameINLINE().getMaxTurns(), iTurns);
    }
    [...]
That cap seems not to be present in 1.74.
Life expectancy: suspected as much myself, from observing slower and slower rate of life expectancy increase with time. Reached 97 years by 4950 AD, now. :)

BtS inflation: most interesting! This code, i struggle to grasp the workings of, though. What is the cap? "getMaxTurns" is the maximum amount of turns the inflation rate can be based on (because of that "std::min" part)? I.e., inflation rate stops increasing after the game reaches 2050 AD on normal speed? On any speed?
 
The max-turns value gets set by CvGame::init based on the game speed setting and the start turn. That should correspond to turn 500 on Normal speed. I've noticed that the base game doesn't display the game turn; AD 2050 sounds right. However, I don't think MaxTurns will be greater than 0 if Time victory is disabled, so the cap won't apply then. In that light, this BtS addition is a little puzzling. I guess it's just for the extended game, i.e. after clicking "just one more turn." (Or maybe scenarios can set a custom time limit not tied to victory conditions?) Actually, the change only came with patch 3.13:
v3.13 readme said:
• Reduced inflation and better normalized it with game speed
• Inflation no longer increases after the game time limit has been reached
• Adjusted corporation maintenance for inflation

And like i said on the 1st page of this topic - i was ready to go through full desertification, if that's what this game would end up having. Not a problem. Just makes this game's story way more sad - but it's still fun to play. Optimizing cities through all the dying, [...]
The charm of a sand castle. Though getting inundated by sand in this case. :)
 
Last edited:
3.17 civilopedia mentions, in "beyond the steel" changes section, that in BtS games are intended to end by 2050, and that number of turns for normal speed from the start of the game to 2050 AD - is 500.

I did this one "Eternal Peace" game with only Diplomacy victory enabled, so yes, Time victory is disabled. And for Evergreen game i plan to do, it will also be. I want to maintain "no winner" state for as long as possible. Instead of Diplomacy victory, though, i'll do Conquest victory only. The plan is to keep as many AIs not completely wiped out as i'll be able to anyway, so Conquest will do for "nobody wins" and yet will leave open the opportunity to one day change my mind and actually "win" the game. The latter consideration also applies to Diplomacy, but there are two important differencies: changes to diplomacy in BtS, i don't like; vanilla UN is way more to my liking, and that BtS apostolic thing is really annoying to me; and 2nd, i found that clicking "abstain" for thousands turns is more irritating than i thought it'd be... :D

Based on 2nd line of what you quoted from v3.13 readme, i think it's indeed for "just one more turn", yes.

There is one more pretty important and game-impacting aspect of zero inflation, when disabled the way i did (which is according to this excellent and reversible instruction: https://forums.civfanatics.com/threads/is-there-a-way-to-mod-out-inflation.191246/#post-4706030 ): i believe it also affects AIs. I.e., while the player have "easier times" due to zero inflation - all the AIs also do. So it's not changing game balance any oh so much. Yet in the same time, it allows both the player and AIs to often have much bigger armies than when inflation is present. Which to me and presumably many other players can be more fun. Of course, it also contributed much to that "way too many military units in some cities to ever have any above-zero change of culturally flipping them", too - but this effect is extremely late-game and even so, not in all cities even by 5000 AD. I still have roughly half of remaining AI cities "possible to culturally flip after couple more thousands turns of cultural pressure". And even when it will be only non-culturally-capturable cities - even then i don't mind. They can't do much with a few cities which have zero workable tiles (because all the nearby lands are my territory).

Of course, BtS will be different due to much expanded spying, but i think i'll figure my ways to deal with it. Like, in this game, with vanilla spying, all the AIs keep spamming improvement sabotage all over my lands, - the only thing vanilla spies can do against me, - and i keep about a dozen automated workers on each continent who are set to "build trade network", and they restore all the sabotaged improvements automatically.

And yes, there is some charm in it. All the shores are still alive, great merchants providing food to some cities, food resources here and there providing food even on desert tile - life goes on. It's hard life, but it's still ife. Kinda like the stuff "Dune" books are all about, yep.
 
The one advantage of BtS in this scenario is Sid's Sushi. Provide food (and culture) to cities based on the number of seafood resources available. Just don't run SP.
 
Alright, I made it to 7000 AD, and global warming finally desertified all but extremely very few tiles. Over 80 percent of my cities now have zero forest, plains, grassland and flood plain tiles; the rest, 1 or 2 of those tiles tops. AIs suffered the same fate, of course.

And then, some time in early 69th century, I got myself into a situation I never experienced in a Civ game before. BTW, "69th century" - sounds wicked, eh? :D

There's Osaka - originally it was a Japan city, but it was captured by Persia some 7sh thousand years ago. And it is a holy city of Taoism, so I want to capture it - i.e. not "disband" it when my culture pressure flips it. The problem is, Persia is the last AI in my game which has access to Uranium, and Osaka had a Nuclear Plant in it. Except, few centuries ago, the thing melted down, taking out some troops in Osaka, Nuclear Plant itself, and lots of buildings. Less troops in Osaka meant i could hope to now have above-zero revolt chance in it, so it was good for that - but in the same time, it was bad, because Persia does not have access to coal, anymore. It had it before (perhaps from some trading with another AI?), but my creeping expansion cut it off by now. And there's no river near Osaka for Cyrus to build a hydro plant here. And so, what i said before about AIs not rebuilding Nuclear Plants after meltdown - turns out, only true of they have access to coal or hydro power; but when neither is available, they do rebuild Nuclear Plants after meltdowns. Not right away, but they do: freaking Cyrus now stubbornly tries to rebuild one in Osaka!

Of course, he has problems doing it: having no workable tiles (captured by my culture) means that it takes ~70 turns for Osaka to build the thing, and my spies regularly sabotaging it - means he's unable to build it for ~200 years by now (7092 AD). I intend to keep it that way, too. Because you see, while I want Osaka captured (not "disbanded" and replaced by my own city), because Osaka is a Holy City which I can not replicate, - I surely don't want it captured with a Nuclear Plant in it, which I can't remove (other than hoping it'll melt down on its own, unknown number of millenia in the future). So, for now, I am keeping it sabotaged, waiting for revolts - and if no revolts, then waiting until my cultural expansion from the north would cut off the only source of Uranium from Persia.

The question is: would cutting off Uranium (i.e. getting the tile with it into my cultural borders) - stop already-started construction of this Nuclear Plant in Osaka?

And the best part of it all? The revolt chance in Osaka. Never seen a revolt chance that low before: 0.03%. Zero point zero three freaking percent!!! %) :crazyeye: :nuke: :rolleyes: :cringe: :eek:

Here's couple screenies with it. One outside Osaka, and one inside. With that last Uranium source of Persia and that 0.03% revolt chance visible, too. Stays at 0.03% for over 150 years now, and at 17% persian population, too. If you guys have any advice, about how to avoid all the repeating bouts of spy building and sabotaging this in-progress Nuclear Plant in Osaka to smitherens every ~40 years, doing it for a few more millenia - since amounts of culture AIs accumulated on their tiles in this region is huge, by now - then please, help me! :blush:
Spoiler Osaka 7092 AD :

Osaka_7092AD.jpg


Osaka_0.0003-revolt-chance.jpg

 
The question is: would cutting off Uranium (i.e. getting the tile with it into my cultural borders) - stop already-started construction of this Nuclear Plant in Osaka?
I know with units if you I.E. are building a Swordsman and your Iron is cut off the next turn the city will complain about not being able to continue its build. If Nuclear Reactors require Uranium to be build rather than just to have an effect I'd guess it works the same way?
 
I know with units if you I.E. are building a Swordsman and your Iron is cut off the next turn the city will complain about not being able to continue its build. If Nuclear Reactors require Uranium to be build rather than just to have an effect I'd guess it works the same way?
They require Uranium to be built, yes. Thank you for this guess, man. Gives me hope. :) Still, i go on with sabotaging, for now - the game being vanilla (not BtS), it's best I can do.

Some 500sh years have passed, and Cyrus is still trying to build the darn thing. Osaka revolt chance is STILL 0.03%, even while persian population have dropped from 17% to 16% about a century ago. Weird. Rounding errors?

Also, Cyrus is now super furious about me. Every spy of mine he catches, drops the relation by -1. So far, he caught 33 spies. And it seems, there is no cap for this relations penalty. After this, he'll never forgive me, probably? As if I didn't catch hundreds of _his_ spies trying to whack my own stuff. Sigh... %)
Spoiler -33 for spying. How deep the rabbit hole goes? :

Minus_33_relations_for_spying.jpg
 
... The question is: would cutting off Uranium (i.e. getting the tile with it into my cultural borders) - stop already-started construction of this Nuclear Plant in Osaka?
I found the answer by playing it: nope! It doesn't stop it! :(

Took me nearly 3 thousands years, but I did it! :) Better yet, one fantastic story generated itself while at it. :eek: Here goes:
Spoiler the story of one hella stubborn Osaka, one hella stubborn Cyrus of Persia, and some amazing coincedences (with screenies): :
Osaka, and its conqueror Cyrus (Persia AI) - was a big-time thorn in my fillet parts for over 7 thousand years of this game. See, Cyrus kept well over 30 modern military land units in Osaka, supressing any chance for mostly american (my) population of Osaka to revolt. Worse yet, it just happened that Osaka was located in such a supremely middle spot that it slowed my further cultural expansion for thousands years. Here's how it was back in 2777 AD - the year when last war between AIs have ended. Note that troops listed on the left are from hovering my mouse over Osaka, and it is far incomplete list of 'em - full list just doesn't fit available space; also, note how Osaka was already only 24% persian city even back then:
Spoiler Osaka 2077 :
Osaka_2777.jpg
Worse yet, as you may notice from a tiny yellow star on the Taoism icon - Osaka is Taoism's holy city in my game. So naturally, I wished to culturally flip it to my empire - way more than any other city, that is. But here it stayed, Persian as ever, so close yet so not available, for thousands years; as this game is Eternal Peace, I couldn't just invade and grab it via war. And as you can also notice on the screenshot, top-left corner - that Uranium source was Cyrus' even back then, already. And even back then, it was right near the border with England to the north. And so it stayed, for over 7 thousand years: english culture was pushing that persian border, trying to snatch that Uranium - but Cyrus' culture was better, and this Uranium stayed quite firmly persian. I sure was keeping an eye on it, for obvious reasons.

Then, like i mentioned couple posts above, Cyrus had a nuclear meltdown - and it thinned his troops in Osaka. Plus, all those thousands years, i was busy building cities around Osaka, and improving culture in them, thus slowly increasing percentage of my population in Osaka even further.

And thus, some time near 7000 AD, 0.03% revolt chance have appeared in Osaka, after that meltdown - and Cyrus started to build another Nuclear Plant in Osaka. And because this game is vanilla Civ4, my spies can only sabotage a percentage of production of currently-built building; they can't remove already-built ones nor do any other fancy BtS stuff. So, still intending to culturally flip Osaka and to have it done without a Nuclear Plant in it, I then kept sabotaging Osaka production 3...4 times every 40 years (this minimizes chances to get my spies caught) - losing and re-building a spy or three, each 40 years, while at it.

And while at it, I also was busy creeping around along the coasts - both Persia and England sides, - culturally flipping some less-garrisoned cities, building my own whereever I could, putting Great Artists to work on furthering cultural pressure, etc.

Then, some time between 7800 AD and 8000 AD, revolt chance in Osaka increased from 0.03% to 0.10%, as I was pushing more and more culture into Osaka, thus increasing american population in it. I was still sabotaging that Nuclear Plant every 40 years. At this revolt chance, you can expect one revolt per every 1000 turns (years) on average. But by 9000 AD, still zero revolts in Osaka happened! Even while by 9000 AD, the chance went up to 0.23% already - one revolt per less than 500 years, on average. And still, it wasn't until 9475 AD when 1st revolt in Osaka happened. So stubborn! Kept stubborn, too: at 0.30% ... 0.36% revolt chance, it took not 300sh, but nearly 450 more years for 2nd revolt to occur, in
Spoiler 9937: :
Osaka flipped 9937!.jpg
Sidenote: apart from Osaka flipping, there's one funny thing on this screenshot: -90 relations modifier with Cyrus! :eek: Apparently, there is no cap whatsoever for how big "spies were caught" relations hit can go? As you can see, three millenia of sabotaging Cyrus' Nuclear Plant being built - got 90 of my spies caught, and so I got this huge relations hit with Cyrus. This is many times larger than any positive relations buff from _anything_ in the game. Nuts! %) Will it ever be forgotten by Cyrus, i wonder. Alas, not that i care any much, though.

Anyway, "finally - Osaka defeated, victory!!!", right?

Nope! :D

It was one last trap Cyrus made. Last freaking effort to piss me off, to make me fail at least in some way! :D Because, also in the above screenshot, you can see that Uranium source in the top part of the image - and you can see it was still Cyrus' when Osaka flipped to me. Funnier yet, the tile was only 36% Persian at the time. Meaning, I was _very_ close to flipping that Uranium tile into my territory: 35% was Persia's culture, which means remaining 65% - was the sum of my culture on this tile plus England's culture, and both my and England's culture there - were between 31% and 34%, too (otherwise, the tile would already flip to me or England).

Why was that important? Naturally - to find the answer to the question this post starts with! See, i needed to have that Uranium flipped while Osaka still belongs to Cyrus, and while Cyrus is still trying to build that Nuclear Plant.

In other words, that punk Cyrus, hating me for sabotaging his building efforts for ~3 thousand years, decided to at least mess up my chances to find the answer to that question, surrendering Osaka shortly before that Uranium tile would flip and give me the answer! Right? :lol:

"Oh no, you tricky bastard, I'll get it done now!" i thought - then saved the game (with Osaka flipped, to continue "the game proper" from it later), then loaded an earlier save, and pushed Free Religion through UN. Why that? Because UN's Free Religion nulified revolt chance in Osaka, by disabling my state religion, which was doubling number of troops which Cyrus needed to completely nulify my cultural pressure, all those thousands years; Cyrus was using Free Religion civic himself, while I was pushing in with Pacifism civic and having my state religion matching one of his religions in Osaka - Hinduism. It's a bit complicated, yeah, but it's the key thing, without which I'd never have any chance to flip Osaka in my game, ever.

Anyway, now, with Osaka still-not-flipped, with now-0% revolt chance in it, and still sabotaging that Nuclear Plant every 40 years - I made a "side fork" bit of play, just to find the answer to my question.

And then, really unexpected thing happened: that tile with Uranium - flipped to me in the year 10,000 AD. _Exactly_ the year 10k. When I saw it happen, I loaded an auto-save to 9998 AD, re-played it to 10,000 AD again - and made those two screenshots: one at 9999 AD, and the 2nd very next turn.
Spoiler That a sign? %) :
Cyrus' Uranium - not flipped by 9999 AD, tile at 35 percent.jpg


Cyrus' Uranium - flipped by 10000 AD.jpg
The rest was obvious: after that Uranium tile flipped, I checked Cyrus' Osaka (which, as you can see on both screenshots, was still building that Nuclear Plant). And I got my answer: nope - Cyrus was still building the damn Nuclear Plant! :lol: I then skipped turns to its completion, plus one turn more, and checked Osaka's complete buildings list with a spy - and sure enough, Nuclear Plant was in it. Sigh... %)

But that aside - what were the chances of all these events to happen in my game? I mean, for the very last Uranium source any AI has - to flip to me at exactly the year which I was initially planning to play this game to (10,000 AD), PLUS that same tile being almost equally belonging to three players at the time - Persia, England and my American nation? The latter thing - is by itself hella rare thing to see, already, but at exactly year 10k? "Gulp"... :eek: And on top of it, for it to happen less than a century after hella stubborn 3-millenia-long resistance of Osaka to my cultural pressure?

Those are astronomically low odds if there ever were "astronomically low", me thinks. :lol: But, it happened. I couldn't believe it. And I know, of course, that AIs in a computer game can't read human players' thoughts. I know that they are just some code running inside some silicon CPU. But still, this sure felt something like "that slippery Cyrus doing some surreal tricks again!!", you know? :crazyeye:

P.S. Yes, I reached 10,000 AD in this game. But there are still few more things to do. Last forest on this whole huge map - died to Global Warming some time in 8100s, and last non-desert non-tundra tile was desertified in 8238 AD. But, I'll keep going even further: quite some more of this game beyond 10,000 AD. As you could notice from screenshots' minimap, i'm quite close to complete cultural domination on both continents. My current hope is to solidify everything by year 12,777 AD - exactly 10,000 years after the end of last AI war; since 2777 AD, so far, it's been complete peace - not a single war, not even between AIs. "10,000 years of complete peace" - would be neat to get done. :)
 

Attachments

  • Cyrus' Uranium - not flipped by 9999 AD, tile at 35 percent.jpg
    Cyrus' Uranium - not flipped by 9999 AD, tile at 35 percent.jpg
    839.1 KB · Views: 5
  • Cyrus' Uranium - flipped by 10000 AD.jpg
    Cyrus' Uranium - flipped by 10000 AD.jpg
    839.3 KB · Views: 6
Spies aren't forgotten. As far as I can tell, all these diplo memory types never decay:
Spoiler :
Code:
MEMORY_DECLARED_WAR,
MEMORY_DECLARED_WAR_ON_FRIEND,
MEMORY_HIRED_WAR_ALLY,
MEMORY_NUKED_US,
MEMORY_NUKED_FRIEND,
MEMORY_RAZED_CITY,
MEMORY_RAZED_HOLY_CITY,
MEMORY_SPY_CAUGHT,
MEMORY_STOPPED_TRADING,
MEMORY_HIRED_TRADE_EMBARGO,
MEMORY_MADE_DEMAND
Those are the memory types defined in CvEnums.h that don't have corresponding memory decay values in Civ4LeaderHeadInfos.xml.
In the base game, one can at least argue that espionage happens so late that this normally doesn't matter. But BtS, with spy units starting in the Classical era, really should've added a decay chance. I guess it's quite consequential for these endless games; I don't think the AI ever stops sending spies, even when relations are good.
 
Spies aren't forgotten. As far as I can tell, all these diplo memory types never decay:
Spoiler :
Code:
MEMORY_DECLARED_WAR,
MEMORY_DECLARED_WAR_ON_FRIEND,
MEMORY_HIRED_WAR_ALLY,
MEMORY_NUKED_US,
MEMORY_NUKED_FRIEND,
MEMORY_RAZED_CITY,
MEMORY_RAZED_HOLY_CITY,
MEMORY_SPY_CAUGHT,
MEMORY_STOPPED_TRADING,
MEMORY_HIRED_TRADE_EMBARGO,
MEMORY_MADE_DEMAND
Those are the memory types defined in CvEnums.h that don't have corresponding memory decay values in Civ4LeaderHeadInfos.xml.
In the base game, one can at least argue that espionage happens so late that this normally doesn't matter. But BtS, with spy units starting in the Classical era, really should've added a decay chance. I guess it's quite consequential for these endless games; I don't think the AI ever stops sending spies, even when relations are good.
I see. Now I know - thanks! :) Oh well, Cyrus can't do anything against me anyway, by now. He can remain furious for eternity all i care - it's way over-late-game indeed. And your note about BtS being different in this regard - i completely agree with.

Also, I just made a discovery you may possibly like, right after resuming proper play with Osaka flipped: can't build Taoism's shrine in it!
Spoiler details :

I sent three Great Prophets to Osaka, which i got saved for such occasions from much earlier. One after another; one was even "named", i.e. some 8sh-millenia old (heh, quite an old fella indeed! :lol:). Yet, none of them had that "build Holy Thing" button when standing in Osaka. The Taoism's shrine is not in Osaka, too - checked thrice. Thing is, i was able to build other religions' shrines in cities i culturally flipped from other AIs - two of them: the Hinduism shrine in Thebes, and Confucianism shrine in Tarsus. Just checked the game's wonders list to be sure - yep, both there.

There are two things different between those two other holy cities and Osaka, which is the only one holy city in the game not allowing to build a religion's shrine in it:

- Osaka did not belong to the AI i culturally flipped it from: it was 1st captured by an AI from another AI. The other two - both Thebes and Tarsus - i culturally flipped from AIs who created those holy cities;

- Osaka had a nuclear meltdown. Which - i just checked by loading earlier saves - actually destroyed Taoism's shrine there: in 5000 AD, before meltdown, Osaka had it (Dai Miao), but in 7000 AD soon after meltdown - nope, no Dai Miao among Osaka's surviving buildings.

P.S. And now i wonder: which one of those two circumstances - disables a holy city's ability to have a prophet to build a shrine in it? I suspect the meltdown. Guess it's one more reason to steer clear from those damn Nuclear Plants, "for the long run"... :cool:
edit: oh, actually, AIs do stop sending spies when relations are good! I also thought they don't stop it, but, with little to do (everything i wanted is already built, and very few things happen, like great people born and very slow borders' changes) - i just played from 10000 AD to 10400 AD while checking for "AI spy was liquidated" messages every turn. Results are completely conclusive, to me:

- having same 6 AIs during those 400 years, no trading, no open borders, refusing all and any offers just like i did for thousands years prior;

- all 6 remained at one and same relation with me, each: two "Pleased", one "Cautious", one "Annoyed" and two "Furious";

- few dozens "AI spy was liquidated" messages observed during those 400 years, and every last one of them named one of the three AIs which are "Furious" or "Annoyed" at me. Zero such messages about other 3 AIs.
 
Last edited:
Fun project! Except the global warming part. I hate that mechanic; I don't know the exact details but I never seem to be able to do anything about it other than end the game before it becomes a problem. Back in Civ 3, if I kept my pollution well in hand and didn't do anything ridiculous, I could stave it off indefinitely. In Civ 4 it doesn't seem to matter even if I'm running clean energy everywhere, the global warming just keeps coming. ...
Thanks again for support - and now, this project is complete! I just added my final report under 1st spoiler in the 1st post of this topic. I hope you will like it. :)

And global warming - was surprisingly fun to play through. Sure, it literally killed most of my people, lands and made the view hella sad, but it was the key, i think, that i disabled inflation: it allowed me to survive global warming, despite heavy losses, in totally acceptable shape and form. And as AIs were hit by global warming about just as much, all the while inflation for them was disabled also (i believe) - things ended up quite swell and playable.

That said, yep, global warming is bad. I just prefer things being green, not sandy, yep! And indeed, there is a way to prevent global warming in Civ4 - indefinitely, - but it requires playing BtS, not vanilla Civ4 like i did in this game. And so, several posts ago in this topic, i came up with the idea for my next project: the Evergreen game. One similarly long game (or perhaps, even longer - i now consider trying to go for 100k years, even), but one which will see no global warming whatsoever.

One thing i'm not sure about, though: if i'm going to make a separate topic for my Evergreen game, which i'm about to start playing now, - then when should i do it? It'd be an effort even longer than this one, so on one hand, it feels weird to start a forum topic about it when only small fraction of it is actually played, - but on the other hand, it also feels weird not to share quite big chunks of fresh memories, and possibly related questions, as i play it. Any advice please, if you may? :undecide:
 
I would create such a thread as soon as I have something to share. That the game is not close to completion is not a reason not to talk about it, if there is something to talk about.

Maybe once you enter what normally is considered to be the 'late-game', as that is when global warming will come into play? The earlier game is just setting up for this part, so in itself not very interesting for this idea.
 
- few dozens "AI spy was liquidated" messages observed during those 400 years, and every last one of them named one of the three AIs which are "Furious" or "Annoyed" at me. Zero such messages about other 3 AIs.
I thought they'd at least want to keep eyes on all rivals, but the function names in the AI code (edit: AI_sabotageSpy, AI_destroySpy) already suggest that the AI indeed only sends out spies with an intent to sabotage improvements or to destroy production. And both of these functions indeed have checks for attitude being Annoyed or worse. BtS, however, has added a function AI_reconSpy, which does not have an attitude condition. So I fear your Evergreen game is destined for perpetual redness of diplo modifiers on the (BtS-introduced) "Glance" overview tab of the Foreign Advisor.

Shrines are set to NukeImmune in BtS, indeed already in Warlords, but not in the base game. I didn't know that. Also rather surprising that the Shrine can't be re-erected. Well, not feeling too motivated to look into that because this situation can't occur in BtS anyway. Edit: Probably just the regular BuildingClassCreatedCount kept by CvGame. That count never seems to decrease, in particular not when a city a razed. Which is why razed wonders can't be replaced either.
 
Last edited:
I thought they'd at least want to keep eyes on all rivals, but the function names in the AI code (edit: AI_sabotageSpy, AI_destroySpy) already suggest that the AI indeed only sends out spies with an intent to sabotage improvements or to destroy production. And both of these functions indeed have checks for attitude being Annoyed or worse. BtS, however, has added a function AI_reconSpy, which does not have an attitude condition. So I fear your Evergreen game is destined for perpetual redness of diplo modifiers on the (BtS-introduced) "Glance" overview tab of the Foreign Advisor.

Shrines are set to NukeImmune in BtS, indeed already in Warlords, but not in the base game. I didn't know that. Also rather surprising that the Shrine can't be re-erected. Well, not feeling too motivated to look into that because this situation can't occur in BtS anyway. Edit: Probably just the regular BuildingClassCreatedCount kept by CvGame. That count never seems to decrease, in particular not when a city a razed. Which is why razed wonders can't be replaced either.
Excellent answer, and perfectly clear - thanks! And somewhat surprisingly - it fits my plans for Evergreen game, too! :)

I already started it. Now reached 1000 BC, and things are going swell, so far: got 5 cities and soon will be at least 8, two out of three so-far discovered religions having Holy Cities in my empire, all the good wonders built, etc.

I'm mighty curious about what you'd think about my chances to achieve my goals in Evergreen, too. The "short" of its plan - is this: in BtS, prevent GW by preventing too much pollution by stomping AIs before they could pollute too much, prevent any and all nukes and meltdowns, and achieve over 40% forest cover for the world ASAP - to make GW impossible ever since.

This simple idea actually generated whole set of self-imposed rules and consequences, and quite a distinct play style emerged out of it. Here goes:
Spoiler Evergreen game: rules, options, emerging playstyle :

- map: Earth2, single player "Custom game" mode. Victory types: Conquest, only. Size = huge, climate = temperate, sea level = low. More small islands with the latter, which is great;

- number of AIs: default (10);

- player nation = Portugal, because of three things:
-- territory color = deep leaf green (for "Evergreen" game? YEAH PLEASE! :D );
-- unique building = +1 commerce on water tiles;
-- unique unit = caravel which can move settlers and troops;
// +1 commerce on water is of extreme importance due to rule #1, see below; caravels which move any units - also extremely important, because on Earth2 map, both Americas, Australia and all the islands have zero AI presense at the start.

- leader = Willem Van Oranje (Dutch; "Unrestricted leaders" setting used):
-- +1 commerce on any tiles with 2+ commerce already, i.e. all coast tiles;
-- +2 Culture everywhere at all times is just so very nice early on, and remains a bit of help forever;
-- I enjoy Library and Theatre double speed, too;
// again, extra commerce is extremely important due to rule #1 below, and this one works from turn 1, so _very_ helpful.

- game options: Warlord difficulty; cities can't by flipped by culture; no technology brokering; inflation disabled (same method i used for Eternal Peace - so, both for me and AIs, i believe).
// Warlord due to no creeping-in diplomacy deterioration which exists in higher difficulties, and to compensate for major extra development speed decreases caused by rules #1, #2 and #6 (below); no cultural flips - because rule #5;
// inflation disabled due to both you and me suspecting that BtS limit to it only applies to "One More Turn!.." phase of the game, which my Evergreen game won't ever be played in for any amount of time. I'll avoid reaching it.

- extra self-imposed rules:

-- rule #1: do not improve non-hill non-forested land tiles without a resource. I.e., i will have no farms, no towns, no workshops, no roads, etc on such tiles.
// exceptions: roads / railroads occasionally allowed, but only if it's the only way to keep my trade network in one piece, i.e. there is no way to place roads through any nearby hills, deserts, ice and/or existing forests;
// reason: gotta keep those tiles open for further forest growth, so no "production" improvements; and at max probability of it, so no roads;
// consequences: major slow-down of overall development and progress of my civilization; and, water tiles become massively more important for generating commerce and growth-sustaining food for my cities.

-- rule #2: do not chop down any forests and jungles.
// exceptions: allowed on tiles with resources to get the resource; allowed to create a city on a tile, when the tile has a forest;
// reason: gotta need forests to fight Global Warming! :)
// consequences: no relatively significant production boosts from chopping down (quite abundant) forests of Earth 2 map; not possible to create mines on initially-forested no-resouce hill tiles (which are quite many).

-- rule #3: any AI which is observed violating rule #1 - automatically becomes my enemy (which in practice - all of them, yep): i will declare war, privateer, sabotage etc as i see fit.
// reason: gotta slow them down and once possible, stomp them back and down in development. If they'll industrialize (Coal Plants, etc) too much before 40% world forest cover is achieved - Global Warming will reduce too much of the world to desert, where forests can't grow, and complete world desertification will follow;
// consequnces: they all will end up my enemies, means the difference between vanilla and BtS in terms of good-relations AIs not sending spies - does not matter. %)

-- rule #4: once at war with any AI, pillage all improvements in their territory which violate rule #1.
// reason: same as for rule #1. :)

-- rule #5: do not genocide, i.e. do not capture or raze any AI's last city.
// reasons: wanna keep the game "not won" by anybody for indefinitely long time, so at least one AI must remain alive anyway; and then - the more the merrier, right? :)
// consequence: need "no cities flipping by culture" option enabled, with which i should be able to eventually have last-remaining-city of an AI completely surrounded by my territory, becoming 1-tile AI nation and then _remaining_ on the map for eternity - no matter whether it has sufficiently huge garrison to prevent revolts, or not;

-- rule #6: do not use any polluting buildings.
// consequnces: no Forges, no Factories, etc all the way until i'll construct Recycling Centers 1st. And no Coal plants ever. This is one more major slow-down for mid-game: Recycling Centers is quite late tech. Plus they take quite long time to build even after Ecology is discovered - especially in cities which at the time will have no Forges, no power plants whatsoever (they all require Factory, which is polluting), etc. And on top of it, AIs will snatch couple good wonders - ones which require polluting buildings and/or pollute themselves.

-- rule #7: do not make colonies / vassals, and don't accept AIs' requests to become a vassal in exchange for my protection, too. Ever.
// reasons: they chop trees. Can't allow that. Plus, the whole BtS colonies / vassals mechanic - kinda smells cheap and lazy, to me.

And that's it.

But, amazingly, this set of rules and circumstances, which emerges as pure "egotistical" plan for no-GW game - actually even creates one hella consistent "environmentalist's civilization" story, too! This sorta story:

Once upon a time, Van Oranje happened to lead people of Portugal, and they decided that Nature - must be protected. That humans must make as little impact on Nature as they possibly can. And so they did. When they observed other nations exploiting Nature too much, they decided to be Nature's arm - a force which will fight back, for Nature. Trees and grass can't defend themselves against axe and fire - so, people of Portugal will defend them. Alas, in Nature, even parasites have their place; all kinds of life - have a place. And so, even if some other nations behave as if they are nothing but parasites, who exploit Nature in all sorts of bad ways - it's wrong to completely destroy even such nations. And that is why, just like in Nature, it's right to fight any parasite which multiplied too much, and is now a danger to many other life forms - but it's not right to drive even such parasites to complete extinction.

P.S. You see? It's kinda all fitting together: in-game playstyle which is completely pragmatic, solely a consequence of "we don't wanna Global Warming to happen" single goal - creates a kind of play style which is pretty exactly of what we'd expect out of some "model environmentalist / Nature-loving / Greenpeace fanatic" kind of a player. Quite the confirmation of how well Civilization 4 BtS is done, as a game, in this regard, i think. Ain't this amazing? :)

P.P.S. Perhaps you remember what i said many posts ago about me preferring vanilla Civ4 because of all the pesky missiles, stealth destroyers, etc BtS adds? Well, i hope i won't have to deal with any many (perhaps - any at all?) of those in Evergreen game, too. If i'm good enough doing rules #3 and #4 above quickly enough - then they won't get any, yeah? %) Alas, i probably won't manage to do that well, and will have to endure quite some. Prepared to. "If i must..." sorta thing.
 
Last edited:
Top Bottom