Landscape material solutions

I dont know about guidelines, but for your avarage map 9 materials is nothing.
Even in a forest map you very easily exceed that.

Map wise, the more layers you have, the smaller the component size you want to use - technically you can’t have more then 18? samples per tile.
Usually, that’s diffuse+normal+displacement per layer, plus at least 3 macro textures, so you end up using the samples up in around 3 to 4 layers painted on the single tile.
Making tiles smaller sort of mitigates this problem.
The shared wrap textures do fix it for the rest of the cases as well, but might pose compatibility issues.

Either way, in a city or even in a forest example you set up roadways via splines.
Splines can have a material assigned to it, generally dirt, as well as a mesh.
A well made mesh can add extra layers and colors without having to touch layers on a landscape.

You can overwrite materials assigned to the mesh based on the spline instance, so you can technically create material instances of the asphalt, tweak them, and randomly set them on spline segments to create variations, just like real roads. Patches of bad/new asphalt sort of thing.

Generally speaking, the lower the cost of rendering the landscape material (less calculations) the better it goes. More fps, less load. But you should not be afraid of creating complex shaders. Just have a look at the kite demo…

Also, wanted to add.
90% of landscape variety comes from multiple proc. Grass layers. Or procedural rocks/pebbles.
Merging the colors of a base grass mesh to the color of the grass landscape layer really helps sell the overall grassy areas.
You just have to completely desaturated the textures and multiply the same base color into the 2 materials to achieve an approximately correct look, where you can’t really tell where your grass ends and where the texture takes over.