1. Super duper busy month ever!

    I started off this month with the tedious project ever I accepted to work on. In order to port 21 games to HTML5-based games. In fact the timeline is for totally 2 months, but it took times nearly 1 whole month to set up talking and direction with client. So this mean I started late, and late !

    Fortunately I bring in another member to help out as game on web platform is cross, and so cross in nature. It requires to be able to run on iOS, Android, and Desktop. Of course, for iOS you have specifications that don’t diverge that much, everything set up. But for Android, it has several tastes of browsers and fragmentation of device to make developers headache. Desktop is not a problem, it’s full features.

    I decided to use cocos2d-html5 (http://cocos2d-x.org/). In fact, it’s a spin-off from cocos2d-x which I experimented a past 2-3 months on my own iPad. I really love this framework as it’s open source, solid community (mostly Chinese, but it’s okay :), cocos2d-based framework for all spin-off from cocos2d-x which means you have a single API on the go with your future porting or game development !

    As far as I have my hands on cocos2d-html5 in which I must say the current version is still in alpha 2 version with 10-20% as stated in the website for improvement on speed and javascript binding, it runs pretty smooth on Desktop and iOS device. Unfortunately, for Android you must have a decent from medium to high end spec in order to make it a go go on FPS or Frame per second. Another issue founded in using the framework is playing sound effect and background music, I tested playing background music on mobile and it won’t play properly, some play just 1 time (on Windows Phone 7, and Android), but iOS, it doesn’t play at all. Preloading can be achieved as far as I tested, if I did that both sound effect or background music won’t play. The solution I used for the current project is avoid playing background music, and target only sound effect also not preload sound or music as well, you’re good to go then. Apparently I found an issue of sound effect won’t play at all if your game is running under the hood of Titanium app-based, you can find my question about this issue at cocos2d-x forum here: http://cocos2d-x.org/boards/19/topics/14201.

    Anyway I must say I love this framework, and pretty excited with its improvement and development. I chose to stick with it for a prolong period of time. Just see how far it can go.

    Apart from that, working in environment that you have to integrate your knowledge and work with your only team mate in web domain is an awesome experience. We collaborated via Trello (http://trello.com) which simulates a scrum practices via card switching for a current project in focus. Yes, only this single tool can make your life much easier, and more focus.

    Another big part is Git (http://git-scm.com/). Firstly I used Aptana Studio 3 (http://www.aptana.com/products/studio3) to develop javascript game code. It has feature such as FTP syncing, and embeded Git. Be able to work on this project makes me comes closer to Git environment and its world. After some times using that IDE, I just found out a big issue and that is most IDE won’t have a full featured Git support.

    Thus I decided to drop using IDE, and switched fully to Sublime Text 2 (http://www.sublimetext.com/2) for pure text coding. It’s safe for such a decision to use a pure text editor to code a game as javascript won’t need any IDE or compiler to work with, it can be coded with just anything (only intellisense which may be a big feature for someone working with it, but Sublime Text 2 also has partial to see automatic code suggestion as well but not all). Until that time switching to pure text, I started to use Git command line. I knew it would cost amount of time spending off the actual development to this kind of management in sideline, but it’s worth it.

    Initial stage costs fairly, but on the go after I spent more time with it and be more familiar with its commands, I can manage to reduce time lost to nearly minimum. A huge decision for this project is that I need to spent time designing a working approach for Git’s branches and branching. As I have 21 games to port, and there’re 8 types of game to work on for others that are based on them with my intention to have all the code indexed by Git system for future reference and safe way for programmer to work if the backup code is lost, etc, thus it come out with 3 main line in development which all of them originated from the main point (main branch).

    I have main branch (contains shared features that all game types, and specific games must have), game-type branch (contains a logic code for each game type specifically), and specific game (contains a specific game logic code branching out from game-type branch but with different game content. Its code is shared with game-type branch already). Working with this approach for quite decent time now, I found myself spent too much time on updating game and game-type by merging from its parent commit (or branch). If shared features are changed, then you probably need those changes to go all around to all other branches -> That’s a huge work in updating!

    Nonetheless I would think it’s the best possible approach I would think of for this period of time. It suitable for medium to large team members to work on and share responsibility in updating all the branch up or down. But with only 2 members (which I intend it to be just like that ;), you may found it not practical for time lost.

    All in all, I’m happy with this set up so far, and quite good that I can shared collaborating effort and knowledge with my team mate.

    Keep coding, and release often.

    Have a nice day.