[BTS] and [BTS] Larger City Radius and Open Borders Tech Trading

Mylon

Amateur Game Designer
Joined
Nov 4, 2005
Messages
1,013
Version 1.13 is here for 3.17

Enhanced Sized Cities - Cities expand their radius with larger cultural borders. After a certain size, the city expands to a radius of 3, and at the level before legendary, radius 4. The actual culture level this happens at is controlled by the xml. Cities also can gain a health and happiness boost from higher culture. By default, this bonus is +1 happiness per level,, starting at Fledgling, but no health bonus. Also moddable with XML.
Get version 1.13 here:
http://forums.civfanatics.com/downloads.php?do=file&id=6993
This mod is for version BtS 3.17

Open Tech trading - If trading with a civilization and researching a tech they have and you don't, you get a +150% research boost in all cities.
Get version 0.81 here:
http://forums.civfanatics.com/downloads.php?do=file&id=9352

This mod is for version BtS 3.03
 
Game Design wise, I'm not sure how the city radius should work. With my mod it goes 1 - 2 - 2 - 2 - 2 - 2 - 3 - 3 - 4 - 4. That's a lot of 2s! There is no actual radius 1, but it would be trivial to add. Radius 2 comes early and radius 3 seems to come late. Aside from the radius 1 part, this is moddable with a simple XML change.
 
Game Design wise, I'm not sure how the city radius should work. With my mod it goes 1 - 2 - 2 - 2 - 2 - 2 - 3 - 3 - 4 - 4. That's a lot of 2s! There is no actual radius 1, but it would be trivial to add. Radius 2 comes early and radius 3 seems to come late. Aside from the radius 1 part, this is moddable with a simple XML change.
Seems that radius 3 becomes available rather late, I think it should be available sooner.

When I edited CIV4CultureLevelInfo.xml I notised the following:

Code:
		<CultureLevelInfo>
			<Type>CULTURELEVEL_DISTINGUISHED</Type>
			<Description>TXT_KEY_CULTURELEVEL_DISTINGUISHED</Description>
			<iCityDefenseModifier>0</iCityDefenseModifier>
Why does CULTURELEVEL_DISTINGUISHED have 0 iCityDefenseModifier, shouldn't it be higher?
 
Could you explain what changed you made in CvInfos.cpp? I can't find any Mylon tags in it

Oh, that's just me being sloppy. I added in the ability to read (and call) the radius from culture level. I think the tag you should look for is iCultureRadius. It needs to be declared, read from the XML, and a given a function that returns the info when required. There may be bits changed that are not tagged. Your best bet would be to use a comparitive tool like winmerge.

As for the iCityDefense Modifier... It shouldn't be 0. If anything the iCityDefense could probably use an overhaul to make it more fluid (instead of merely repeating the value at some levels).
 
Good news, I managed to create an extra fat cross level for LEGENDARY cultural level (which allows 8 additional tiles to work on). I also added 2 additional levels between range 2 and range 3 (each giving 4 additional tiles to work on) and 1 additional between range 1 and range 2. Now the only thing ramaining is to create 1 additional levels between range 3 and range 4, but this shouldn't be any problem. :p
 
Heh, I hadn't thought of breaking it up into something smaller than simply, "city radius 1, 2, 3, or 4". I still notice some rather big jumps in your progression.

Looking at it from the delta aspect, you have:

POOR: 9
FLEDGLING +4
DEVELOPING +8
ELEGANT +4
REFINED +4
DISTINGUISHED +8
INFLUENTIAL +12
ICONIC +12
LEGENDARY +4
 
LEGENDARY allows +8 tiles, not +4

The reason it has grows this way is because in order to grow double symetrical, it has must grow with a multitute of 4. Meabee we can compensatie this slightly irregual groth by lowering or increaing culture level cost. Still the steps are much smaller than, the original 9-21-37-61

here are the Modified CvGameCoreDll source files

http://forums.civfanatics.com/uploa..._9_levesl_fix_CvGameCoreDll_modifications.rar
 
LEGENDARY allows +8 tiles, not +4

The reason it has grows this way is because in order to grow double symetrical, it has must grow with a multitute of 4. Meabee we can compensatie this slightly irregual groth by lowering or increaing culture level cost. Still the steps are much smaller than, the original 9-21-37-61

here are the Modified CvGameCoreDll source files

http://forums.civfanatics.com/uploa..._9_levesl_fix_CvGameCoreDll_modifications.rar

My mistake on the legendary part. I can't say I totally agree with how legendary works in your version. If anything it should extend out to a radius of 5 instead of turning into an octagon. One reason for the pattern I chose is that it follows how the cultural border expands for the same radii.
 
Possibly. I haven't taken a particular look at how cultural borders are shaped. It's likely done in the city doPlotCulture() function if anywhere. The reason why I chose legendary to extend out so far is so a radius 4 city will be able to influence another radius 4 city, assuming no overlap. If you weren't concerned with the shaping of cultural borders and just wanted to make them smaller, you could simply delete a few culture levels.

