epagagames.com

On Pivoting and Killing My Productivity

April 15, 2014 Developer Jedic Spoxel 0

It has been a pretty busy few months. About 4 months ago I made the decision to pivot on the engine design for Spoxel. It wasn’t a decision I made lightly, but it needed to be done. I was getting pretty close to a beta release but as I added more and more items I quickly realized that I was having major problems with the code. It wasn’t clean and was obviously because of poor design decisions I made. Most of the entity and item systems relied on inheritance instead of composition and became pretty inflexible when I wanted to make the item and spell system more flexible. It also caused a ton of bugs to handle one off cases and increased the code complexity by a fairly large margin. So, with a heavy heart, I plunged my code into re-factoring hell.

Almost every major system in my game was affected and broke when I re-factored the underlying entity system. My project, which had been free of almost all the warning and had no errors, had been filled with little red squiggly lines as far as the eye could see. The daily progress I made seemed to drop to a crawl as I tried to fix systems that I had written in some cases over a year before.  Especially when you work by yourself, this kinda of progress can be draining. I slowly began seeing results with cleaner code and new systems going online but I needed to take a break.

So I took a break and did something I hadn’t had time to do in a long time. I played games. After all, I had a fairly large backlog of games I hadn’t played on steam 🙂 About this time, several real life events took place which delayed progress further. But about a month ago I was finally able to start making good progress again. I’m about a month away now from reaching an Alpha state with all the major game systems in place and MUCH cleaner code to boot! There are a lot of exciting announcements coming and hopefully more than a few screenshots soon!

Leave a Reply

Your email address will not be published. Required fields are marked *