A Half-Life bug introduced by Windows 2000 just got fixed at last
That tentacle is going to be happy
Half-Life recently received a big update to celebrate its 25th birthday, but a significant bug remained. In a famous scripted sequence during which a long, green tentacle busts through a window and drags away a scientist, the scientist and the tentacle would be mis-aligned, making it look like the scientist floated out of the window of his own volition.
Not anymore. After over twenty years, Valve programmer Ben Burbank has fixed the bug - and explained how he did it.
First off, when I first played Half-Life in 1998 and 1999, this bug didn't exist. The leading theory is that it was introduced by the Win32 API with Windows 2000. As Burbank explains over on Mastodon, on "computers running at least Windows 2000 or newer", you'd see the mis-alignment.
"We wanted to fix this for the 25th Anniversary Update but other stuff took priority pre-ship," writes Burbank.
In coming to fix it after the fact, there were apparently three options for how to do so. Do it via fixing the code, which Burbank says would be "plausible but would definitely require re-testing every other scripted sequence thoroughly, and may not even fix it"; "Change the animations that play (doable)"; or, "change the map so the timing works."
"We chose to change the map for a few reasons. If we fixed the sequence so that the scientist timing worked out, a player could still stand in the doorway and shoot the scientist, interrupting the sequence, and then he would play his animation in an insane way. So we wanted to change how the sequence was triggered to be uninterruptible," writes Burbank.
"That said, recompiling the map was creating a bunch of changes in the resulting bsp (remember, these maps were last compiled on a Windows 95/98 computer!).
"Any .bsp difference could cause minor but annoying pathing and collision bugs. Didn't want that.
"Hence, I just hex edited the map. Triggering the animation on the door opening (some community mods did this with decompiled / recompiled versions of the maps) instead of when the player walks through the door ensures the player can't shoot the scientist before things start 'syncing.' The sequence is SLIGHTLY different but plays more closely to what the alpha maps ran when this was authored."
Hex editing is a method of altering the underlying binary data of a computer file, and looks like the string of letters and numbers seen in the image at the top of Burbank's Mastodon thread. As he explains in a response, however, "fortunately the parts [he] needed were the plain text on the right side."
I love when game developers are able to explain how they did something in making or mending a game - mostly because it's normally much harder to do than anyone would have guessed, and that's a useful perspective to have on development in general. Heck, on life in general. If only every studio let their developers actually speak.