Caveman 2 Cosmos

Is there a listing somewhere of the number of tiles (X by Y) per Map Size? I've looked and haven't found it yet.

Thread from the last time this was asked...

Well, I guess nobody posted the actual "standard" sizes used by C2C, so I'll do the math for you:
Duel: 40 x 24
Tiny: 52 x 32
Small: 64 x 40
Standard: 84 x 52
Large: 104 x 64
Huge: 128 x 80
Giant: 160 x 100
Gigantic: 200 x 120

Note that all of these up through Huge are the same size as those in regular BtS.

Also note that any map script can override these values. You can find these sizes out only by inspecting each map script's .py file to see if it defines a "getGridSize" function to override the standard sizes. For example, the C2C_Terra map script (the Terra script is the only map script that came with BtS that overrides the sizes) has all the map up though Large actually be 1 size larger, then with its Huge being slight smaller than the regular Giant, its Giant is 28 narrower than the regular Gigantic but just as tall, and its Gigantic is 16 wider and 32 taller than the regular Gigantic (216 x 154).

I also know that the C2C Perfect Mongoose map script overrides the sizes, but I think they are not quite as large as the Terra maps - they are a bit larger but most of them are not quite as large as the next standard size and Gigantic is slightly narrower but slightly taller at 192 x 128.

Sometime somebody might go through all the C2C map scripts to find out which ones override the sizes. (But not me now.)
 
I particularly like the land unit spawning in the coast tile. Apart from anything else, it gives me hope that there will one day be:
- combat between sea and land units
- gunships (and amphibious future tech?) that can traverse coast and reach nearby islands

In my vers it gets transported to the nearest mainland if you don't pick it up. A canoe on the other side of the world is worse than useless (when even most of my exploratory galleys are holed up hiding from pirates), whereas an obsolete land unit occasionally comes in handy.

You should only get a canoe if you are in the canoe era, ie Prehistoric-Ancient. Ie they are era related soyou should get a carval latter on.
 
Goody Islands use the same mechanic as goody huts the code associated with it just turns barbarian land units int sea units if you get hostile natives. You have just been having bad luck. I a doing some work on changing some of the other results too so that if you get a land unit it will be replaced by a navy unit instead but that is going slowly.

Gotcha... though - gotta say... this is a truly extraordinary run of bad luck like I've never seen before -- popped another 10 or so (and tried a few save/reloads - I've got new random seed enabled). I know the goodies scale to difficulty - but I've still just got to monarch. I should also note - landing some settlers on a largely unexplored large island/continent - and running across a few land goodies, I am getting nominally expected results.

I wonder if maybe c2c needs either a sea scoutish unit? Something that gets the same wanderer/explorer/scout/etc bonus to pop islands? Or - perhaps a promotion line that gives sea units a goody 'better results' bonus?

I'm guessing the bad news canoes are mostly a result of the unit essentially acting liking a warrior popping a land goody based on what you said.

Another thought...

I do personally tend to find the islands a bit unbalanced -- i.e., I sprint to rafts because then I inevitably get to pop dozens of islands before the AI even learns how to swim.

Some mechanism to make the goody islands as... well... unlucky as I've found them to be until you discover some technology that allows a promotion path to improve results would give this the nerfing it needs.... assuming I wouldn't always be as unlucky as I seem to be in the current game... which is fine - because it actually is turning the islands into more of an obstacle than a goody (i.e., I'm now sailing AROUND them for now, rather than losing my rafts to the inevitable barbs).
 
Thread from the last time this was asked...

Well, I guess nobody posted the actual "standard" sizes used by C2C, so I'll do the math for you:
Duel: 40 x 24
Tiny: 52 x 32
Small: 64 x 40
Standard: 84 x 52
Large: 104 x 64
Huge: 128 x 80
Giant: 160 x 100
Gigantic: 200 x 120

You forgot

Enormous: 240 x 160
Immense: 300 x 200

Also, when I was going around adding those new map sizes, teh only script I found that was overriding the WorldSizeInfos was PW3, so I made it do the same thing for the two new sizes.
 
Sooo, this information is now in the FAQ?:mischief:

Thx;), that is a much needed one, also can you check the beginning of the J Smith thread, i put some info there also, that might be helpful??
 
