Why is the 18 civ cap limit not raised!?

What should be done with the 18 civ cap limit?


  • Total voters
    124
zx1111 said:
If you mod the MAX_NUM_PLAYERS constant to 24 or 32 then the data items are pre-allocated to that size
so that you can play 32 Civs according to Dale. It is improvement over previous vanilla version.
By doing this, Such change will not adversely affact minumum requirement of the game for low to mid range machine
and will not slows down players who does not want to play more than 18 Civs. Wise move for Firaxis..
I don't know how true this is but I did notice with Civ3 that the memory requirments increase with each expansion. Warlords minimum/recommend specs remain unchanged from civ4.
Civ3 = 32mb (64mb recommended)
PTW= 64mb (128mb rec)
C3C= 128mb
 
You can't just simply "delete" the civ cap. A lot of data members are arrays and need to be set at a "starting size" in the DLL so that memory can be allocated to those data members. This means a literal number needs to be assigned to them for this to happen. All of these datamembers point back to MAX_CIVS which WAS hardcoded in the exe for vanilla Civ4. Now with Warlords we can change that number, but it still has to be a number.

So for all intents we can set ANY number here, but it still HAS TO BE A NUMBER. Thus, a civ cap will always exist. :)

Dale
 
Dale said:
You can't just simply "delete" the civ cap. A lot of data members are arrays and need to be set at a "starting size" in the DLL so that memory can be allocated to those data members. This means a literal number needs to be assigned to them for this to happen. All of these datamembers point back to MAX_CIVS which WAS hardcoded in the exe for vanilla Civ4. Now with Warlords we can change that number, but it still has to be a number.

So for all intents we can set ANY number here, but it still HAS TO BE A NUMBER. Thus, a civ cap will always exist. :)

Dale


So, before I dive into the SDK again, is it just ONE number in the DLL that needs to be changed? Maybe someone could post the change(s)?
 
AlCosta said:
But, for example, we could set it to 1,000,000, and that would be the civ limit.

Yeah, if your computer can handle an array of this length - not to forget regularly checking every element of it for a player who is currently alive. An example to clarify the matter:

The game has many loops that look like this:

Code:
			for j in range(gc.getMAX_PLAYERS()):
				if (gc.getPlayer(j).isAlive()):
					screen.addPullDownString(self.szDropdownName, gc.getPlayer(j).getName(), j, j, False )


'Translated' this means:

For every element j from 1 to the max numbers of players (or 0 to x-1, to be more exact), do the following:

check if player j is alive. if yes, do something clever (it doesn't matter what exactly).

I don't know whether you have any programming experience, but I think it is self-explaining that the more reiterations a loop has, the longer it takes to compute - thus setting NUM_MAX_PLAYERS to 1,000,000 will dramatically increase the workload (I doubt you will even be able to start a game).
 
Teg_Navanis said:
I don't know whether you have any programming experience, but I think it is self-explaining that the more reiterations a loop has, the longer it takes to compute - thus setting NUM_MAX_PLAYERS to 1,000,000 will dramatically increase the workload (I doubt you will even be able to start a game).
Well damn, so we'll have to wait a few years before a "The RealWorld - The Ultimate Scenario" can be made with every single nation ever to walk this planet?
 
Because the difference between 2 & 18 isn't that great ;)

But a new thing like if player j = alive, then playerAmount = playerAmount + 1. This could be checked every tenth turn, and thus you could have hundreds of civs which are born & die away (ala Rhye's), but still have a fast game.
 
For those who want it, a Warlords DLL file set to 32 civs.

http://users.tpg.com.au/thesdale/CvGameCoreDLL.dll

There are UI problems (that many don't fit on the right side of the screen in normal resolution) and the diplomacy window is ridiculous.

Also, note that you have to create your own scenario file! Using "Custom Game" will still only allow 18 civs. You have to start an 18 civ map, enter World Builder, save it, come out of Warlords, then open the save in notepad. After that, you need to manually add any extra civs you want.

Complicated, but this was never meant to be supported by Firaxis. Thus it is possible, but still a bit of playing around to get it.

Dale
 
Dale said:
For those who want it, a Warlords DLL file set to 32 civs.

http://users.tpg.com.au/thesdale/CvGameCoreDLL.dll

There are UI problems (that many don't fit on the right side of the screen in normal resolution) and the diplomacy window is ridiculous.

Also, note that you have to create your own scenario file! Using "Custom Game" will still only allow 18 civs. You have to start an 18 civ map, enter World Builder, save it, come out of Warlords, then open the save in notepad. After that, you need to manually add any extra civs you want.

Complicated, but this was never meant to be supported by Firaxis. Thus it is possible, but still a bit of playing around to get it.

Dale

Are you sure about creating your own scenario file? I downloaded Rhye's 24 civs/Earth map and just replaced the dll file with his. I was able to select 24 civs using the "Custom Game" option.
 
This is great for the Revolution mod though since the number of active civs will probably hover around 18 but can still exceed that number when necessary and doesn't require that a free slot be made from one of the existing 18.
 
Stupid question maybe, I don't really understand everything that was said... :blush: But let's say I have no desire to play with more than 10 civs, would I gain increased performance if I used a dll file changed to have 10 as the maximum number of civs?
 
Now that the problem is solved... can we close this thread, so people don't get the wrong idea?
 
Mesousa said:
Stupid question maybe, I don't really understand everything that was said... :blush: But let's say I have no desire to play with more than 10 civs, would I gain increased performance if I used a dll file changed to have 10 as the maximum number of civs?
No.

And dh_epic, I edited my original post to link to the topic to increase the civ cap limit.
 
Good call :)
 
zx1111 said:
Because many data array items in Civ4 is pre allocated in fixed size to MAX_NUM_PLAYERS.
So even when you play just 2 player game, the whole memory for 18 Civs are allocated but only first 2-4 elemets of the arrays are actually used.
They are not dynanamically resized proportionally to actual number of players.
Many things are pre-allocated before you choose game and decide actual number of players and playing actual game.
So they must be allocated to maximum possible size of the array ( 18 in current Civ 4)

If you mod the MAX_NUM_PLAYERS constant to 24 or 32 then the data items are pre-allocated to that size
so that you can play 32 Civs according to Dale. It is improvement over previous vanilla version.
By doing this, Such change will not adversely affact minumum requirement of the game for low to mid range machine
and will not slows down players who does not want to play more than 18 Civs. Wise move for Firaxis..

Ahaaaa. Thanks for clarifying.

I think I will keep increased caps well away from my precious 512mb of RAM.
 
Mrdie said:

Why, it seemed to be that in 2 games

1. with 6 players and a cap of 8
2. with 6 players and a cap of 24

the second one would do ~18 'useless checks' per turn/situation, and the first one would only do 2 'useless checks' per turn/situation

so would not the first one go faster?
 
Actually, it would, but I don't know if the difference is big enough to notice.
 
Krikkitone said:
Why, it seemed to be that in 2 games

1. with 6 players and a cap of 8
2. with 6 players and a cap of 24

the second one would do ~18 'useless checks' per turn/situation, and the first one would only do 2 'useless checks' per turn/situation

so would not the first one go faster?

Exactly my idea. If the difference between 18 and 24 is big enough for Firaxis to keep the "official" limit at 18, why is the difference between 18 and 10 or an even smaller number insignificant?
 
Back
Top Bottom