Resolving bugs in game development is complex; resolving bugs in a game that has been ported from three different consoles to the PC over the course of more than two decades. That's the general gist of the latest "Halo: Master Chief Collection" community update, which describes the bug-fixing process for a major game in rare detail. It's an interesting read that is surprisingly easy to understand even if you're not a game developer, and is a direct response to the unfortunate and annoying multiplayer bug that occurred at the launch of "Halo 2."
"These releases have been and will continue to be a learning experience for our team," wrote Senior Producer Michael Farney.
"MCC is an extensive product, and it is very difficult to get everything 100% as it should be. Our commitment is to respond to these situations as quickly as possible. We are constantly evolving our processes to incorporate new ways to make development more efficient and to give our testing teams the confidence that they are getting the time they need to ensure proper coverage."So what happened in Halo 2?" This post begins by describing the general procedure for finding and fixing bugs and the role of each department at a major game studio. The post begins by describing the roles of each department at a major game studio: the community team, which interacts with players and gathers information about reported problems; the dedicated support team, which receives and analyzes reported problems; quality assurance testers; design, production, and engineering. It takes a very large number of people and a complex process to track down and fix a bug.
Halo 2's PC multiplayer had a bug that did not occur on Xbox that could cause teleporting projectiles and instant death. It was bad news. And when you narrow it down to its most basic explanation, this fiasco was caused by a single number: "-1":
"This problem is related to interpolation code that was added much later and is only compiled in the PC build; in the Xbox build the interpolation code is Xbox builds do not compile the interpolation code. One of the changes related to interpolation was in the function to get the camera position of the biped. The player controls the biped. There can be up to four local players, or "users". The function was adjusted to update and read the interpolation data of the user controlling that biped. However, it could not handle cases where the user controlling that biped was not present on that machine. Therefore, the user index of the non-local biped would be -1, and the interpolated state would be written to and read from a completely different memory. A further complication is that this same code path is also used in the function that generates the bullets for the weapon. This is because to do this, the game needs to know where the player's camera was aiming. For the host and remote players, the same code path is used, but with the remote player's predicted weapon firing state. Not all weapons fire in the same predicted manner, so some weapons do damage while others do not.
"The fixes here were, one, to not compile the code for dedicated servers, and two, to prevent cases where the user index is -1.
Unrelated to this particular bug, engineer Sean Cooper shares some cool development insight into the process of rebuilding the network code for Halo 2 to work on the PC.
But there is new information: testing for Halo 3 will begin "within the first few weeks of June" and will include Forge and Theater, five campaign missions, and numerous multiplayer maps and playlists. There has also been movement on other MCC games, including the addition of a challenge system, audio fixes for Halo Reach, bug fixes around screen taring, and secondary key bindings. All of these are nearing release and should appear in upcoming flights and releases.
There are also several new elements added to the "design iteration" phase, including a custom game browser and PC/Xbox crossplay. Design iteration means that those are still a long way off, but a step toward a custom game browser on PC is a step I'm happy to see.
.
Comments