(Please don't take the fact that I'm not responding to the prison discussion to mean I'm ignoring it; I just don't have anything interesting to say on that subject off-hand, I'm still following along and thinking about how to do it.)
In response to the wall of text post on real time games.
I was under the impression that real time games did things based on time...
That's certainly how I implement my own games (maybe that's why they suck) with each pass running calculations as to what occurs over a specific time delta.
You can do this, but it incurs complications when the game starts lagging. Suppose you have a player firing a very fast weapon that releases a single shot every thirtieth of a second, but the computer is only running fast enough for you to handle things eleven times per second. Now you need to generate 30/11 shots every time the game refreshes.
It's going to be hard to maintain a steady stream of shots because: 1) You need to spread the shots out so that each is fired at precisely the right time
within the frame, and 2) You need to ensure that the correct number of shots (2 or 3) is fired
this frame, instead of doing the same number of shots each frame and thus varying the firing rate from 30/second to somewhere in the range of 33/second or 22/second.
You can juggle these problems with a lot of fractional time calculations, but you're giving yourself way too much work by trying to calculate too large a delta of time. That's the problem with letting the time delta vary: it could
always be "too large", encompassing many sequential events that have to be handled in an arbitrarily fine grained time sequence, if the computer is lagging.
Actually come to think of it with my last game I decoupled rendering from game logic and ended up fixing the amount of time that would be calculated and then just did a number of calculations per frame depending on how much time had passed...
This is what I mean when I'm talking about "turn based on a programming level". By keeping the time delta fixed, and just running lots of small iterations if the game is lagging, this kind of system would handle the above situation gracefully. You can change your firing rate into something integral, like "fire once every two frames" and the problem is trivial. The time delta stays small, you just handle the logic multiple times and only render once at the end.