At the end of a long day's FRED I stretched in satisfaction and clicked commit
. My mission was a masterpiece. Now my testers could caress its marble perfection and whisper admiring things.
[20:46] <battuta> who's around to test
[20:46] <battuta> Aesaar is it YOU
[20:48] <Aesaar> wait, what?
I ate grapes as Aesaar prepared his faceballs to absorb my ****ing masterwork. I couldn't wait to spoon his brains back into his head and listen to his feverish adoration!
[21:07] <Aesaar> game crashed
NOW WE'RE BACK ONE DAY
There's heavy testing going down: event shrapnel rattling off the walls of the dev channel, slabs of :words: frying in peanut oil, burning Germans incinerating HUD code. Axem's in major trouble. There's a support ship latched to him and it won't come off. He's being...harassed. It's a controlling spouse, and it won't even let him fire his ammo-based weapons. 'no' it burbles 'the ammunition is mine. gibe back'
[19:37] <@Axem> TTUTA
[19:37] <@Axem> MAH WEPONS
[19:37] <@Axem> gattler doesnt work after rearming
[19:37] <@Axem> and i cant fire secondaries
[19:37] <@Axem> just my maul and rapier
[19:38] <battuta> whoa, wtf?
[19:39] <battuta> :|
[19:39] <battuta> why would that happen?
[19:39] <@Axem> OY
[19:39] <@Axem> SUPPORT 1
[19:39] <@Axem> GET OFF ME
[19:39] <battuta> AAAAAhahahaha
Because the mission's critical path requires some interaction with the support ship, I set up a series of events to try to help the support ship clear out: wiping its goals, telling it to depart, soothing it with gentle compliments. But there's just something damn funny about this support ship. It doesn't lock onto the player and refuse to let go any more, but it's still sort of...neurotic. It detaches, has a panic attack, and locks itself in place vibrating furiously. If you give it an order it petulantly ignores you. It won't even depart.
I stare in bafflement at this emotionally damaged support ship and decide I'll figure it out later. Maybe he'll calm down.
BACK TO THE PRESENT DAY ****ING WHOOSH
It was supposed to befuddle my testers with its brilliance! Instead it'd gone full Hindenburg! Smashed itself straight into the desktop like a 3.6.10 build!
My mission had tactical jumps. Dialogue trees! Multiple endings! A radio station with a dance channel AND a jazz channel! It was supposed to be HAUTE ART! What piddling little scrap of pissant code DARED -
'hey dude' Rian said. 'you ever gonna come to bed'
'NOOOOOOO' I roared. 'I FOUND A BUG'
I booted up DEBUG and ran the mission until I could repro Aesaar's crash. After the player docked with a support ship and the support ship received its orders to depart, the player made a mid-mission jump, causing all other ships in the mission to depart. As soon as the player hit the subspace corridor, the game crashed. It even produced a cryptic error:
The SS! I hate those guys! I'd better make sure it was them, though. I ran the mission again, using a dev shortcut to skip straight to the subspace jump.
Let's diagram the case:
MISSION STARTClue 1
: Support ship freaks out and tremblesClue 2
: Player jumps to subspace. Most other ships in the mission depart. (Support 1 has already been ordered to depart by this point, but it's busy trembling)Clue 3
: Mission crashes with weird Nazi error...if
the support ship has previously arrived in the mission
This support ship was trouble. I was sure of it. Maybe SS stood for Support Ship, not Schutzstaffel. Maybe I needed to...sooth the support ship.
It was 1:00 AM and the room baked in the heat of my rig as it crunched through four separate instances of FreeSpace. I had my mission open in FRED and Notepad, trying to build a repro test case. But it wasn't working. No matter how I tried to spook the support ship in a clean, retail-assets mission - clearing its orders, ordering it to depart, setting max-concurrent-support-ships to 0 - I couldn't reproduce that weird, spooked freezing behavior. I couldn't get the support ship to tremble and sob the way it had with Axem, the way it had in the depths of my masterpiece.
Could the support ship be intimidated by my mission? Did it have stage fright? The support ship had to be causing the crash. But why would it crash during the subspace jump?
None of the events in that part of the mission even TOUCHED Support 1!
I batphoned Niffiwan and ShivanHunter. We put our heads together and tried to figure out what. Niffiwan suggested that the problem had to do with a ship attempting to depart to an invalid fighterbay. Okay, could be - two ships in the early parts of the mission had a fighterbay, and they were leaving during the subspace jump event.
But not a single ship in the mission was assigned to depart via fighterbay. And the support ship wasn't being told
to depart during the subspace jump event.
I wasn't going to bed. My flesh had started to peel from my skeleton in the heat. The whispers of ancient mirages moving across the glass deserts of Vasuda crowded my skull like epitaphs spoken in the final instant of a race long dead.
I continued the debug march. There were two primary lines of attack: building a clean mission that could repro the bug. This line of attack was pretty much turning into the Somme, in that everything I threw at it turned into hamburger, and CHRIST I wanted a hamburger so thank God for late-night takeout.
The other line of attack involved destroying my masterpiece.
Event by event I stripped my mission apart. Though my hands trembled on the keyboard, though I wept at the vivisection, though Rian turned away in shame, I peeled my mission down to its finely enameled bones - and sector by sector I drove the bug towards its lair.
The bug only occurred if the player jumped to subspace after meeting the support ship. Could it be the depart orders I was giving the ship? No, removing those had no effect, the crash still occurred. But we were still setting the maximum number of concurrent support ships in the mission to zero, and that
could be telling the support ship to depart.
It all came back to that support ship and its damn emotional issues.
Tears dried on my cheeks. My flesh crumbled into a cloak of dust, a vortex of ash and grief, whirling penitently against my bones. But I FREDded on. And, at last, I made a breakthrough. The crash occured - only
occurred, a single, necessary, sufficient cause - if the support ship was given a depart order
. This caused the ship to begin to tremble and freak out, just as it had with Axem. The source was irrelevant.
But my support ship in my clean test mission was departing fine. And how was the support ship's trembling linked to the crash?
It all seemed so hopeless. I'd poured my soul into nothing. The engine would eat me up and **** me out. Rian would never love me again. I just wanted it all to...end.
And then everything began to snap together.
Niffiwan had said a ship was attempting to depart via an invalid fighterbay. The support ship had trembled and freaked out like it was terrified
. And what we are all really afraid of, deep down? Of being alone.
What if the support ship was convinced it was being abandoned? What if it was crashing the mission because we'd taken away the only place it had left to go?
What if we'd somehow accidentally destroyed its subspace drive, and it froze in place when ordered to depart because it wanted to go to a nearby fighterbay but didn't have the self-confidence
And then, when we jumped to subspace and removed most of the ships in the mission area, what if the support ship saw all its fighterbays leaving, watched all hope depart, and DESTROYED THE ENTIRE MISSION RATHER THAN BE ALONE!?
Suddenly I could feel for that little ship.
How could the support ship's subspace drive have been removed, though? There was only one SEXP in the entire mission targeting subspace drives: in the mission's first frame, we fired alter-ship-flag: no subspace drive at -
It seemed like madness. Why would taking away Alpha One's subspace drive also take it away from the support ship? But if I was right, and support ships had self-esteem issues...what if the support ship tried to be like Alpha One any way it could
I removed the alter-ship-flag SEXP. Gave Alpha One back her subspace drive.
The crash vanished. The support ship stopped trembling. It departed peacably, and the mission worked.
I was right. Whenever Alpha 1 lost her subspace drive, SO DID THE SUPPORT SHIP
. He just wanted to be like his hero! But if he was left alone with no subspace drive and no fighterbay, he'd freak out!
And I was able to repro the minimum case in my test mission. All it took was this: if a support ship arrived into a mission after alter-ship-flag: no subspace drive had been called on Alpha 1, it would not have a subspace drive. If it arrived and there was a fighterbay nearby
, it could still be told to depart, but it would freeze in place and tremble. And if that fighterbay later left, the terrified support ship would crash the mission.
Or was it? As I slipped the issue into Mantis, I began to wonder. Who could have poisoned the support ship's confidence? Who could have torn that poor soul down, convinced him that we were trying to abandon him - leave him in a mission with no way to get home?
Could there be an archvillain in the shadows, a nefarious force responsible? Could it possibly be who I suspected? Could it be...?
'wow' Rian said. 'you're a skellington'