Duke it from obit
July 14, 2018 2:30 PM   Subscribe

Aliens: Colonial Marines (prev) is a 2013 FPS developed by Gearbox for Sega, that promised an immersive experience in the Alien universe, but after a troubled development cycle was widely panned at release, with the inexplicably poor AI of the enemies being a common target for complains. More than five years later, a modder working on the game discovered a single-word typo that prevented some of the AI code of the xenomorphs to be executed, making the game ever so slightly better. (Via)
posted by lmfsilva (30 comments total) 13 users marked this as a favorite
 
So... it’s a bug hunt?
posted by GenjiandProust at 2:45 PM on July 14, 2018 [105 favorites]


I was reading about this earlier and it is amazing how much was broken by such a little subtlety. It certainly doesn't fix the game's overarching problems but dang.
posted by cortex at 2:49 PM on July 14, 2018 [4 favorites]


1) AttachXenoToTether doesn't do anything. Its basically empty or stripped
2) AttachPawnToTether does ALOT. It controls tactical position adjustment, patrolling and target zoning
They shipped code that had two functions called PecanSeqAct_AttachPawnToTeather and PecanSeqAct_AttachPawnToTether?! If not, why didn't the game engine puke errors? Regardless, why didn't the alpha or beta testers detect the odd, non-existing xeno behavior?
posted by Foci for Analysis at 2:49 PM on July 14, 2018 [5 favorites]


This is hillaroous and both very beliable and jaw droppingly dumb.
posted by Artw at 2:53 PM on July 14, 2018 [13 favorites]


I'm wondering the same thing, Foci for Analysis. Guess #1 is whatever task-specific language they invented for the AI doesn't have any sort of checking at all and undefined functions act like null functions. That'd be terrible, but I've seen worse sins in custom languages. (Use Lua, folks!) Guess #2 is some programmer defined a null function with the typo just to make the stupid error checker shut up and never, ever realized the stupidity of their mistake.

Either way it's also clear playtesting also failed somewhere down the line. That or the game's producer rushed it out the door knowing it was totally broken; that happens a lot in games.
posted by Nelson at 2:58 PM on July 14, 2018 [7 favorites]


The typo was in an ini file, not in the game code itself, was my understanding. Based on Bethesda games, a lot of cruft seems to wind up in those that doesn't seem to do anything.
posted by Canageek at 3:45 PM on July 14, 2018 [2 favorites]


That or the game's producer rushed it out the door knowing it was totally broken; that happens a lot in games.

I guess i can see this happening under a perfect storm of circumstances, for example, if the lead developer was creating all the sophisticated AI functions, but quit abruptly when the game went into development hell, and no one knew how the code worked or what it was supposed to do and the producer was screaming at the inexperienced members of the team that remain to get something out the door now! I don't care about the Metacritic we're not gonna make payroll or we will be in breach of contract or something like that, and they just had to finish the game as fast as possible in the state it was in, and it turned out the AI code was complete anyway and someone just made a typo in the configuration script on the branch they were working on but everyone at this point was too burned out to care about that stuff anymore.
posted by zixyer at 3:47 PM on July 14, 2018 [3 favorites]


Ah a typo in the .ini file makes more sense; that stuff's less likely to be type checked. There are similar mistakes and facepalm moments in all the .ini code that makes up the Civilization AIs. No single bugfix quite as gobstopping as this, but it's amazing how much improvement a few outside fans can make with a once-over on the .ini files.
posted by Nelson at 3:57 PM on July 14, 2018 [2 favorites]


The typo was in an ini file, not in the game code itself, was my understanding.

Yeah, the typo's in a config file, and those tend to be very lenient, I guess on the theory that it's better for a game to misbehave than to outright crash and force tech support to deal with debugging users' ini files.

The other thing is that it might actually be reporting errors behind the scenes, but the game is just so broken that this error was lost in a stream of other runtime errors. It would hardly be the first shipped game where if you go and look at the engine logs it's throwing all kinds of errors in the background.
posted by Pyry at 4:00 PM on July 14, 2018 [5 favorites]


Well, the rumors are that Gearbox was stripping cash from Sega and Colonial Marines for their own projects, and the project had been through several dev houses, so, make of that what you will.
posted by Samizdata at 5:04 PM on July 14, 2018 [3 favorites]


If the code was in the .ini file, then it's interpreted at run-time. Since the game-makers don't want the game to crash in play, the interpreter, on encountering an unknown token, likely throws up a ¯\_(ツ)_/¯ and keeps chugging along.
posted by SPrintF at 5:08 PM on July 14, 2018 [4 favorites]


yeah, if you read the 'production' and 'controversy' sections of the game's Wikipedia page it becomes pretty easy to see how this shipped. Gearbox took this project, spent a lot of the money they were paid for it on Borderlands and Duke Nukem Forever instead, and subcontracted to a couple of other studios who didn't get much done due to all their work requiring approval from both Gearbox and the publisher. When the publisher finally said "that's it, deliver or else, no more extensions" they took it back in-house and spent nine months getting it to a point where it satisfied the bare minimum of their contract. Alien AI broke? Who cares. Can't delay it any further. It works, who cares if it's fun? Ship it.

