Hosted Projects - FS2 Required > Blue Planet

Tevs HATE her! Avoid all blue beams with this one weird trick! (WiH spoilers!)

(1/5) > >>

Phantom Hoover:
As a massive Tev, whenever I feel down I always lift my spirits by playing Delenda Est and watching the Wargods get rinsed like a hot flannel. So I booted it up one miserable grey October day and, as the strains of Preliator lifted my heart, I prepared to watch the beams of justice scourge the agents of the alien menace.

The Katana went down exactly on schedule. Next up, as all adherents to the Cult of Steele know, is the Altan Orde...

...and it's at this point something went wrong. The beams started passing straight through, and the Altan Orde survived with around 25% hull. And this totally broke the mission: there's no recovery logic if a salvo fails to kill the frigates; it just stopped progressing. I tried looking closely at the Katana to see if anything was obviously wrong, but the only unexpected thing I could see were the engines of a Mercury shuttle ahead of it from first-person view. Odd, but not obviously related. It rapidly became clear that I hadn't unlocked the ending with advanced UEF beam jamming: this was some kind of bug.

A fairly obnoxious one, at that: this hadn't happened to me on another playthrough a couple of days earlier, but when I tried reproducing it on earlier nightlies and different engine options, I was still seeing this beam collision bug kill the mission at the same place. So there was at least some element of randomness here. It should also be noted that this was not an easy thing to reproduce: Delenda Est is a long mission, and the nearest checkpoint is some time before the Imperieuse's arrival. To make matters worse, I wasn't actually getting checkpoint prompts so I had to replay the whole thing from scratch every iteration. And, for reasons I couldn't really explain even at the time, I insisted on doing this on Insane difficulty and dying most of the time before reaching the bug.

Under the circumstances, my first priority was finding someone else to blame. Initially I tried the BP team, what with it being their mission and all these phantom shuttles appearing. But the mission hadn't been substantially changed in years, and they had no idea what shuttles I was talking about, and so suspicion turned to what was already the more reasonable suspect: an engine bug. FSO has seen quite a lot of engine changes since 19.0, some of them pretty daring, and although everything is intended to be backwards-compatible it can still have bugs. When discussing this on Discord, Asteroth mentioned that he'd merged an optimisation to beam collision detection earlier that month. You could not ask for a more obvious smoking gun; I did one test run on a build from before that change, the Katana went down, and Asteroth took over fixing the issue (for perspective, everything up to this point has lasted from the 26th of October to the 9th of November).

You would have to ask him exactly what he did next but, as he was unable to reproduce the bug in a fresh mission, he had to keep testing on Delenda Est. He ran through the mission nearly a dozen times in a debugger, tracing the code down to intersections with individual polygons... and it worked perfectly. The collision code was doing exactly what it was supposed to, except when it suddenly stopped working at all. By this point it was the 18th, Battuta had started working on BP again and was spooked by the prospect of unreliable beams, and I was starting to push for removing the optimisation from nightlies ASAP if the fix was going nowhere. Asteroth agreed, but made one last effort to figure it out.

Now, incidentally, Darius has been having a minor problem with the Karuna model file for years. One of the multipart point defence turrets on the front, unlike all of the others, always sticks straight up and doesn't rotate properly. It works fine in gameplay, it's just a tiny inexplicable annoyance which nobody even thought of mentioning in relation to the beam collision bug:

And suddenly, Asteroth found the issue:

The reason that turret's barrel is misaligned is because someone slipped up when making the model file and set the Karuna's main hull as the turret 'arm'. And when that turret is destroyed... it sets whatever its arm model is defined as to stop colliding with anything. And a salvo of beams from a Titan from dead ahead has a decent but not certain chance of killing that turret on the upper front left. That's it, that's the entire bug. You can reproduce this in literally any mission with a Karuna:

(The rotor, being a separate submodel, remains decidedly collidable.)

So it wasn't a code bug, it was the BP team's fault all along! It is utterly baffling how this bug wasn't caught earlier. As said above, the broken model file that led to this has been in the released version of BP for several years now. Me and Asteroth were both observing it happen more often than not, and yet everyone else who played the mission apparently lucked out enough not to report a bug. In any case, it's identified now, and we have a cautionary tale of PCS2 horror for every modder now to show for the effort. And an even deeper cautionary tale: the BP team have figured out how to offload their bugfixing nightmares onto unsuspecting passers-by. Be on your guard.

The only remaining thing to mention is that Battuta was totally gaslighting me about the phantom shuttles, and I won't forget it:

Couldn't you have just added a trigger that makes the ship self-destruct if it isn't destroyed at the right time?

Phantom Hoover:
Yes, but the mission was designed under the (reasonable) assumption that being shot in the face with a Titan's spinal beams was as good as a self-destruct anyway.

Fun fact: you can shoot out the wacky turret on any other Karuna escort mission (e.g. the Plunder) and sit back while your intangible Karunas kick ass. It's a dynamic difficulty feature!

Trivial Psychic:
I encountered a similar issue with the Jupiter model.

General Battuta:
How the **** has this not been broken since 2010?


[0] Message Index

[#] Next page

Go to full version