Hello Readers! I had a great opportunity this past weekend to have some people play test the game. For the most part it went well…that is, until the frame rates dropped to a point of being unplayable, glitches caused the player to reset to random places on the map, and the controller seemed to invert itself through an act of black magic. The experience was very enlightening and served as a gentle reminder that making games is a TON of work and requires loads of dedication to see it through to the end. In the spirit of humility, I thought I would use today’s blog entry to discuss the lessons I learned, and how I intend to progress moving forward. I welcome any insights and comments, and I would love to hear about some of the lessons you've learned along the way.
1) Play test early and often with people other than yourself.
2) Profile early and often on the target devices.
3) Don’t leave highly problematic bugs and errors for later.
4) Don’t change the algorithm for essential game mechanics too late in development.
6) Learn from other's mistakes
Play test early and often with people other than yourself
This lesson was a hard one to learn. When the first level of the game was complete, I thought I could simply play test it myself and would get good feedback. This was true, but only to an extent. When I let other people play it, I quickly found out that the controls are confusing, the map doesn’t provide enough direction, and players will use the main character in ways I never even thought of. It would have been incredibly helpful to test the core mechanics on another person early on while I was developing them, rather than waiting until multiple levels have been made. As it stands, I’ve spent around 12 hours changing the controls on the hero’s climb animation so the mechanic feels more natural.
Profile early and often on the target devices
There were some serious frame rate drops going on that I didn’t realize because I was only testing the game on my home PC, which has a strong specs. When I put the game on my laptop, the frame rates dropped to the point of losing playability. I learned that profiling isn’t something that needs to wait till the end of development, and it would have been wise to profile as I built up the core mechanics. Using the profile after each new level or major game change and responding to its results is a great way to avoid these types of issues.
Don’t leave highly problematic bugs and errors for later.
It’s easy to become so fixated on finishing the game that errors and bugs are pushed off until a later time. I find, however, that engaging in this procrastination results in a ton of errors that compound on one another. For example, there was a problem with the hang animation, which caused a problem with the physics system, which caused a frame rate drop, etc. etc. Fixing these errors and bugs in order to build a strong foundation for the game mechanics is essential.
Don’t change the algorithm for essential game mechanics too late in development
In an attempt to fix the problems with my climb mechanic, I decided that the current algorithm had too many bugs to be salvageable. I spent a good number of hours creating a new algorithm that ended up failing miserably. The worst part is I screwed up the main characters script so much in the process that I had to revert to an earlier backup. After restoring the backup, I discovered a way to upgrade the mechanic as well as fix many of the bugs. Nothing is more heart breaking than losing hours of unnecessary work, which leads me to the final lesson.
After every major change, make a backup. After every development session, make a backup. After every optimization, make a backup. The point is, keep lots of backups. I made the mistake of optimizing a lot of code and then trying to redo the algorithm for the climb mechanic. Had I made a backup AFTER the optimization, I wouldn’t have spent so much time redoing work.
I know there are a lot of lessons left for me to learn.
Learn from other's mistakes
All these lessons bring me to my final point - Learn from other's mistakes. I do a good bit of reading about challenges other developers experience, but it is so easy to think "that won't happen to me." Humbling oneself and learning from another person's mistakes is wise, and I plan to listen to the advice of seasoned developers.
Which brings me to my final question, what lessons have you learned about development along the way?
As always, thank you for reading. I would love to hear from you and would love to hear any comments or ideas you have. Feel free to leave a comment or email me at email@example.com.