Sometimes when I read stories like this I am astounded any AAA games make it to market.
posted by egypturnash at 5:10 PM on July 14, 2018 [16 favorites]


Third possibility, that I’ve seen happen: someone mispelled the function name initially, and then someone wrote the same function with the correctly-spelled word. The former withered on the vine but was never removed, meaning it was still callable. I still shudder to think about all the problems that someone’s “Timout” function caused me.
posted by invitapriore at 5:11 PM on July 14, 2018 [12 favorites]


2018: This is hillaroous and both very beliable and jaw droppingly dumb.
posted by Fizz at 5:56 PM on July 14, 2018 [10 favorites]


I don't care what you say- the original game was still responsible for one of my favorite in-game gifs. I can't remember who actually made this joke, but it still cracks me up:

"Doh-de-doh-de-doh-de-doh...Hey, guys! Workin' hard or hardly workin'? Doh-de-doh-de-doh..."
posted by TheWhiteSkull at 6:51 PM on July 14, 2018 [18 favorites]


Sometimes when I read stories like this I am astounded any AAA games make it to market.

I've been hearing versions of this sentiment from people I know in the game industry for years.
posted by IAmUnaware at 7:12 PM on July 14, 2018 [1 favorite]


I do enjoy Borderlands though.
posted by srboisvert at 7:14 PM on July 14, 2018 [2 favorites]


As someone who has released software, I have to say this not a surprise. VP makes an arbitrary launch date and the game launches on that date regardless.
posted by 922257033c4a0f3cecdbd819a46d626999d1af4a at 7:22 PM on July 14, 2018 [3 favorites]


Typo. That's cute.

There's a legend out there (which is totally true) about a studio that shipped the wrong disc to the mastering factory.

Players around the world bought a slowed-down debug version with errors galore. And it still got 3 stars from some websites.
posted by JoeZydeco at 7:26 PM on July 14, 2018 [1 favorite]


Use Lua, folks!

I like Lua as much as the next guy but this wouldn't have helped much; either the no-op function was defined (in which case just about any language would happily call it and do nothing) or it wasn't (and Lua would crash with "attempt to call nil"). In the case that the function wasn't defined, having some typechecking or static analysis would've have helped catch the problem before the game shipped.
posted by Jpfed at 8:09 PM on July 14, 2018 [1 favorite]


> TheWhiteSkull:
"I don't care what you say- the original game was still responsible for one of my favorite in-game gifs. I can't remember who actually made this joke, but it still cracks me up:

"Doh-de-doh-de-doh-de-doh...Hey, guys! Workin' hard or hardly workin'? Doh-de-doh-de-doh...""


That made me laugh again too. Cheers.
posted by Samizdata at 8:36 PM on July 14, 2018


I feel bad for whowever this dev was dumped on, but if it gave us Borderlands, I can live with it. And kudos to the masochistic fan who never gave up, never surrendered.
posted by Brocktoon at 9:16 PM on July 14, 2018


You know, Burke, I don't know which species is worse. You don't see them fucking each other over for a goddamn percentage.
posted by fearfulsymmetry at 11:28 PM on July 14, 2018 [17 favorites]


I’m with AvP Block, who are you fighting with?
posted by Artw at 11:37 PM on July 14, 2018


having some typechecking or static analysis would've have helped catch the problem before the game shipped.

Protip: Run your ini files through a spellchecker, and make sure everything's as expected.
posted by mikelieman at 12:03 AM on July 15, 2018


either the no-op function was defined

"Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?"
posted by Nonsteroidal Anti-Inflammatory Drug at 12:11 AM on July 15, 2018 [7 favorites]


Spelling errors in code are the bane of my existence.
posted by grumpybear69 at 4:30 AM on July 15, 2018


Gearbox took this project, spent a lot of the money they were paid for it on Borderlands and Duke Nukem Forever instead

ALWAYS BET ON DUKE
posted by warbucks at 5:58 AM on July 15, 2018 [2 favorites]


Typo. That's cute.

There's a legend out there (which is totally true) about a studio that shipped the wrong disc to the mastering factory.

Players around the world bought a slowed-down debug version with errors galore. And it still got 3 stars from some websites.


I mean, it's not pre-Halo Bungie shipping a game whose uninstaller cleared whatever directory the game was installed to, even if it was installed to the root directory
posted by thecjm at 7:23 AM on July 15, 2018 [4 favorites]


I bet you anything this is what happened: the variable was added to the code with the typo. It got copy-pasted into the .ini, where it worked fine. Late in the game, a different coder looked at the variable with the typo, muttered to themselves, and fixed it. But the .ini most likely doesn't live with the code. It's probably an asset that goes with the installer, like a readme. So even if the developer did a search-and-replace, it wouldn't have found it. QA probably noticed something was wrong, but amid the mass of other issues it was too hard to pin down.

A game I worked on a while back just suddenly started running 20% slower one day for seemingly no reason, quite late in development. Going over the change history I happened to notice that one of the project files had been edited. Someone had accidentally disabled compiler optimizations. We could have easily shipped it the broken way. It really is a miracle that any game ships and works as expected.
posted by Sibrax at 8:47 AM on July 15, 2018 [5 favorites]


« Older RECORD/PLAY   |   Mefi Loves a Mystery, so...who are these people? Newer »


This thread has been archived and is closed to new comments