What you need to know
- Developer 343 Industries has released a new blog post that reveals the story behind Halo 2's teleporting projectile bug on PC.
- The issue was related to interpolation code, and was caused by a rogue -1 value in the code.
- The post also contains some cool insight into the process of bringing Halo games to PC, as well as a reminder that Halo 3 flighting is coming soon.
Halo developer 343 Industries has released a new community update blog post that goes into detail about the complicated and nuanced process of porting all of the mainline pre-Xbox One era Halo games to the PC platform. Among the various topics discussed is the infamous teleporting projectiles bug that launched with Halo 2: Anniversary on PC and plagued Halo 2 Classic multiplayer for over a week before finally being patched by a hotfix. This bug would, bizarrely, cause rockets and grenades to teleport from the position they were fired or thrown to into other players across the map, usually resulting in kills and teammate betrayals alike.
As it turns out, the reason this bug occurred was because of an issue with the game's interpolation code (this smoothes out movement of players, vehicles, and projectiles) and a subsequent problem that caused players to have an incorrect user index of -1. This index value ended up wrecking havoc on Halo 2 Classic multiplayer.
Here's the detailed breakdown by the developers:
"The issue was related to interpolation code that was added in fairly late and is only compiled in PC builds, and unintentionally the dedicated server build. Xbox builds do not compile the interpolation code. One change for interpolation was in a function that gets the camera position of a biped. Players control bipeds. At most, there are four local players, or 'users'. This function was tweaked so that it would update and read from the interpolation data for the user controlling that biped. However, it was not handling the case where the user controlling the biped did not exist on that machine. So, the user index for non-local bipeds would be -1, which then caused entirely different memory in the interpolation state to be written to and read from. Well, this is further complicated by the fact that this same code path is used by the function that creates a weapon's projectiles. Because to do that, the game needs to know where the player's camera was aiming. When it comes to the host and remote players, the same code path is still taken but using the predicted weapon fire state of the remote player. Not all weapons are fired in the same predictive manner, which is why some weapons would inflict damage, while other weapons would not.
The fix here was one, not compile the code for the dedicated server, but also two, guard against cases where the user index was -1."
This issue was complex, but I found reading about it to be quite interesting. It gives some valuable insight into the weird and wacky challenges that developing games can pose, which is something that players don't often get. If you're fascinated by this stuff, I recommend checking out the full blog post, as there are numerous other development topics in it that are discussed at length. The post also reminds players that Halo 3 PC flighting is set to start in the first half of June, so make sure you sign up for the Halo Insider Program if you want to participate.
Halo 2: Anniversary is available on Steam and the Windows 10 Store for $10, while the Master Chief Collection in full can be purchased for $40.
The groundbreaking remaster
Earth isn't going to defend itself
Halo 2: Anniversary on PC brings both the original Halo 2 as well as the incredible remaster to the PC platform, allowing players to save Earth, stop the Covenant, and battle each other online until their fingers fall off.
Finish the Fight
Experience the entirety of Halo history
The Master Chief Collection is a collection of every Halo shooter from the pre-Xbox One era, offering incredible value at an incredible price.
Get the Windows Central Newsletter
All the latest news, reviews, and guides for Windows and Xbox diehards.