Also, when I was going around adding those new map sizes, the only script I found that was overriding the WorldSizeInfos was PW3, so I made it do the same thing for the two new sizes.

Interesting, as just today I was trying to make a map in the worldbuilder. I created a game with a Giant size map using the C2C Pangaea script. I was expecting 100 tiles N to S, but by the time I got 50 tiles S from the top edge, I was nearly to the beginning of the southern arctic zone. I'll have to try a different script and see what happens.
 
Thread from the last time this was asked...

Well, I guess nobody posted the actual "standard" sizes used by C2C, so I'll do the math for you:
Duel: 40 x 24
Tiny: 52 x 32
Small: 64 x 40
Standard: 84 x 52
Large: 104 x 64
Huge: 128 x 80
Giant: 160 x 100
Gigantic: 200 x 120

Note that all of these up through Huge are the same size as those in regular BtS.

Also note that any map script can override these values. You can find these sizes out only by inspecting each map script's .py file to see if it defines a "getGridSize" function to override the standard sizes. For example, the C2C_Terra map script (the Terra script is the only map script that came with BtS that overrides the sizes) has all the map up though Large actually be 1 size larger, then with its Huge being slight smaller than the regular Giant, its Giant is 28 narrower than the regular Gigantic but just as tall, and its Gigantic is 16 wider and 32 taller than the regular Gigantic (216 x 154).

I also know that the C2C Perfect Mongoose map script overrides the sizes, but I think they are not quite as large as the Terra maps - they are a bit larger but most of them are not quite as large as the next standard size and Gigantic is slightly narrower but slightly taller at 192 x 128.

Sometime somebody might go through all the C2C map scripts to find out which ones override the sizes. (But not me now.)

Wasn't there something about those numbers being then multiplied by 4 to get the actual dimensions in tiles?
 
I just wanted to be sure because I'd like to create some CvGame functions that enable us to scale a number of things to map size and it's necessary to be clear about that before moving forward on such a project.
 
I just wanted to be sure because I'd like to create some CvGame functions that enable us to scale a number of things to map size and it's necessary to be clear about that before moving forward on such a project.
Just use adaptValueToGame(int iID, int iValue) in CvGameObject and add scaling percents for the same ID to CIV4WorldInfo.xml:

Code:
			<Percents>
			  <Percent>
			    <ID>ADAPT_WHATEVER</ID>
			    <iValue>250</iValue>
			  </Percent>
			</Percents>
 
Sorry AIAndy... I'm getting better at following you but I got lost on this one.

First, looking at adaptValueToGame, yes it looks like its very cool. What exactly is the iID parameter for? The game object's self ID? When calling to this, can you use 'self' to refer to that (if we're calling from say, CvUnit about a unit value)?

And just to clarify, in reference to CiV4WorldInfo.xml. You're saying to put the <Percents> XML code as you showed under each WorldInfo entry? Then, what, the iValue becomes the % modifier (with 100% being the middle point right?) and whenever any value calls for adaptValueToGame it will adapt that value based on the Percents iValue you've put under the current game's appropriate WorldInfo entry?

What confuses me about this all is when I look at adaptValueToGame it shows that you've already included consideration for all that:
Code:
int CvGameObjectUnit::adaptValueToGame(int iID, int iValue) const
{
	iValue = (iValue * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getPercent(iID)) / 100;
	[COLOR="Red"]iValue = (iValue * GC.getWorldInfo(GC.getMapINLINE().getWorldSize()).getPercent(iID)) / 100;[/COLOR]
	return (iValue * GC.getHandicapInfo(GET_PLAYER(m_pUnit->getOwnerINLINE()).getHandicapType()).getPercent(iID)) / 100;
}
Is this then simply to say that the one step that still remains in setting up the use of this function properly would be to add the <Percents> lines as shown above to all the WorldInfo.xml file entries?

I'm quite certain this is brilliant and a lot of what I had in mind to an extent (though we'd naturally do things a lot differently in implementation I almost always feel your methods are a lot better than anything I'd come up with!) but it'd be helpful to clear up any confusion I may have on this matter.

