Infinite Game Works has been a very very long time in the design phase. More than what I expected for a value priced title. I think there are even more sub-systems in it than the previous title of Fading Hearts. Then when I went to code it, coding the systems took longer than I thought. Or to be more accurate the UI took more time to code. Then I needed to think up all of the text-based content while thinking of the design consequences. It was taking forever!
I thought to myself that all of this was worth it since this would (hopefully) reduce the workload I would have to do overall. I would be using a lot of the math/logic/stats skills I learned in university to plan out my game design. Not to mention the experience I had when playing with hardcore board gamers allows me to predict a lot of game imbalances ahead of time. I didn't realize how powerful this was until I finished Fading Hearts features. It was already fun and not horribly broken. A few tweaks and several bug-fixes and it would ready.
Then I remembered that for Fading Hearts, I worked on all the base sub-systems first. Then after I just started to add onto the base I created. It felt a lot easier and I was able get some motivational feedback faster. Did I do that for Infinite Game Works? No! I thought I could be even more awesome and just program everything in advance. But that's behind me now and very soon will come the polishing.
So what is the lesson that I have learned? Planning, math, stats,and logic is awesome for making a fun game from the start. Playing games with people who break them also greatly helps too since you'll know what to look for in game imbalances. To keep motivated, rush to core elements playable state and build from there.