What Went Right
1. We Gained Respect and Recognition
A major draw for us was the potential publicity that would come from winning the contest. By winning the First Place Grand Prize, we've received a wide range of publicity, and our studio has started to receive new recognition and respect from the gaming community.
zGames received broad press coverage after winning the contest.
Though we can't name names, we've had several previous potential customers come back to us once they saw we had won the contest. Demonstrating beta builds of Pong World at the Casual Connect conference garnered us a lot of attention from publishers and companies looking for outsourcing partners as well. Initial feedback about the game was very positive.
2. We Were Very Focused
We grew up playing Pong and its successors, and the knowledge that we were competing to develop an innovative new version of the iconic game gave us a clear direction to aim.
Moreover, the contest deadlines were really strict and we had to focus on the key features to deliver the game in time.
We had to quickly make decisions about game style, controls, and play modes and optimize our efforts to get the results we needed -- without the liberty of holding long discussions on features that do not have much influence on the game. The need for speed forced us to reuse a lot of architectural patterns and pieces of code from the games we made before, such as our The War of the Worlds: Adventure game.
Pong World level gameplay.
Finally, the decision to develop the game for one platform also helped us focus. The contest required only iOS, and we embraced that requirement -- no matter what they say about always developing cross-platform. We're very experienced in Cocos2d games for iOS, so it was much easier for us to write quickly for that platform. For example, it is half the effort of writing it in C++ for Cocos2d-x. We can always port Pong World to Android later if needed.
3. We Had Good Game Design
We chose a classic approach to Pong, and it was a good decision because everyone understands how to play. It also made the game easier to design. We initially built the game around a single character that is cute and appealing, and it gave us a clear vision of what the game should look like.
Our game designer created a full game description in our Pong World Game Design Document before the game started development. We created a list with paddle abilities, estimated our effort and left complex features behind.
Pong World GDD Sketches.
A stable design for the demo prototype allowed us to meet the short and fast initial contest submission deadline. We used a streamlined GDD with a reduced feature set for the demo, and kept that reduced feature set frozen. The full GDD was large and complete, with a lot of points, but for the prototype it was essential to have a focused design.
Pasha (our designer) noted all questions that arose during the demo creation phase, for later use in the full GDD, but he kept demo changes to an absolute minimum so that we could implement all the features within the time limitations. Processes are great, especially when the team is working hard and is motivated towards achieving the goal.
4. We Decoupled Gameplay Code From The UI Code
Decoupling the gameplay code from the menu code was an important architectural decision. We had three developers working on Pong World: one for UI and two for gameplay. We decoupled the UI code from the gameplay code and connected them via a single small interface. As a result, we had one UI developer completely concentrating on his part of code, with no one interfering, which resulted in higher code quality, less bugs, and a reduction in development time.
Pong World menu interface.
5. We Created a Cheat HUD
Very often during game development you need to calibrate parameters or tweak a feature. It's a real time sink to re-compile and re-release every time you need to do that. To make this process easier, we developed an in-game Cheat HUD, enabled via a unique gesture.
Pong World cheat HUD.
Our Cheat HUD is a list of buttons that enable different cheats: e.g. win this level, or add 100 coins, or change a paddle speed parameter. Whenever we added a new feature into the gameplay, we added a button to the Cheat HUD that allows us to change and test this feature. This helped us remove a lot of bugs, because we could simulate a lot of game situations that don't happen that easily.
Other examples of the usefulness of the Cheat HUD include the calibration of paddle movement speed, adding coins and points to the player's profile, triggering the winning or losing a level, enabling paddle bonuses and level bonuses, etc. All of this is very useful to both game design and gameplay testing, as well as testing and QA.
Including a Cheat HUD is one of our best practices for game development. Just make sure you don't include it into the App Store build by mistake!