Game Development is not an easy task. In fact, it’s quite complicated and difficult. One of the best examples of the many troubles developers face is porting older games to new PCs. This might look simple to us players, but from the developers' point of view, it can be quite frustrating. PC ports of some games suffer from some unacceptable issues like 30/60 FPS lock, FOV lock, and much more. PC gamers have also encountered bugs that were not present in the console versions.
343 Industries Engineer Andrew Schnickel, who has been with the company for over ten years, recently sat down with PC Gamer to explain why this happens and it’s not because developers are lazy. To understand what he said, you first need to know a little about game code, especially the time measurement unit called “game tick”. Game tick works well when the FPS is locked at 30, but things start to change when it goes higher.
"When some code said 'I want this thing to happen over 1/30th of a second' and somebody else said 'I want this to happen over one game tick,' they were equivalent," Schnickel explained to PC Gamer. "Now we go up to 60 frames per second, and 1/30th of a second and one game tick, are not the same thing anymore. That broke a number of things: Weapon fire was one area that we found a number of issues; you could see that effects would play too quickly; the mission scripting actually through the campaign, we had a lot of problems with that, a lot of that was tick based rather than time based."
Schnickel added that it is possible to go line by line to find these “bugs” and fix them, however they can be easily missed. There are thousands of lines of code and going through all of that is no simple task. In Halo 4, upgrading the game for Xbox One with 60 FPS support created a bug where a sniper jackal on top of a cliff wouldn't die, no matter what you did. This was because a timing issue in the code made him immortal. "It takes a lot of careful debugging to find that," he said.
There was even as an issue with Dark Souls 2 where your weapon will deteriorate quicker if you played at higher FPS. After Schnickel's explanation it makes more sense. The weapon deterioration rate was linked with FPS, and when FPS increased, the game ticks passed through quicker and made the sword wear down faster than usual.
All of these issues are only when upgrading to 60FPS from 30FPS. If you want to play the game at uncapped FPS (let’s say 95) then none of the code will work as the game tick will become a variable rather a constant value. Getting a higher frame rate also causes an issue in animations that were designed for 30FPS.
"Where you really do run into problems is the interpolation, and you see that in animations and effects a lot," Schnickel said. "The animations in particular are challenging, because they were just authored for a slower frame rate. If you're familiar with how animation tends to work, you put in key frames, and then you interpolate between those key frames, and the interpolation doesn't always do what you expect it to do."
Producer Mike Fahrny claimed that finding these issues is quite difficult because they don’t appear on every PC. Playing a game at an uncapped FPS, you will only catch problems if you are at the wrong place at the wrong time. So while testing, the game can work fine on a developer's PC, but that’s no guarantee that the same will be the case for players. "That's the fun part of PC, right, all the different compatibility issues, and all the hardware that you have set up," Fahrny said. "Some people see this stuff and some people aren't sensitive to it, versus some people that just are."
These interpolated animation issues were present in Halo Reach back when it was in beta. It even caused some players to suffer from motion sickness. It’s a weird thing that only a few extra frames can “break” an animation, or cause players some discomfort. "Sometimes things won't play exactly the same that they did, but hopefully we minimize that," Schnickel said to PC Gamer. "But there's areas where just by necessity we have to do it. Certainly trying to smooth out some of the motion, especially around the camera in some of the first-person animations."
Due to all these issues, Halo Reach wasn’t released with a robust FPS limiter. As of now, the game can only be played at 60FPS or uncapped. You can’t force the game to run at, let’s say, 144 FPS.
Schnickel's explanation really put things in perspective. All of us criticize developers when these issues occur, but we now know that fixing even a simple issue such as frame rate limits can be quite problematic.