Anti-sprawl mod ideas

furtigan

Chieftain
Joined
Dec 5, 2001
Messages
57
One of my biggest peeves with Civ is the way the terrain maps get covered up by improvements and especially roads by even the middle ages.

I want to try some things and know if people think this might work, and if so tell me how to go about trying it; I'm not a programmer and can't seem to find the right files to play with.

My ideas:

1) Resources do not need to be conncted by roads to be gathered; the camp/mine/etc is enough. This takes away the need to build many roads. To compensate, roads take significantly longer to build.

2) Luxury resources take significantly longer to build improvements; OTOH the reward is greater.


Any ideas on how to implement these ideas, either in a theoretical or a programming sense, would be greatly appreciated.
 
I agree with you Furtigan the landscape is completely improved much too early in the game.

The easiest way to do this is to modify the improvement xml file and increase the cost to build terrain improvements. Each can be changed individually to your taste.

I am modding my game to make improvements 4 times longer to build early on and then becoming quicker with techs and civics up to normal levels later.

However, take note that changing these values alone is dangerously imbalancing. In my opinion pillaging is already much too effective in the game. With longer improvement times pillaging could be a devastating tactic to use on the computer players or other humans.
 
An alternate method is to adjust the yield from improvements with various technologies and/or delay the time that specific improvements become available. You can even penalize improvements early in the game (like the workshop). For example if you want to get rid of "cottage spam" you can simply make the cottage improvement reduce the food yield of the tile by one making it effectively impossible to have a city with all cottage improvements.

You can do the same with routes so that a road and/or railroad reduces the yield of a particular improvement. The AI will understand the yield changes and take them into consideration although it may have some undesirable effects such as unconnected road sections. This would require some tweaking to the movement speeds on roads to compensate for some odd routes that end up being slower than travelling cross-country. You'll also need to be careful since it currently is impossible to pillage your own roads.

You can also increase the cost of workers or add in multiple worker units, for example one that builds roads only and another than only clears forrests and jungles. This would take a bit more work and the AI would not use them as effeciantly as a human player would even though they would still use them. You can even try limiting the number of workers allowed per player or team but this needs to be a fixed number so it may be difficult to find the ellusive magic number.

A combination of these ideas may work best depending on what exactly you are looking to achieve. I've added some effects to my game, such as cottages adjusting the food yield of a tile by -1, with results that I'm happy with. I would suggest playing around with small changes and trying them out individually. As bad as the AI may seem at times it is very good at pointing out something that is under or over powered. So if you make one improvement too good the AI will build a LOT of them and if it's not good enough they won't build any of them.

So far I have tested & kept the following changes:

- Cottages reduce food output of the tile by 1. They are still potent improvements for the commerce gain but you can no longer have a city with nothing but cottages. This means they also require a tile with at least one food production.

- Lumbermills are available with machinery and improve output with replaceable parts and combustion. The earlier availability helps preserve forrests to a degree.

- Watermills no longer remove forrests/jungles when built. Like lumbermills this helps preserve forrest tiles to a degree. This is somewhat redundant with the lumbermill change.

- Increased the "cost" of clearing forrest & jungle tiles by 50%. The added delay slows down workers enough to keep the countryside clear for a while unless there are no forrests/jungles in the area. Unlike increased build times for all improvements this is a one-time penalty so it's not too hard to rebuild after something has been pillaged unless a forrest/jungle re-grows in that tile. As an added bonus it nerfs the excessive early game chop-rush slightly.

Unfortunately, the game is still a sloppy mess of improvements my the middle ages but at least there is a little more variety in the landscape now and not just towns as far as the eye can see. I think some purely visual changes may work well such as thinner roads and railroads and smaller improvement models.
 
You can turn off pillaging, or restrict it to certain units, simply by editing... I think it's the unitinfo XML.

Replace is your friend, there are a lot of units :)
 
Maybe make every improvement, including roads, cost 0.2 gold maintenance at the nearest city (mitigated by courthouses and organized trait). Then you have some small incentive to decide that its not worth putting a road on every tile.
 
The best solution to this is to have larger tracks of wilderness between your cities, rather than having the suburbs of your cities poorly developed in the early game.

If you can figure out how to make the maltese cross bigger - this would help. If a city could (eventually) farm hexes three spaces away, you'd be encouraged to build your cities six spaces apart, and until they got very well developed (culture level 3, I forget what that is called) you'd likely have wilderness between them. Unfortunately I think you'll need the SDK to do this.

Playing on larger maps with fewer players helps this a lot.

Raising the movement rate of units and making roads CHEAPER also encourages you to send your initial settlers farther afield (seeking better city sites).
 
Seven05 said:
So far I have tested & kept the following changes:

- Cottages reduce food output of the tile by 1. They are still potent improvements for the commerce gain but you can no longer have a city with nothing but cottages. This means they also require a tile with at least one food production.

- Lumbermills are available with machinery and improve output with replaceable parts and combustion. The earlier availability helps preserve forrests to a degree.

- Watermills no longer remove forrests/jungles when built. Like lumbermills this helps preserve forrest tiles to a degree. This is somewhat redundant with the lumbermill change.

- Increased the "cost" of clearing forrest & jungle tiles by 50%. The added delay slows down workers enough to keep the countryside clear for a while unless there are no forrests/jungles in the area. Unlike increased build times for all improvements this is a one-time penalty so it's not too hard to rebuild after something has been pillaged unless a forrest/jungle re-grows in that tile. As an added bonus it nerfs the excessive early game chop-rush slightly.
These sound like some good ideas -- I'd like to give them a try if you want to help out with explaining which files to change.
 
