Guten Tag you lovely people of the interwebs, this is Marco from 2GuyGames. We are a German startup company who specializes in game development. Today we want to share some of our insights into how game development is broken and how to change that.
“How did this bug get past QA?”
Probably everyone who enjoys games had a moment like this. You buy a new game you have been waiting for on release date. You expectantly load it up…aaand it’s broken. No software is without bugs, but video games seem even more prone to them. Why is that? The reasons frequently propagated by media and consumers include rushed development, greedy publishers, or that games are just so complex that it is near impossible to make them bug free.
These reasons might be true to some extent, but in my eyes they are just results of the real reason. Before I go on to bash game development, you should know that most software development projects fail. The amount varies depending on who you ask, but it is well above 50%. A project is considered as failed not only if it was cancelled outright, but also if it is was finished while exceeding time or budget. If your project starts to go above time and budget, you tend to rush to the finish line. This makes developers cut corners, test less and eventually release a broken product. Mostly we are told that management is to blame for this. Setting the budget too low, rushing development along. This may be true to some degree. However, as someone who worked in the trenches of multiple game projects, I tell you: It is mostly the developers fault.
Software is complex. It is hard to keep track of everything that is going on. That is why the IT industry has developed methods and standards that help keeping your software clean and bug free. Since these methods were developed, IT project failure rate decreased significantly. Game development simply has not yet adopted these methods. Why? Because video game developers have far less theoretical background than developers in other businesses. The main reason for this is probably that they are passionate about video games, not programming. These are the people who become “good enough” at programming to get things done, which is sufficient when you are a solo developer. But once project size increases, this leads to all sorts of problems. One developer can handle their own mess. Multiple developers making their own mess each is a recipe for failure.
Project management tools are the go-to solution for everyone faced with this problem. They don’t help. Don’t get me wrong, they have value in their own right, but they are the wrong tool for this type of problem. Organizing work does not help if the work is done poorly. A fantastic way to enforce better software standards are automatic tests. By forcing developers to write tests for each feature they implement, they are forced to implement them in a way that makes them testable. This in and of itself leads to better code. The main advantage of having automated tests however is the ability to see whether your software works with one click. This means that whenever someone changes anything in the project, one click shows if something broke in the process. This greatly reduces the need for manual testing while making bug fixing much easier.
So why isn’t everyone writing automated tests for their games? Because games combine the most untestable features of all of software development: user input, user interface, parallelism, online features, AI — just to name a couple. Additionally, most engines that are used for game development are not designed to have automated tests.
For these reasons we at 2GuyGames develop tools that let you test your game automatically more easily than ever before! Our first entry is an asset developed for the Unity engine. Unity already has some automated testing, but we will bring it to the next level. We get our asset done in a couple of months, so stay tuned! </plug>
In conclusion: bad programming habits lead to bad code leads to bugs lead to projects exceeding allotted time and budget leads to rushed projects lead to buggy end products. Next time Stefan will tell you more about why this is important from a management perspective! Hope to see you there!