eli5: Older 3d videogames get crazy when subjected to modern framerate. Why is that, and why did binding game’s engine to FPS became a trend in the first place?

11 views

eli5: Older 3d videogames get crazy when subjected to modern framerate. Why is that, and why did binding game’s engine to FPS became a trend in the first place?

In: 6

The why is because a lot of updates and computations use framerate to control speed or occurrences of something. There was a much lower limit so now the stuff runs so quickly the computations go out of bounds or just happen too quickly.

Its still done because its an easy way to normalize behavior across hardware for players.

Here’s a basic algorithm for how a video game might work:

Do the following things repeatedly forever:
Read user input from the keyboard/controller/whatever
Update the state of the world one time (move bullets, turn player a bit, whatever)
Draw the screen;

This works quite well. We call each run of this loop a “tick,” and we can describe how fast things move in terms of ticks. A user might turn 2 degrees to the right per tick. An enemy might move 10 in-game distance units per tick.

But you see how nothing about this involves an absolute notion of time? That’s okay on old machines because “Draw the screen” is very slow and is also very predictable. It’ll happen some known number of times per second.

But then you stick the game on a modern PC which can both draw to the screen instantly in the background and also refresh the screen 60 or 120 or 240 times per second, and you also make the other steps of the loop much much faster, and the game is now going WAY faster than was ever intended, and the game itself won’t notice that anything is wrong.

Here’s a slightly more modern game loop:

Do the following things forever:
Set “time_delta” to current clock time – previous “time_delta”.
Update the state of the world by time_delta steps.
Draw the screen

Works great! Now if we’re weirdly fast, we just adjust the world less when we update. Very nice.

Unless a game’s speed is run on a clock (each action takes X milliseconds), it will run at the speed of the tightest bottleneck. You remove this bottleneck by playing it on a more powerful computer, you increase the speed.

It’s not just 3D games. I had an old 2D game that ran fine on a 486/33, but push the “turbo” button to clock double to 66 MHz and everything zipped around so fast that it was unplayable. It was CPU bottlenecked, so increasing the CPU speed allowed it to run faster.

The first difficulty increase in a game was due to this effect. The CPU in the video game Space Invaders had a hard time drawing all the aliens on the screen in addition to all the other game mechanics it had to handle. So they moved slowly in the beginning. But each shot alien relieved some load on the CPU, so the aliens are moving much faster by the time you only have a few of them left. Modern remakes of the game have to purposely set an increased alien speed over time to mimic this effect.