Lord Olleus said:
assets/xml/terrain/CIV4improvmentInfos.xml
Sorr, I'm not a programmer. That's why I need help.

I'm seeing:

<Type>IMPROVEMENT_COTTAGE</Type>
<Description>TXT_KEY_IMPROVEMENT_COTTAGE</Description>
<Civilopedia>TXT_KEY_IMPROVEMENT_COTTAGE_PEDIA</Civilopedia>
<ArtDefineTag>ART_DEF_IMPROVEMENT_COTTAGE</ArtDefineTag>
- <PrereqNatureYields>
<iYield>1</iYield>
<iYield>0</iYield>
<iYield>0</iYield>
</PrereqNatureYields>
- <YieldChanges>
<iYieldChange>0</iYieldChange>
<iYieldChange>0</iYieldChange>
<iYieldChange>1</iYieldChange>
</YieldChanges>
<bHillsMakesValid>0</bHillsMakesValid>
<bFreshWaterMakesValid>1</bFreshWaterMakesValid>
<bRiverSideMakesValid>0</bRiverSideMakesValid>
<bNoFreshWater>0</bNoFreshWater>
<bRequiresFlatlands>0</bRequiresFlatlands>
<bRequiresRiverSide>0</bRequiresRiverSide>
<bRequiresIrrigation>0</bRequiresIrrigation>
<bCarriesIrrigation>0</bCarriesIrrigation>
<bRequiresFeature>0</bRequiresFeature>
<bWater>0</bWater>
<bGoody>0</bGoody>
<bPermanent>0</bPermanent>
<bUseLSystem>1</bUseLSystem>
<iTilesPerGoody>0</iTilesPerGoody>
<iGoodyRange>0</iGoodyRange>
<iUpgradeTime>10</iUpgradeTime>
<iAirBombDefense>5</iAirBombDefense>
<iDefenseModifier>0</iDefenseModifier>
<iPillageGold>10</iPillageGold>
- <TerrainMakesValids>
- <TerrainMakesValid>
<TerrainType>TERRAIN_GRASS</TerrainType>
<bMakesValid>1</bMakesValid>
</TerrainMakesValid>
- <TerrainMakesValid>
<TerrainType>TERRAIN_PLAINS</TerrainType>
<bMakesValid>1</bMakesValid>
</TerrainMakesValid>
</TerrainMakesValids>
<FeatureMakesValids />
<ImprovementPillage />
<ImprovementUpgrade>IMPROVEMENT_HAMLET</ImprovementUpgrade>
<TechYieldChanges />
<RouteYieldChanges />
<bGraphicalOnly>0</bGraphicalOnly>
</ImprovementInfo>


  • Which line do I edit to change the tech at which an improvement becomes availible? I don't see it here or in the tech file either.
  • Which line do I edit to indicate an improvement does not eliminate the existing terrain?
  • Which line do I edit to raise the cost of building an improvement?
 
1) the line to edit for tech availability is in the units folder and not in this file. It is in the buildinfos.xml

2) Are you talking about leaving the forest in cottage spaces? If so it is also in the buildinfos.xml

3) Also is in the buildinfos.xml

the file I am referrring to is set up for worker actions and changing those values. Lots of good stuff in there.

I am working on a mod for this right now. I have made forests unclearable until machinery when I make lumbermills available. Jungle is not removable until steampower. I made forest spaces decrease food putput in a space by 1 similar to jungle but it still gives a +1 bonus to production. To compensate for this you can build a camp in all forest and jungle spaces to increase food output by one of both jungle and forest spaces. Cottages are not available until monarchy.

I increased the time to build just about all improvements and roads. I love the effect this has on the game but now pillaging can be completely devastating to a civ as these things take longer to build up... I don't want to limit which units can pillage I just wish I could make it harder to do. I would like to see more units protecting the borders of countries intead of all sitting in the cities. although linked this is a subject for another thread...
 
This is an indirect solution, but I changed MIN_CITY_RANGE from 2 to 3 in GlobalDefines.xml (in my custom assets folder, of course). That means cities have to be at least 3 tiles away instead of the default 2. I played a game with this setting, and the extra space between cities seemed to reduce road spam, and also kept me from placing too many cities (thus bankrupting myself). It also made me rely more on the cultural border in order to aquire non-food resources, instead of building a city next to each resource like I used to (thus quickly bankrupting my civ).
 
Armandeus said:
This is an indirect solution, but I changed MIN_CITY_RANGE from 2 to 3 in GlobalDefines.xml (in my custom assets folder, of course). That means cities have to be at least 3 tiles away instead of the default 2. I played a game with this setting, and the extra space between cities seemed to reduce road spam, and also kept me from placing too many cities (thus bankrupting myself). It also made me rely more on the cultural border in order to aquire non-food resources, instead of building a city next to each resource like I used to (thus quickly bankrupting my civ).

I use MIN_CITY_RANGE of 4 because I don't like having the AI's cities have overlap. I find now that I don't need to declare war everytime the AI builds a city near mine. Before I always hated that his cities would overlap mine. Not it's not a problem.

Roger Bacon
 
That's a good idea. I might try that myself.
 
Back
Top Bottom