Wolfram|Alpha: Systematic knowledge, immediately computable.

Wednesday, September 14, 2011

A twisted little troubleshooting problem...

This one might have to go into my personal top ten gotcha list.

I've been playing quite  a bit of the game Borderlands in co-op with a few buddies. I somehow skipped over this game, now nearing two years of age. My mistake. I've not had so much fun co-op in some time, easily comparable to Portal 2 for sheer fun. A really superb game, beautifully and artfully designed and executed. Goes on sale periodically on Steam for dirt cheap. Check it out and get it.

On to the problem: Having more spare time on my hands, I'd been "farming" the game for weapons to pass on to my buddies to aid them in their battles. At some point, I asked them to send me their game save files, so as to view their current weapons and other items, helping me to decide what to look for when farming.

Fast forward a few days, and three of us play an epic multi-hour stint, gaining many levels while having a hoot. I passed both of them several choice and rare weapons and other items I'd found. All good so far. A few days later, one of them joins me in a game. Pretty quickly, he notices something's awry. He has lost his level, and the choice items I'd supplied are gone. WTF? Well, we decided to just play, chalking it up to a possible game or Steam problem (more on that later). Now things got strange. He left the game after a bit, and rejoined in later. Same problem. The game was not saving his progress.

We scratched our heads a bit. Could it be due to my character being far ahead in the "quests" of the game? Perhaps a game bug? We knew Steam / Valve / Gearbox had just recently (as in the same time frame) added Steam Cloud save functionality, and game-play information tracking to the game. Perhaps the Steam Cloud functionality was broken or bugged? A more likely possibility to me was an error between the PC and the chair...

I had my buddy send me his current save file after he'd noted the file date was from a few days earlier. In fact, the date was the same date I'd had him send me his file. Sure enough, the file was the same, hashed to exactly the same. WTF? Did the Steam Cloud grab his file when first patched into the game, and was now clobbering his local save? Seemed unlikely, the cloud stuff is pretty vetted.

I asked my cohort if perhaps somehow, he'd accidentally overwritten his file manually. He assured me no such thing had happened. I found some forum posts of users having game issues since the Cloud / stats patch, but scant few had any such save issue.

I asked him to check if he'd accidentally set the file or folder to read only. No dice. WTF?

During this process, one of our other players joined. He had the exact same issues. And just like the first friend, his file hashed to exactly the file he'd sent me. WTF?

I knew when I saw the new EULA, and saw the functionality added, I turned off the Steam Cloud for the game: I was already manually saving my game saves (a habit), particularly since this genre of game can suck so many hours from you building characters and load-outs. Both of my buddies had the Cloud and stats enabled. So was it the cloud? We tried disabling it for their games, still no go.

The "Aha! moment" came soon after. I wanted to test a different save on one of their games, so I instructed them to rename their current save. To our surprise, access was denied. We made sure the game was not still running, Steam was not running, but still no go. WTF?

Then it hit me. We use Skype for our in-game VOIP. Nice, clear quality, and near zero latency, certainly lower than the usual suspects for gaming chat. Greater bandwidth use is the trade-off, but since none of us are starved for the latter, not an issue. For small files, we typically just send them as part of the Skype conversation. This is exactly how both of my friends had sent me their saves.

And there's the rub. Everyone in the 'conversation' got the file transfer notification (neither buddy had sent it directly to me, instead just doing it in the group conversation.) I accepted the transfers and saved the files locally, but neither one of them accepted the other's transfer, since there was no reason to.

And that my friends, was the crux of the problem. Skype, in its wisdom, decides that that conversation has not been completed. Every time each of them started Skype, it noted the uncompleted transfer, opened the local file, and waited for the recipient to accept. Which of course, never happened, because neither one of them needed the file, and the conversation notice had long since become history.

Opened file = locked file! The game could read it just fine, allowing the appearance of normalcy. When it came time to save progress, no go. The game did not throw any error, but merrily continued without saving anything. Not really the game's problem - it is reasonable to expect only the game is touching its files. And not really a Skype issue, though it would be nice if when started Skype would notify the user of actions it wanted to "continue", so as to remind the user and perhaps allow cancellation.

By finding the file send in the conversation history, and cancelling the (never to be seen) acceptance for the other player, the file was no longer locked / open, and the game functioned correctly.

A good one!

Rob

1 comment: