DUAL is a game written by Sebastian Gosztyla. DUAL is written using cocos2d-x. Sebastian was gracious enough to answer a few questions for us:
1. Tell us where you came up with the idea for this game. What were your inspirations?
The game came out of exploring ideas of close interaction between people across devices. After trying out some ideas, shooting objects from one screen to the other stuck with me. It created a peculiar sense of wonder, and encouraged playfulness and proximity. I worked from there to polish the mechanics and create an interesting balance of play styles centered around these core ideas.
2. What version of cocos2d-x did you use?
I started with cocos2d-x 1.x and didn’t have much trouble transferring to 2.x in the middle of development.
3. How did you decide to use cocos2d-x instead of Unity, Unreal Engine or SDL?
There were a few things that were really important to me when creating this game. In creating a local multiplayer game, I wanted the finished product to be as accessible as possible for nearly anyone with a smartphone to be able to find someone to play with. Supporting the lowest reasonable iOS and Android versions, as well as maintaining a very small download size both helped to achieve that goal. While working on networking, I wanted clear visibility into the source code, and the ability to easily incorporate native code for socket and bluetooth support. Lastly I wanted to work in the native environment for each platform to easily debug issues especially ones resulting from the craziness of networking. Cocos2d-x was the most lightweight and most free engine I came across that allowed me to do all those things.
4. What features did the engine offer you that made development easy? What do you wish the engine did better?
Honestly, I can’t remember anything I really wanted from the engine it didn’t have while working on DUAL. It satisfied all of my development needs for this project. 🙂
5. What tools did you use besides the engine?
I mostly stuck to programming in Xcode for iOS development and Eclipse for the Android side.
6. What 3rd party libraries did you need to use?
Initially I just used the iOS GameKit framework to deal with bluetooth networking. It worked well for prototyping, but as I wanted to have more direct control over the user experience I looked into CocoaAsyncSocket and HHServices libraries after reading Henry Smith’s Spaceteam development blog. CocoaAsyncSocket is great if you don’t want to implement your own asynchronous sockets in Objective-C and HHServices is a wonderful wrapper for the DNSService framework that helps in discovering and resolving bluetooth devices.
7. Did you create the art yourself? What tools?
Yes I did. Since the game asks the players to pay attention to two screens at once I decided on a clear minimalistic art style for easy readability. For the prototype and quick iteration I created all the geometric art programmatically in OpenGL, and only later switched to using simple textures. Affinity Designer on OSX became my most used tool for creating layouts, mockups, and designs.
8. Did you create the music yourself? What tools?
I used a combination of Bfxr, Audacity, GarageBand, and a good old microphone to create the sounds.
9. Will you continue to make games in the future?
Definitely! I love the possibilities of the medium, the challenges it brings, and the rewards it offers. Games are fun! 🙂
10. Lastly, any advice for those also making games on how to get to a release point?
Releasing takes way more time than one initially expects. I would just say to not get overwhelmed and keep on moving one step at a time playtesting often and iterating constantly.