Having released Container Stack a retrospective seems appropriate. The goal of that game was to finish a game and implement all aspects of the game from music and sounds to models and graphics. Along the way a few important points were learned (or re-learned in some cases).
After the core features of the game were knocked out a lot of time was spent playing the game on mobile devices. The number of issues discovered just by playing in different environments, starting/stopping etc… was much more than anticipated. Since a majority of play during dev was through Unity it meant that the game was not being tested under real, natural circumstances. Don’t forget to just play your game!
Use Pooling from the Start
Do not wait until you have developed your game to implement Object Pooling - it will be a critical component to most games’ performance and doing it later may cause some refactors (especially if you haven’t made many games before). Doing it from the start and planning for it will make the rest of your code easier to manage when you are in the performance-tweak phase.
Not Everything You Do Is Good
You will make changes; sometimes very large ones. Never be afraid to undo those changes if they did not turn out the way you planned. Work done thus far should not be a determining factor for keeping a feature. Let the feature’s usefulness and solid implementation govern that.
One Size Does Not Fit All
Controls that work well on a computer will not necessarily carry through to other devices - spend a lot of time perfecting those controls on all devices you intend to support because even small changes can have major effects on usability.
A Good Tutorial Is Hard
A good tutorial should demonstrate how your game works and in the course of doing so you are going to have to induce game states. If you’ve structured your game well this will be much easier but if you have not then replicating specific states of your game will be a challenge. You will also need to make sure each tutorial section that is device-specific is handled on all devices. Text describing a keyboard will not work on a mobile phone and vice-versa.
Use Task List
There were many dimes during dev where ideas came about and having a good list of tasks and ideas to explore was critical in making some of the changes successful. You can use whatever software you choose; from BitBucket board, to google docs to Workflowy. It doesn’t matter too much what you use as long as it can serve you well!
There were many other lessons learned along the way but these were the ones that stood out. What about you? What lessons have you learned as you’ve finished games?