Interview with Daigo Sato, developer of BlockBros

bb_logo

Daigo Sato, the developer behind BlockBros, takes time away from development to talk with us!

1. Tell us where you came up with the idea for this game. What were your inspirations?

10 years ago, I made a Flash game called BlockQuest. I really liked the idea of players being able to create their own levels and share them with friends. I decided to port the game to smartphones last year. MarioMaker was announced after I started the development of BlockBros. I think this genre is getting more attention these days.

2. What version of cocos2d-x did you use? bb_explore3

Cocos2d-x v3.6, with JavaScript bindings. I applied several patches by myself to make it work perfectly for my game (Major patches are for a GZIP issue on Android HttpRequest and AssetManager customization). These patches make it a bit hard for me to update the framework, but I like to update when I got time.

bb_play23. How did you decide to use cocos2d-x instead of Unity, Unreal Engine or SDL?

This is the second game I made using Cocos2d-JS. I wouldn’t have chosen cocos2d-x if it did not provide JS-bindings. I cannot imagine writing a game with C++ anymore, JS is much faster for a casual game development like this. And the cool thing is in theory I can make Block Bros run on HTML5 with little effort.

4. What features did the engine offer you that made development easy? What do you wish the engine did better?

JavaScript binding was the main reason I chose Cocos2d-x. It saved a lot of building time and let me make use of JavaScript libraries of my choice. However there’s a lot of overhead in writing JSB every time I want to communicate between JS and Native layer. I used EasyNDK to simplify this process. Unfortunately even with JSB, you need to understand C++, ObjectiveC and Java if you want to mess with the native layer. I hope Cocos2d-x will make this part much easier by providing more plugins for developers to use.

5. What tools did you use besides the engine?

TexturePacker, ImageOptim, GoogleAppEngine, GoogleSpreadSheet

6. What 3rd party libraries did you need to use?

Flurry, Admob, Adcolony, EasyNDK, Kamcord (eventually replacing with EveryPlay)

7. Did you create the art yourself? What tools?

I created most of the pixel-art in this game. I know a lot of good pixel-art tools for windows, but it was hard to find a good one for Mac. I ended up using Pixelmator. It’s a cheaper alternative to Photoshop which works great in most cases.

8. Did you create the music yourself? What tools?

I purchased one music from Audio Jungle. Another song in the game was made by my friend Thomas Hunter (He is also an indie game developer!)

9. How was your experience to develop an online game with Cocos2dx?

Since I used JavaScript bindings, the client server communication was extremely easy. My experience was almost like writing a web application! I chose GoogleAppEngine for the backend, as it is an all-in-one solution which can save a lot of server related work. The operation cost is not too expensive, ads-income is easily paying off the server cost.

bb_creation

However I would not say it is easy to make an online game. In order to build a scalable server, you need to understand the server-side engineering. If your game can work offline, I recommend trying to avoid online elements. It adds much more development cost and operation costs after you releasing the game.

10. Can you explain how live update works in your game?

In Block Bros. I can update the game configuration without resubmitting the app to the AppStore. I really like this workflow, let me share how I make this work.

First of all, the configuration data for the game is defined in a single JSON file. I type in all necessary configurations in GoogleSpreadSheet and convert it into JSON via a python script I wrote. I upload this JSON file to the server so that the client can update the configuration data if necessary.

In addition, I am also using the AssetManager provided by Cocos2dx. This lets me add new graphics to production dynamically! As a result, I can add new characters in the shop without updating the App itself.

bb_brothers

This is a useful method not only for an online game. For example, Sweet Hazard is a shooter game I made last year, and the game can update its data dynamically if the game is online. Thanks to this feature, I can tweak the game balance very easily based on Flurry Analytics.

11. Will you continue to make games in the future?

Definitely! I am interested in working on an RPG next time. (Rebirth Saga is the last RPG I made 10 years ago.) If you are interested, please ping me @daigo on twitter or send an email.

12. Lastly, any advice for those also making games on how to get to a release point?

Making an indie game is like starting a company. You have to think about the game all of the time and work on the game everyday, for months to years. I think that is unavoidable if you are serious about it. However I have some tips for people who are struggling to release a game:

Pick an idea which you know “works”
If you are unable to complete games, try this strategy. In my case, I decided to remake a game I made in the past as I knew that the game design “works”. For several years I was unable to release any game, I needed to break that habit. Finally, I was able to release two games with this strategy!

One commit a day
Make a git commit everyday. It does not matter how small the commit is. Try not to stop. Block Bros. required 1.5 years and 2,000 GitHub commits (This means I committed 4 commits/day on average.) By the way, if you do not know what git is… I strongly recommend you to learn it.

Buy time with $$$
Don’t be afraid to be “lazy” and pay others to work for your project. Consider buying assets and get whatever can help you to save your time. I spent money to outsource character art and music.

BlockBros is available on iOS and Android.

campain_levels

Posted in Business Tagged with:

Categories