4 Problem-Solving Methods Every Indie Developer Should Know
The Oldground Software team joined us to talk about their new game Ace Squared, explain how it was created, and share four neat problem-solving techniques they used during production.
Introduction
Ace Squared is a multiplayer arena first-person shooter, based in a voxel environment. It features different classes, a fully modifiable environment, and modding support. I would say what might make it stand out is the voxel environment combined with first-person shooter mechanics.
I would say the main inspiration is taken from the game Ace of Spades: Battle Builder (AOS: BB) and some from the old Ace of Spades prototype created by Ben Aksoy. I always had in mind to take inspiration from the best parts of AOS: BB, make some things better, and add my own features.
Ace Squared
I have done all of the software development side for the game, which is a lot. Nikita has hugely helped with sound effects and the artistic side. Without me, the project would not exist. On the other hand, without Nikita, the project would exist, but it would look bad visually.
If I recall correctly, Nikita first started modeling stuff a long time ago and sent me these models, and has been contributing to the project since then. My philosophy is to just create a great game and fix all of the bugs.
The biggest technical challenge I have encountered is the netcode part. I have invested a significant amount of time into learning and implementing great netcode. Having to write all of the netcode by myself added easily 1 year or more to the development time, but certainly taught a lot.
And it does not help that many people who have the knowledge gatekeep information. I don't think there have been any major design challenges. The main unexpected obstacle was the difficulty of writing the netcode. A while back, I had working netcode, but later I noticed it only supported up to about 10 concurrent players, so that obviously needed improvements.
I overcame all challenges by learning to debug, read, and understand every line of code possible. There are no magic workflows or tools. I have so far fixed 100% of bugs I have really tried to fix, and some of them have been really, really difficult to fix (and often related to netcode). There are some problem-solving methods I will go over here shortly that I have found to be great for debugging this project:
- Information gathering: Gather all possible information about the issue, for example, is the issue happening randomly? What is the operating system? Is the environment production or development? How much available RAM does the system have? I think the most important piece of information to get is if the bug is happening randomly or not, because if it is happening deterministically, then it can be reliably reproduced in the development environment and then fixed quite quickly.
- Log everything: This method is useful for logging variable values and code execution times, for example. If there is a bug that seems to only happen on production, and static analysis on the code does not yield results, this method can always be used to add more logging to get a better understanding of the runtime environment.
- Video capture: When combined with logging, this may be a really useful method, at least for debugging entity interpolation or lag compensation. If, for example, logging what happens on a per-frame basis is combined with video capture, where the current frame number is shown on the screen, I can see visually what is happening for each frame's logs.
- Process of elimination: This may be one of the most effective problem-solving or debugging methods. This can be used to either quickly fix issues or use as a last resort when all else fails. I mentioned it as a last resort, because with this, you can find the cause of the problem even if you do not know the system's internals (for example bug or other undocumented stuff happening in the Unity engine).
Conclusion
I think the most difficult aspects of publishing Ace Squared have been dealing with Steam and their APIs. Some of their stuff is poorly documented or not documented at all. I have navigated these problems by just going forward and trying to find information from the internet or by asking Steam support.
First, I made the game pay-to-play, since I wanted to earn money for the hard work. But just recently, a year after the early access release, I made the classic mode in Ace Squared free to play (December 1st, 2025). Main goals for the switch are to improve marketing reach, increase player count for this indie multiplayer FPS by making it more accessible, and allow more players to test and experience the game.
The game is available on Steam.