To get started all we need is Ilive's Reader and your terrain mod of choice.
I'm using the .93 version of reader as opposed to the 1.4x just for multiplicities sake.
Terrain Mods explained.
Go ahead and fire up reader and open your terrain mod. Depending on which mod you're opening, you will see a list of sub-files on the left. Clicking on one of them brings up what's in that specific sub-file on the right. I'm using Gobias' Sudden Valley terrain mod in this example, both because it's my favorite terrain mod and because it has the most files; making it the most intimidating terrain mod to tweak (but only on the surface). So you should see something like this: (click for full)
Every terrain mod will have at least 3 components: a DIR file, an INI file, and at least one Exemplar file. We want the exemplar file that is the terrain exemplar. When you click on the Exemplar file in the left box, the correct one will start with these three lines in the right-hand box:
Don't worry about the other exemplars if your terrain mod has any, nor the INI file. I'll give a brief overview of them later, but we won't be tweaking them.
So, that big long list in the right hand box. Yes there's a lot of stuff packed in there, but not all of it is useful to us. In fact some of it is only barely functional. You get a sense that Maxis had grand ideas with terrain function in the simulation, such as erosion, ground water, weather, and moisture simulation, but these were never fully implemented. Many of the variables here control god-mode tools. Others we won't be touching. Here's the important variables for our purposes:
1. The snowline.* The easiest way to control the snowline on your map's terrain is through two variable: MaxTerrainHeight and TemperatureRangeFactor. Changing the textures in the INI table is also possible, but is not recommended for anyone except advanced users and is mentioned briefly in the terrain texture section below.
We'll talk about MaxTerrainHeight first. First off, this variable absolutely, positively, MUST be higher than the highest point on the map that you are loading. Trying to load a tile that has terrain higher than this value will cause the game to instantly crash. Back in the old days, this value used to be 2000m. Then as more dramatic real world maps started to be made this needed to be adjusted up, and so height patches were released that upped this to 5000m.
The other value important for the snowline is TemperatureRangeFactor. This effects the distribution of textures across your terrain. It is possible to raise and lower this value to raise and lower the snowline accordingly, but this has the additional side effect of limiting the range of textures that appear at lower elevations too. This could mean cutting out the detailed terrain textures that appear in limited areas and so it is not what i recommend to change your snowline.
Instead i recommend changing the snowline through using MaxTerrainHeight only while leaving TemperatureRangeFactor at what the developer set it as. Because every terrain mod is different, this will require some trial and error. First you need the 'extracheats.dll' file from the STEX installed. Then you need to enter a tile you want to have the snowline on. Enter mayor mode (create city...) and call up the cheat box with 'control-x'. In the box type terrainquery and hit enter. This adds some geometric info to your query tool-tip. The y=value is the height, in meters, of the terrain at that point. Write this number down, exit the game, and go back into the terrain mod in the reader program.
Remember we said each terrain mod is different, so this will take some trial and error. Multiplying the value you just wrote down by 3 is a good starting place, so do that and enter it in the MaxTerrainHeight (and remember that this has to be higher than the highest point on your map). Now you will have to go into and out of the game to check the results and adjust it accordingly. If you have lowered the MaxTerrainHeight as far as you can (the highest point of your map) but still want a lower snowline, now you should start lowering the TemperatureRangeFactor in small increments until you achieve the desired results.
Blunder's preferred settings: TemperatureRangeFactor: leave at the default unless necessary.
MaxTerrainHeight: Again, this will vary depending on your map and your taste. If your map has tall mountains, it will typically end up just a couple hundred meters taller than your highest point. If the elevation is just small hills, it will probably be about 2x to 2.5x the elevation of the hilltops.
Good job: you can now throw out your Terrain Height Patch.
*Some mods don't actually have snow, so this obviously won't work with all terrain mods.
2. MaxNormalYForCliff. Max what for what? This is the variable that controls whether or not the texture you see on each tile comes from your rock mod or your terrain mod. The LOWER this variable is, the STEEPER your terrain must be before it is given rock texture instead of terrain texture. This may sound counter-intuitive but it's because a 'normal' -like in the variable name- is a vector orthogonal to the tangent plane of a surface and... ok never mind i'll just tell you what you should do with this.
If you use a 15m Diagonal Jagged Edges Mod (DJEM)and you are perfectly happy with that, you can set this to .77 and just walk away. If you aren't familiar with a DJEM, it makes the terrain 'snap' to a nice line when making diagonal cliffs of a certain height; very useful for sunken highways and raised transit networks. If you want to use a DJEM for 7.5m overpasses if and when the NAM team manages to fully implement that system then the value you want is .95. Please note however that this comes with a huge trade-off where even the gentlest of slopes will become entirely rocky. Not recommended unless you're building on a map that is flat as Holland.
Also note that just using .77 (the 15m DJEM value) does not look the best on hilly and mountain areas. It creates inconsistency in where the rocks appear and makes your terrain look weird; especially mountains. So for mountain areas i like to use something between .60 and .65. It really depends on the specific geology of your map.
Here's an example of how this changes the look on your snowy mountains. This first shot is a screen of Mt. Shasta with the MNYFC set to a standard .77. Notice how there are square edged rocky splotches on slopes that shouldn't have a rocky outcropping. (click for full resolution)
Notice what happens when we drop the MNYFC from .77 to .65
See how the rocky outcroppings shrink in size, not distracting from the snowy slopes. This also makes it easier to remove unwanted rocky slopes with some judicious and very light usage of the 'smoothing' god mode tool.
Blunder's preferred settings: .77 for flat land and .65(ish) for mountains. Congratulations, you can now throw away your DJEM patch.
3. The Beach! Who doesn't love a good beach? There are actually two variables that control this, and they're almost at the bottom of the right hand box: MaxBeachWidth and MaxBeachAltitude. Think of these two variables as forming a box. One bottom corner of the box is anchored to the waterline. The value for MaxBeachAltitude is the height of the box in meters. The value for MaxBeachWidth is the width of the box, in number of tiles. Any tiles that fall within this 'box' are assigned a beach texture instead of a terrain mod texture.
You will also notice there are several variables for shore cliffs in the terrain mod. I recommend just leaving these alone as they seem to influence the moisture simulation more than the terrain/rock texture.
Blunder's preferred settings: width=5, height=3
Really though, you should play around with this to suit the effect you're going for and the map. These values are best for real world maps. For hand-terraformed maps you will probably need to significantly jack up the height.
Congratulations, you can now throw away your endless beach mod.
4. Water. Jumping back up to the top of the list we have two more variables: WaterMinAlpha and WaterDepthForMaxAlpha. These two variables are the boundary conditions to establish a gradient in how transparent your water is.
Waterminalpha is the transparency at the surface on a scale of 0-255 where 0 is fully transparent and 255 is fully opaque. You need to achieve a balance here. Too transparent and you can't easily tell where the water starts. Too opaque and you really notice all the graphical absurdities that the game creates where the water meets the shore.
WaterDepthForMaxAlpha is at what depth the water reaches an alpha of 255 (fully opaque)
Together these two variables establish a gradient of water transparency and offer the user a huge variety in achievable effects. Want a pristine alpine lake where you can see to tremendous depths? You can do that. Want to replicate the murky amazon where you can't see a piranha a foot away from you? You can do that.
Both of these variables will be subject to changes depending on which map you're using and how the creator went about making the water on the map (e.g: what the artificial underwater terrain looks like. And it is artificial, the satellite data available to us map makers does not allow us to replicate underwater terrain. it's all hand-crafted)
Blunder's preferred settings: WaterMinAlpha: between 32 and 75. I typically use 50. WaterDepthForMaxAlpha: again terrain dependent but between 12 and 32. I typically use either 16 or 32.
*Note: if you are using sorchin's water flora it must load before your terrain mod. He included a copy of the terrain exemplar in his mod with modified values for water transparency. So if his water flora is loading last you will see it's water transparency values instead of your terrain mod's.
Here's a pair of screenshots that show the last two points in action.
Screen one is near-default settings for Gobias' SV for both water and beach but with a darker water mod installed. Notice how the shore appears pixelated and has a narrow beach (grid left on for reference purposes).
Here's what happens when we change the default settings to my recommended settings.
You can see the jagged effect along the shoreline is much reduced, although still present, and we have a nicer looking beach.
We can also increase the beach width higher. A value of 10 tiles with the same height gives us this:
Welcome to the pacific.
*4b. Sealevel: It is possible to change the sea level in reader. For the basic user this is not recommended, but if you want to simulate a flood to take pictures of for your CJ this can be fun. Default is 250. Really advanced users can use this to tweak the appearance of their beach if erosion is enabled.
5. Miscellaneous Values
There are a number of other things you can tinker with in the terrain properties exemplar. Here are the minor variables:
Unwatered Terrain Color
Unwatered Building Color
Watered Terrain Color
Watered Building Color
Yup, you can change how things look in pipe view. Not that you want to spend any more time than necessary in pipe view, but tinkering can be fun. Each of these are variables have 4 values: one for each segment of the RGBA color.
VolcanicAshLifeTime. Time (in microseconds) volcanic ash remains visible when you use the volcano disaster. Can be entertaining for a couple minutes. /shrug
There are a number of variables related to the God Mode tools that you don't really need to touch. These will be self evident by their names.
6. A word about terrain textures
As mentioned before, the actual assigning of textures from the terrain mod to the city tile can be a complex process. Tinkering with this is something best left to the pros, so if you really want to dive into the subject i suggest you track down the threads by Lowkee and Gobias at sc4devotion to dig in depth. This is just the briefest of overviews.
Much like the 'tree table' in a tree controller, the terrain mod contains a 'terrain table' and can be found in the INI file. Like the tree controller it is 16 rows (elevations) by 16 columns (moisture).
The moisture is a complex formula of slope, orientation (north and east facing slopes are drier, south and west ones wetter) and controlled by values in the Weather Tuning Parameters exemplar as well as proximity to water in the terrain exemplar.
Elevation rows are 16 evenly distributed segments between the Min Height and Max Height properties.
Each texture has a set of spread curves, or blending functions, for each zoom. You'll have to check Gobias' thread for more info on these, since I've never experimented with the blending curves and tiling factors.
If you really want to experiment with terrain textures, then i wish you the best of luck. But, again, you should go look at Lowkee's and Gobias' threads for more (and much better) info since they're the pros.
7. HD Terrain/Rock/Water/Beach mods
Here's a handy link list for all the HD terrain related mods out there as of writing this article:
Terrain: (terrain mods may include their own rock, water, and beach mods which can be individually removed in favor of others) also be sure to grab their separate texture dependencies.
Gobias' Sudden Valley. IMO the best terrain mod currently out, and what i currently use.
Gobias' Berner Oberland. Designed to imitate the swiss alps, this terrain features more vibrant greens, making it more challenging to use.
Lowkee's Appalachian Terrain Mod. The first truly great HD terrain mod. The browner tones make green flora really pop out (see Paeng's Mountainview CJ for glorious examples). Separate rock/water/beach plugins for it here. Search the LEX for Mac installer.
Pyrenean Terrain Mod. Possibly the first HD terrain mod. Also my least favorite; does not blend as well with flora as the others.
Shokthrpy's HD Rock mod pack. 5 Rock textures to choose from. I especially like #1, also #3 blends superbly well with Lowkee's Appalachian Terrain.
Gobias' HD beach pack 1. Feature 4 beaches to choose from: Nantucket, Cape Cod, St. Lucia, and Vancouver Island (which i currently use).
Shokthrpy's Brigantine 2.0 HD water. Based on the wave pattern of Pegasus' Brigantine water, also called 'the holy grail' of water mods. Shok has translated the wave pattern up to HD standards and included a range of colors to choose from.
Credit where credit is due: I learned most of this stuff by looking at Ennedi's work in his Ennedi Plays Shosaloza CJ
And then started doing my own tinkering. Most of this really isn't anything new, i just felt there was a need to consolidate the information to make it readily accessible to the newer generation of mayors.
As always a huge thanks goes to the crew at simpeg for all their help and support. Also mad props go to all the custom content creators that make such beautiful toys for us to imitate nature with.