What does the process look like when removing a bug from your game? And how does the team decide which bugs to prioritize fixing?
The overall process of bug fixing in game dev is done in five steps. In order these are:
- Identify the bug
- Prioritize the bug
- Assign the bug
- Fix the bug
- Verify the bug is fixed
Each step usually has its own specialists handling that aspect of it. We’ll go over each of these briefly.
1. Identify the bug
This is usually handled by testers to some degree. Usually it starts by observing some kind of unexpected behavior in the game - a move does too much or too little damage, the game crashes, the wrong animation plays, etc. The issue is initially reported and then it is investigated further to isolate the problem and its exact cause. In some cases like crashing, the development version of game can provide useful information like a callstack or memory dump to investigate. Overall, the goal in this step is to figure out what exactly is causing the bug and write up a detailed report on how to reproduce it so that the right developer knows what to look for in order to fix it.
2. Prioritize the bug
Once the bug has been identified and the cause of the problem ascertained, the production team has to decide how important the bug is. The most important bugs are usually those that stop other developers from working like unavoidable crashes in critical parts of the game. If Neelo and Desmal are both held up by this bug that I’m fixing, that’s three peoples’ worth of working hours who are unable to do other work while I’m trying to fix the bug. That’s a multiplicative productivity loss! As you might guess, this means bugs that break the entire team’s ability to work are the absolute highest priority. Overall bugs generally follow this basic hierarchy:
- Bug that blocks other developers from working
- Bug that blocks certification from passing
- Bug that crashes/freezes the game
- Bug that blocks the game’s critical path
- Bug that hurts performance beyond acceptable bounds
- Bug that stops major gameplay system from working
- Bug that stops minor gameplay system from working
- Bug that is annoying to player (but game is otherwise playable)
- Bug that looks weird (but game is otherwise playable)
This prioritization process is called [Triage]. As you can see, it’s a prioritization list that makes a lot of sense if you think about it - the goal is to keep as many developers able to do their work as possible, and then to keep as many major elements of the game working as possible.
3. Assign the bug
Different developers are responsible for different things. Once the bug has been prioritized, production assigns the bug to the appropriate developer to fix it. The bugs I fix as a technical designer are very different than those an animator or an environment artist would fix. Assigning a design tools problem to an environment artist wouldn’t make any sense. Producers need to know what each person is working on and their rough ability to take on new bugs. I’ve been assigned bugs outside of my expertise in the past because the dev who would normally fix the bug was unavailable and I had the room in my schedule to look at it, even though the producers knew it would take more time for me to fix it than it would for the other dev. The bug was important, I had lower priority tasks, so I got the assignment.
4. Fix the bug
After I’ve had a bug assigned to me, I still need to figure out where it fits into my task list. I’m not idle - I have other stuff to work on too. Sometimes the bug is high enough priority that I have to shelve what I was working on in order to focus on fixing the bug. Sometimes the bug isn’t a bug at all - it’s intended behavior that the QA department just didn’t know about. Sometimes the bug is lower priority, so I set it aside to work on later. It is entirely possible that a logged bug can take months for me to look at because it just isn’t a high enough priority and other things require my attention first.
By that token, sometimes the bug is such a low priority that I never get around to fixing it. Sometimes there’s just a steady stream of more-important tasks and bugs that keep showing up that I need to fix. These low priority bugs are often called “wishlist” bugs because we wish we could fix them, but there just aren’t enough hours in the day. On any AAA project, the wishlist is usually miles and miles long.
Overall, this is probably the most straightforward part of the process. I figure out what’s causing the aberrant behavior, figure out what it should do instead, and make the game do that. Maybe it’s because I mistyped the name of the action as GAME_ACTOIN_JUMP instead of GAME_ACTION_JUMP. Maybe it’s because the multiplier was missing a decimal point, so instead of the bonus being +2.5%, it was +250%. Or maybe it’s a super intricate bug that’s dependent on a lot of other factors [like an unexplained crash that happens if the player looks in one direction for several hours on a specific map]. This sort of work is usually handled through our tools, data, or code and probably the thing you are thinking of when you think “bug fixing”.
5. Verify the bug is fixed
The final step after I submit my bug fix is that QA needs to get my changes and verify that the bug is fixed. Sometimes the thing I thought would fix the bug doesn’t fix it. Sometimes the cause of the problem was something that I didn’t think about. Sometimes the fix I submitted fixes the problem but also causes a whole new bug (or multiple bugs) that I will need to fix. The bug fix needs to be verified by the QA testers who also do full regressions of the game (test all major elements of the game in order to make sure it’s all still working properly) on a regular basis. During these regressions it is entirely possible that a previously fixed bug is discovered to be broken again, in which case the bug is reopened, reprioritized, reassigned, and the process begins again.
The FANTa Project is currently on hiatus while I am crunching at work too busy.
Got a burning question you want answered?
- Short questions: Ask a Game Dev on Twitter
- Long questions: Ask a Game Dev on Tumblr
- Frequent Questions: The FAQ