I am, thus far, very impressed with 2160 on a variety of levels. The biggest area where it really shines, though, is in the use of normal maps. The game uses a variety of simple shaders, but the biggest area of graphical quality improvement, over previous titles, is that every unit uses mipmapped normal maps, which create the impression of a huge amount of surface detail on objects.
Now, that said... 2160 rarely has more than 30 units on the screen at once. In point of fact, its maximum zoom-out level is so low that I find it annoying. It may simply be that using normal maps and a lot've shaders simply is too GPU-intensive to work for larger-scale games yet. In addition, the preparation required to make use of normal maps is pretty darn complicated (and I would hope that everybody agrees that I know what "pretty darn complicated" looks like, when building content).
Basically, we have to make two versions of the model- one high-poly, high detail, one low-poly, low detail. Not only that, but we have to keep in mind that this model's UVs should also be kept nearly identical in projection types. Why? Because when we're planning out our skins, we need to keep in mind where the bumps are going to be, and map in a way that complements the bumps. Earth 2160 is quite visually impressive because the texture artists really did a good job with all of this- each of the modular parts that make up a model, while low-poly and with a fairly low-resolution set of maps (they pretty clearly make use of multitexuring so that they can do tilemaps and other tricks) looks very pretty indeed when the shaders and the normal map interact.
Having looked at the workflow (difficult, without the newest high-end content creation tools), I'm not sure normal mapping would be a good choice for Spring. But I'm pretty tempted by DOT3 bumpmapping, which would be almost as good, and a whole lot easier to work with. It's just a simple alpha bumpmap, with GPU support, from what I understand.
Lastly, while I'm here ruminating about high-end content creation, let me put forth a very radical idea: instead of having each of the RGB channels in the second skin be assigned statically... it might be more useful, long-term, to have these assigned to a specific shader by the modder. So you'd have a UTF tag that reads something like:
Code: Select all
RedChannel=bumpmap.cv
GreenChannel=metallic.cv
BlueChannel=tranparency.cv