Following on from my previous entry, I'm going to think out loud a bit about camera systems now. This might evolve into a full article (either here or elsewhere), I dunno. I'll see what happens.
The camera determines the portion of the game world's dataset that is presented to the player visually - it's an information presenter. In order to be most useful to the player, the camera must present the most useful information.
There is also the artistic aspect to consider. Generally one wishes to maximize a game's visual appearance; you can normal-map as many intricate carvings as you want, but if the camera never looks at them, it's wasted effort. So, we also want to maximize the aesthetic aspects of what the camera displays - use cool angles, play on the environment, etc.
So, let's consider a pair of continuous heuristic functions: Useful(P, D) and Pretty(P, D), where P is a position in the game world and D is a viewing direction. The former returns a value representing the usefulness of that shot to the player - a shot which shows the player, where he is going, where he has come from, and the enemies he's in the middle of fighting, would score higher than a shot which is over the other side of the game world. The second returns a score for the "coolness" of the shot. We seek to find P and D such that the values of these functions are maximized.
That's a pretty well defined problem, mathematically, I reckon. The next problem, then, is defining the functions Useful(P, D) and Pretty(P, D).
We can define the "usefulness" of a camera shot as the sum total "usefulness" of the information it presents. So, any kind of heuristic function will depend on what the player finds to be useful information.
Now we can really play ball. Certain things will probably be *always* useful - things like the player's current location. Other things will change depending on the situation; if the player's being chased down a long hallway, it may be more useful to show the monsters running up behind him than the empty hallway ahead - while if there are obstacles ahead, they'll want to be able to see where they're going. And yet more things will depend purely on the player's preference.
[I'm going to bed now because it's 5:50am, and I need to be up in a couple of hours. More later.]