Game Development is meant to be about fun. But when you start working on something, you see the enormous amount of complexity hidden behind the curtain. Only amateur reviewers think game performance is all about the engine, texture size, or whatever they see. To mitigate the hardships we, as developers, face during gameplay, we choose a more convenient engine and programming language and follow some development mantras and patterns. All these approaches are made to make our lives easier during the development and support of systems. However, in my experience, one particular aspect of development is often overlooked by many (especially novice) developers. It's testing. ![[On the importance of testing.jpg]] I'm not talking about being able to test your code before submitting it (BUT PLEASE DO IT!). I'm talking about the skill of easing your testing process: - Console Variables - Debug Menus - Moving data to config instead of hardcoded values in the code The better your tools to test the feature, the easier your life will be. I can't recall even an instance when investing some time in a test toolset didn't pay off, even in the short run. Quick advice: 1. **Do you have constants?** Make them console variables and expose them to the config file. Reloading the text file or changing the data asset is always quicker than reloading C++. 2. **Do you do much balancing work?** Expose your variables to the ImGui (https://github.com/ocornut/imgui). Especially if a non-technical person is involved in working with the setup of your feature. ![[imgui.png]] 3. **Do you have many places with setup configs?** Document it. I'm not a big fan of documentation, but I'm very conscious of my memory capacity. Even if I can remember something in a week, I'm most certainly not going to remember it in a month. 4. **Before starting the development of a feature, think about how you would test it.** 1. Does the feature require a separate level? Create it. On each new project I joined, the first thing I tried to figure out was the fastest way to launch the game with the least overhead. 2. Does the feature require a game designer's setup? Ask them how it would be comfortable for them to set it up. Believe me, they work with such configs all the time, and they know what doesn't work. Sometimes, a minor inconvenience from a developer's perspective can save hours of teamwork. 3. How can you check the edge cases? Check for all incorrect values, add logs and warnings, and don't ignore them. Even a simple warning can expose the problem early enough to avoid sleepless nights spent fixing it. My general advice is to be very pro-testing. The more bugs you find, the fewer bugs the players will see. The better the game feels. There is no question about investing in the right tools — software, hardware, and more. And there must be no question about investing effort to make testing faster. ![[happy gamer.jpg]]