Blogs

Bug Busting: The Case Of The Disappearing Svet

author George Martin

George Martin

Monday 23 September 2019
Missing Svet

image caption I feel like something is missing from this image...

Testing for and identifying bugs is something I do on a regular basis, but not all bugs are created equal. There are those that for the most part go unnoticed, yet more that end up becoming features, and then there are those that completely break the game. One such game breaking bug appeared in the game prior to AVCon 2019.

Testing 1, 2, 3!

Between each event that we show off the game we work hard to introduce new features and improve existing ones based on your feedback. These changes can sometimes introduce new bugs alongside them so leading up to an event like AVCon we playtest a lot.

In this playtesting we discovered a bug that had appeared in multiplayer causing the character to, apparently at random, not respawn correctly at the start of round 2 onwards. The only parts of the character that were visible were the trails from her boots and on top of that, her movement was completely broken. This was certainly a bug and not a feature!

A Missing Heroine

Having not edited the player reset I was really confused as to what could be going wrong. I began attempting to isolate the problem, looking at each individual aspect of the tracker responsible for detecting the end of the round and resetting the character for the next rounds. I’d find something that could potentially be the cause, make changes and then test to see if it had fixed the bug. I’d then make note of the change in case it caused future bugs and keep going.

The Breakthrough

The seemingly random occurrences of this bug made testing difficult as it could sometimes take multiple runs of the game for it to happen again. At multiple times I thought I had fixed it, only for it to occur again a few runs later. This ended up going on for a few days and I was running out of time to have it fixed. Then I had a breakthrough.

It wasn’t random!

Now I knew that some factor must be changing between runs that the bug occurred and runs when it didn’t. Once I knew what changed I could isolate where the error was coming from and then I could fix it. Finally, I found the key; it was jumping. If the player jumped at the end of the round the bug didn’t occur. Suddenly the cause was obvious and I had been looking in the wrong place the whole time.

The True Culprit

It was the grind rails! I had recently overhauled our grind rail system to work differently to allow for some extra functionality in an upcoming map. The character would attach to the grind rails and follow the spline path used to create them. It turns out this new functionality was fighting with my reset function for positioning the character back to the start. After this realization I had it fixed in minutes, adding a command that would detach the character at the end of each round. One final session of testing and I could confirm that the bug had been solved.

The learning never stops

“...during the development process mistakes can and do happen, nobody is perfect.”

This was a learning experience for me in the importance of regression testing. Sometimes you don’t anticipate how that new feature you added will interact with other features you have coded. A good thing to remember and understand is that during the development process mistakes can and do happen, nobody is perfect. The important thing is to learn from these mistakes and always work towards improving your skills.
Signing off,
George Martin

Join the mailing list

where to find us

Adelaide SA 5000

hours

  • Monday to Friday: 9am – 5pm
  • Sat/Sun & public holidays: closed

join the mailing list

© 2022 Melonhead Games