Also, given how your mod works, I would suggest replacing the iCityRadius with an direct plot count. This way if a culture level is removed or added, it would be easier to adjust the plot counts as appropriate. I'm designing my main mod to be tweakable with XML instead of requiring a recompile.
 
Actually, I had an idea of how to change it up a little, using this progression:

CultureLevel ---- Tiles -- Delta
POOR ---------- 9 -----
FLEDGLING ----- 13 ---- +4
DEVELOPING --- 21 ---- +8
ELEGANT ------- 29 ---- +8
REFINED -------- 37 ---- +8
DISTINGUISHED - 45 ---- +8 (filling out the corners)
INFLUENTIAL ---- 57 ---- +12 (the 4th radius, 3 tiles to each side)
LEGENDARY ------ 69 --- +12 (as you have it)

Iconic would get deleted using this progression. Alternately, the radius could be extended out to a potential 5 tiles.
 
Interesting idea. However when the number of workable tiles would be linked to a XML variable, it would lead to an asynchronous growth of workable tiles, which looks really weird and arbitrary.

Question, would it be possible to make the zoom level of the city screen variable? that way we can zoom in or out depending on the maximum city radius.
 
Actually, I had an idea of how to change it up a little, using this progression:

CultureLevel ---- Tiles -- Delta
POOR ---------- 9 -----
FLEDGLING ----- 13 ---- +4
DEVELOPING --- 21 ---- +8
ELEGANT ------- 29 ---- +8
REFINED -------- 37 ---- +8
DISTINGUISHED - 45 ---- +8 (filling out the corners)
INFLUENTIAL ---- 57 ---- +12 (the 4th radius, 3 tiles to each side)
LEGENDARY ------ 69 --- +12 (as you have it)

Iconic would get deleted using this progression. Alternately, the radius could be extended out to a potential 5 tiles.
EXcelent puzzeling! I concur, I will implement it as soon as possible :goodjob:

One suggestion, intead of introducing a 5th ring we could also use the remaining 12 tiles for the Legendary culture level, bringing the maximum number of tiles to be worked on to 81, I wonder what mega cities can be supported with that :crazyeye:
 
Well, I recommend using a 5th ring to get a better circle shape, at which point you could add even more culture levels. Before or after Legendary.

I am aware of the problem with coastal cities. The problem isn't city placement so much as coastal cities get so many benefits. This exists even in the default game, but isn't as noticeable. Coastal cities get lots of benefits (like 3 food tile freshwater lakes, with lighthouse), an extra trade route, and more trade income. Even more, coastal cities enable more tiles to be worked, as they can work sea tiles while freeing up space for a potential landlocked city. Cities not directly on the coast pretty much cannot use sea tiles at all. I could find the check made for the lighthouse building that requires coastal placement and replace it with a scan of workable tiles for an ocean square. This will probably require a different XML value so one can't build drydocks or even landlocked ships. This problem also exists for rivers, specifically hydro power plants and levees. If these tile types exist within a radius why shouldn't a city be able to take full advantage of them, despite not being on the exact spot?
 
Well, I recommend using a 5th ring to get a better circle shape, at which point you could add even more culture levels. Before or after Legendary.
I agree that a 5th level would be better, however it will require an even higher altitude in the city screen which already suffers from the 4th range. We need to make the city zoom level somehow depend on the maximum tile distance. That way the end-user will be gradually introduced into the larger cities.

I am aware of the problem with coastal cities. The problem isn't city placement so much as coastal cities get so many benefits. This exists even in the default game, but isn't as noticeable. Coastal cities get lots of benefits (like 3 food tile freshwater lakes, with lighthouse), an extra trade route, and more trade income. Even more, coastal cities enable more tiles to be worked, as they can work sea tiles while freeing up space for a potential landlocked city. Cities not directly on the coast pretty much cannot use sea tiles at all. I could find the check made for the lighthouse building that requires coastal placement and replace it with a scan of workable tiles for an ocean square. This will probably require a different XML value so one can't build drydocks or even landlocked ships. This problem also exists for rivers, specifically hydro power plants and levees. If these tile types exist within a radius why shouldn't a city be able to take full advantage of them, despite not being on the exact spot?
I agree, this solution would be a much better, however it is also a lot harder to implement. Until then I simply want the AI to prioritise pacing cities near the sea so they reap the benefits of sea
 
With a fifth ring we be able to introduce an 10th culture level called EXTRAVAGANT :p

POOR ---------- 9 ----- start
FLEDGLING ----- 13 ---- +4
DEVELOPING ---- 21 ---- +8
ELEGANT ------- 29 ---- +8
REFINED -------- 37 ---- +8
DISTINGUISHED - 45 ---- +8
INFLUENTIAL ---- 57 --- +12
EXTRAVAGANT--- 69 --- +12
ICONIC ---------- 81 --- +12
LEGENDARY ------ 97 --- +16

I will implement it as soon as I can ;)
 
Top Bottom