Another thing: It'd been brought up earlier to possibly scale more things for game difficulty as well. It appears it'd be fairly easily done through this mechanism too. What do you think about that?
 
Sorry AIAndy... I'm getting better at following you but I got lost on this one.
Well, I did not explain that enough yet.
I wrote this method mainly to allow scaling for integer expression values to game speed, map size and difficulty. That is what the Adapt tag does and to refer to a specific scaling an ID is used. The Percents tags are allowed in all 3 of those files and you use the same ID to define a scaling there. An ID could be something like ADAPT_CULTURE_OUTCOME. If you use the same ID in all three files, that is valid and all three scalings will take effect (they are multiplied, so 200 from speed scaling, 200 from map size and 200 from difficulty will result in a value scaled by 800%).

First, looking at adaptValueToGame, yes it looks like its very cool. What exactly is the iID parameter for? The game object's self ID? When calling to this, can you use 'self' to refer to that (if we're calling from say, CvUnit about a unit value)?
No, that parameter takes the resolved scaling ID, for instance GC.getInfoTypeForString("ADAPT_CULTURE_OUTCOME").
If it is a time sensitive function (so you don't want to resolve a text ID all the time), use something like this:
Code:
int iMyValue;
CvPlayer* m_pPlayer;
// calculate the value for this player

static int iAdaptID = -2;
if (iAdaptID == -2) // resolve the id
{
  iAdaptID = GC.getInfoTypeForString("ADAPT_MY_GLORIOUS_VALUE");
}
// Now scale my value for this player
iMyValue = m_pPlayer->getGameObject()->adaptValueToGame(iAdaptID, iMyValue);

And just to clarify, in reference to CiV4WorldInfo.xml. You're saying to put the <Percents> XML code as you showed under each WorldInfo entry? Then, what, the iValue becomes the % modifier (with 100% being the middle point right?) and whenever any value calls for adaptValueToGame it will adapt that value based on the Percents iValue you've put under the current game's appropriate WorldInfo entry?
Yes, except that you can have many Percent entries and you refer to the one you want by the ID.

What confuses me about this all is when I look at adaptValueToGame it shows that you've already included consideration for all that:

Is this then simply to say that the one step that still remains in setting up the use of this function properly would be to add the <Percents> lines as shown above to all the WorldInfo.xml file entries?
Yes, and calling adaptValueToGame of course. Btw, using adaptValueToGame does not even require that Percents for the ID are in the files. If they are not, then it simply defaults to 100%, which means unchanged value and you could add Percents later.

I'm quite certain this is brilliant and a lot of what I had in mind to an extent (though we'd naturally do things a lot differently in implementation I almost always feel your methods are a lot better than anything I'd come up with!) but it'd be helpful to clear up any confusion I may have on this matter.

Another thing: It'd been brought up earlier to possibly scale more things for game difficulty as well. It appears it'd be fairly easily done through this mechanism too. What do you think about that?
Yes, it can scale to game speed, map size and difficulty with a single call to adaptValueToGame (you just use the same ID in all three XML files).
 
Not much more needs to be said I think (although a quick rewrite of what you posted there AIAndy into a Modder's Guide post could be useful for us all.)

Otherwise all I'll say is:
I get it.
It's the perfect solution and has considered all possible angles. Absolutely amazing thinking and application skills being employed here. This will be incredibly useful!
 
Greetings once more! :)

Could someone please explain the mechanics behind crime, air and water pollution (i.e. the "features"). I've been trying hard to suppress these things for a couple of turns (i.e. building tree nurseries, ecologists and policecars), but then on a single turn everything pretty much inverted (sorry, the screenshot and savegame got lost here :( )

For instance, before that turn I had the maximum crime increase of about +1 in one of my cities. After that turn I had about +275 in some other city; and most cities started having a positive crime rate! Same happened to water pollution score, which was previously quite low (negative, in fact) mostly everywhere.
And after that turn things reverted to more-or-less normal figures, and crime crawled back to negative values in three or more turns.

Is this a mechanic of these features, or how else did it happen? Or did my figures glitch again (I once more managed to pump my city to over-the-integer limit culture, and its culture turned negative. During the game I also never got first place on the "most cultured" civ list, though my culture level clearly and evidently suppressed everyone else's).
 
Top Bottom