From Design to Feature Implementation: Avoiding Common Pitfalls in Game Dev

Treven Tan
Mighty Bear Games
Published in
4 min readMar 13, 2024

“Here’s the design document; go ahead and implement according to the document.” Surely, the result will be exactly as intended, right? For those familiar with the telephone game, we will already know that the result will definitely not be what the Designer originally intended. So what went wrong here?

This article will be based on my personal experiences as a Game Engineer at Mighty Bear Games, focusing on my personal takeaways from avoiding and recovering from some common pitfalls in game development? Although this article might not apply directly to everyone, I hope these insights will aid you in your game development journey.

Understanding the Problem

Have you ever found yourself grappling with constant design changes? Maybe you’ve encountered solutions that don’t quite make sense, or perhaps you’ve experienced the frustration of stacking too many features onto a system originally designed to be simple, making even minor changes a time-consuming ordeal. If any of these scenarios sound familiar, you’re not alone. Let’s delve deeper into why these issues arise and how understanding the designer’s intentions can help navigate them.

Often, when a task or design document reaches the engineers, it is usually a solution to a problem the designer is trying to fix. Sometimes, that solution might not be the best one available. So why is that the case? Most of the time, these solutions come from people who are not familiar with the internal structure of the system, and to the best of their knowledge, this is the best way forward to resolve their issues.

That is why it is important for the engineer, who usually has the best understanding of the affected systems, to understand the problem at its core to counter-propose with better suggestion(s). By having a better understanding of the issue, engineers can also develop solutions that scale properly and create flexible systems for future planned features.

Photo by Ilya Pavlov on Unsplash

Documenting Discussions and Decisions

Once a solution is agreed upon, clarity about the deliverables at each stage of the feature becomes crucial, provided that your feature is broken down into stages. It’s essential to ensure that all information is clearly conveyed and easily accessible, as we don’t want any assumptions happening. Personally, I find it effective to include links to discussion threads on ClickUp cards, making it easy for everyone involved to access the relevant information.

Also, documentation is super important. Documenting what is implemented is essential so that when a feature is handed over, the next engineer can pick it up easily. Clear documentation ensures a smooth transition and highlights potential pitfalls the new engineer might encounter.

Finally, always over-communicate. It's sometimes better to over-communicate and nag the other person than to settle for a broken product.

Tooling

Ever encountered a problem where you have to go through various loops and hoops and wait for the stars to align to test a specific feature? It’s frustrating and time-consuming, isn’t it? That’s why, during and after implementation, it’s crucial to create tools that make testing your features easier for everyone involved.

Additionally, creating tooling for the quality assurance (QA) team and yourself can make a huge difference in the speed and efficiency of feature testing. Having easy access to the feature you want to test is essential for smooth testing procedures. Even saving just a quick 10 seconds can add up and benefit everyone who is testing or building upon that feature.

And when it comes to ensuring the reliability and stability of your features, writing unit tests is essential. Unit tests are like safety nets that catch bugs before they become major problems. By writing tests for each component of your code, you can verify that everything is working as expected and catch any issues early on in the development process. This not only saves time and effort but also improves the overall quality of your codebase.

Summary

You’ve made it to the end of the article — congrats and thanks for sticking with me! Throughout, I’ve covered the key steps for successful feature implementation, from discussing and actually getting your hands dirty with implementation and tooling. But remember, these solutions aren’t one-size-fits-all. As fellow game developers, I hope these tips will help you overcome challenges and reach success in your own development adventures. Happy coding! 🎮🚀

--

--