February 2016 Game Making Progress

In this February, I keep working on my next mini game. I tried to finish it before I went back to Indonesia but I failed. It turns out there are many things that need to be done or require my attentions before I go back to Indonesia. There are many people asked me to deliver some stuffs to their friends and family in Indonesia. It is a common task for people that have a chance to go back to Indonesia. I used to ask them to deliver some of my things too, and of course I am gladly willing to help them in return. Due to many requests, I have to carry more baggages and manage their packages.

I carry 5 luggages by myself (three pieces of excess baggages) in my journey to Indonesia. Preparing this luggages are quite cumbersome. Thankfully, my wife is an excellent ‘luggage packer’. She has an ability to neatly pack all the stuffs efficiently. She helps me greatly in packing the luggages. Also during this February, there are many events held in the embassy. Since I need to help them, my time for game making activity decreased significantly. The embassy also prepare a ‘farewell party’ for me.

I arrived on 24th of February in Jakarta, Indonesia. For the next two days, I was busy dealing with the administrative issues to get my old job back. Along with that, I also need to settle and prepare my room. I am now living with my brother’s family temporarily. My family still stay in Brazil until the end of July. I plan to find a house for us to live before all of them go back to Jakarta.

Practically, there are no significant progress during this month related to game making due to my relocation process from Brazil to Indonesia. The mini game’s progress is approximately 50 percent to completion. Once everything is settled, I will continue on working the game.

January 2016 Game Making Progress

At the start of this year, I manage to publish my first mini game, Swing Cordelia on Google Play Store and then on Apple App Store. I have achieved my goals to learn app publishing process on Android and iOS platform. In this year, I want to publish a mini game every 2-3 months and a mid-to-large-scale game every 6-12 months. I will talk about my first main game later on in another post. I will also make a post-publish report of my first mini game after 6 months of publishing.

Right after Swing Cordelia accepted by Apple App Store, I immediately started working on my second mini game. As of right now, I almost have finished the main menu design. The main character with its animation has roughly finished. I also need to continue working on other asset arts to be used in the main gameplay. I will start building the game following the original game design and make adjustments later if needed.

At the end of this month, I have to go back to Indonesia and start working again in March. I will have to adjust again with my old work ‘rhythm’ after living for almost three years in Brazil. I need to manage the time between my day-to-day job and this game making crafting. In Brazil, I did not make my game like a full-time job since I also need to take care my two kids. Hopefully, I can manage just fine continuing this game making activity along with my old job.


Swing Cordelia Approved by Apple App Store after 4 Days

After finishing the publishing process on Google Play Store, I started immediately to work on the iOS version of Swing Cordelia. I experimented a bit on the ad placement in the iOS version. In the android version, I ask nicely whether they want to view the interstitial ad or not while in the iOS version the ad will load automatically after certain game session. That’s pretty much the only adjustment I made in the iOS version. Other things such as game difficulty, features, gameplay, leaderboard, etc are pretty much the same with the android version.

The process to bake the iOS version on Xcode is pretty straightforward. My game engine for the moment only support up to Xcode 7.1 (I have installed two Xcode version in my macbook). I also use a code to point the project file on my game engine to Xcode 7.1. My game engine only support windows. Thus in the compiling process, the file need to be sent through network to the mac then Xcode will bake the .ipa file. Eventually I did not use iAds in the iOS version since they did not support Indonesia mobile market. Similar to the android version, I use Admob and mediate Mopub through the Admob network. After I launched my first app, many other advertisement network sent emails to me offering their services, but for now I will use only Admob and Mopub. I might experimented with other ads network in the future.

After testing the app using testflight and sandbox account, finally I got everything working out as it should be. The next step is to fill all of the Apple app requirements in iTunes Connect. These include app description, link of support page, rating, app preview (promotion video), etc. It took quite a while for me in producing the app preview video. Apple use this weird (landscape) resolutions for iPhone 6 and iPad which are 1334 x 750 and 1200 x 900. I need to read many forums in order to produce those two videos with each respected aspect ratio.

I rechecked every iOS app requirements meticulously before submitting the app for review. I thought after clicking the button my work will be finished, but… There are three more questions that I need to answer before finalizing the app submission. They are related to export compliance, advertising identifier (IDFA) and cryptography. Since this is the first time I submitted app to Apple, I was afraid making the wrong answers. It took me a whole day to find a reliable information related to the questions. The official explanations still seems cryptic to me and I rely more on other iOS developer experiences explained in many forums.

Feeling sure about myself, I take a deep breath and submit all the app requirements. I often hear that many apps have been rejected by Apple because of their strict requirements. If I got rejected, then I just have to submitted again. After all, this is a learning process for me as an iOS developer. What do you know, after waiting for 4 days my app is approved! I suppose this is the result of my hard work in preparing the app submission. There you go! Please check and try my arcade game: Swing Cordelia if you own any Apple mobile devices. Thank you!

Swing Cordelia is Officially Released on Google Play Store

After all the hard works, finally I am able to release my (first) mini game. It is called Swing Cordelia. In the beginning, my prototype used motion sensor for moving the character (Cordelia). The name swing is related to this, since you have to sort of swinging(moving) your phone to the left and right to move Cordelia. Cordelia is a dragonfly. The species is called Cordulia Aenea or Downy emerald. But I prefer to called the dragonfly ‘Cordelia’. Hence the game title name become ‘Swing Cordelia’. Along the production process, I drop the motion sensor control and choose to use swipe control instead. During testing, using motion control make the game too difficult to handle.


In this game you need to ‘delicately’ swipe your way to avoid obstacles (branches and beans). There are also winds (pushing Cordelia to the left or right) that is randomly generated following certain rule, making your way slightly more difficult. It is following a certain rule, since I am not allowing opposite wind to occur after one another. For example, if a wind goes to the right and after that to the left, the instantaneous change will surprise the player and make the game impossible to beat. Thus, after a wind goes to the right or to the left the next state will always be ‘no wind’. After a ‘no wind’ state a new wind to the left or right will be randomly generated. The beans will be thrown toward Cordelia from certain point with random speed. A proper strategy is to move Cordelia to a certain  ‘fake position’, creating a beans trajectory that can be easily avoided later on. If for example you put Cordelia in a space between the branch, the resulting beans trajectory will make it hard for you to get pass the branches.

Screenshots_2015-12-28-17-30-11  Screenshots_2015-12-28-17-35-19  Screenshots_2015-12-28-17-32-07

Another optional strategy is to use the ‘hover’ skill. You can hover Cordelia in certain spot to fool the ‘beans thrower’. While hovering, the branches stop moving, making it easy for you to choose the ‘fake position’. But the hovering skill is limited. After you use it, you have to wait a while until you can use it again. An indicator in the top-left board shows the hovering skill availability. Hovering skill ability is also useful, whenever you almost hit a branch, to re-position Cordelia. During my test play, most of the time I did not use hovering skill. If you are skilled in swiping, using hovering skill is optional. For beginner, I recommend to use it often.

The game is hard to master, but rewarding. I also put a nice music, to relax your mind and the fingers of course! I did not expect much from my first release. For me, this is just the beginning in my journey as an indie game developer. I will make more games and I hope one day one of you will stumble on one of them and receive the fun and love that I put into them. If you manage to read this post to the end, please download and try Swing Cordelia. Thank you.

December 2015 Game Making Progress

During the closed beta testing, I have spent quite a lot of time getting the in-app product to work properly in my game. The coding is quite complex (at first), and it took me almost a week to understand everything. To test the code you need to publish your app in alpha or beta stage within google developer console. Every time I finish fixing the code and upload the new version to the google play store server,  it took me several hours to download the new version into my testing device. It is understandable since the server serve millions of apps and it take some time for the server to readily distribute the (testing) app. After four revisions, finally I get the in-app product to work flawlessly. I also have test it my self by (fake) purchasing the ‘remove ads’ in-app product. You will get a notification during this testing stage that your ‘digital purchase’ will not be charged by Google Play Store.

I also have done the required (minimal) promotional assets for the store. These includes making promotional graphic arts, screenshots, writing short and long description, etc. After some light research, I also add a simple privacy policy of my app (which you can view within this website). I am still in the process of making a promotional video for the app. I will upload the video later to my YouTube channel before linking it to my app in Google Developer Console. Before submitting the app to the production stage, I remove the code for declaring the id number of my testing device, tweaks several graphic arts in my game and adding MoPub ads service within the AdMob ‘mediation’ service. Admob is owned by google, but I can embed other ads service to their console easily. I have submit the app to the production stage, and now still waiting for the general release. Right now, my brother manages to download the app, but there are others who are still unable to get their hands on it. If I am sure that everything has gone smoothly, I will make an official release statement in this website.


Publishing Progress on Google Play Store

After reading many references related to publishing an app to Google Play Store and App Store, I decide it to focus first on publishing my app to Google Play Store. Some people feel that publishing an app to App Store is relatively harder, although I haven’t had any direct experiences related to it. My main reason to focus on publishing my game to Android platform first, is  mainly related to the game engine. Building and testing an .apk file in my game engine is relatively easier compare to building and testing an .ipa file. Since my game engine can only be installed on PC, building an .ipa file require a Mac and Xcode application where I have to somehow ‘connect’ my PC and the Mac to ‘bake’ the file. I even read some user of the game engine that complain about testing an .ipa file, stating that they always failed to get it run on any Apple mobile devices. Long time ago, I actually try once to test whether my app can be run on an ipod touch and failed. I did not make any more efforts after that and I have always test my app on Android devices.

I will get to that complicated tasks later (to get my game publish on Apple platform), after I finish my first journey in publishing my game to Google Play Store. I have uploaded my .apk file to the beta section of my Google Developer Console set up. Up until today, I have managed to get Leaderboards feature and Admob Ads to work on my apps. I am now in a process to finish my code to add an in-apps product for ‘removing (all) ads’ in my game. After thorough testings with all intended features, all I need is to prepare the promotional assets before launching my game. I need to make some graphics assets required by Google Play Store (promotional background, screenshots, icons, etc.). Although a short video promotion is optional, I intend to make it to strengthen the app’s promotion materials.

I also have set my distribution plan for the app. I only sell (in-app product) to countries where Google is responsible for determining, charging, and remitting VAT to the appropriate authority plus Indonesia and United States. Since I am an Indonesian, I can hire a tax specialist (or do it myself) to process my tax obligation. I do not have detail information but you only have to pay taxes in United States after achieving a certain sales threshold. Since United States is an important market and I did not have high revenue target, I decide it to add the region to my distribution plan. It is actually quite a large list since European Union forced Google to take responsibility in dealing with the tax administration. Other countries are Albania, Morocco, Norway and South Korea.

I also want to find information related to ads revenue’s taxation. If it is more flexible where I can distribute my app to a wider audience I might only use ads in my future mini games without the option to ‘remove’ it. Along with this work, I still find some bugs here and there. I will play the game again and again and again until I’m quite sure that it is ‘safely playable’. It took quite a long time to learn many new things in this publishing process which I hope will be useful for my future games.  Wait for it, I will get ‘there’ somehow!

November 2015 Game Making Progress

Finally, my first mini game is roughly finished!

  • The gameplay design is set with all the balancing and tweaking. The first time I played the prototype it was a very difficult game (almost impossible to beat. LOL). Along the way, I try to reduce the difficulty by changing the parameters in the program and adjusting some features. Actually, it is still a hard game to beat but along the way you will learn and adjust your play style. After several tries, I finally get the hang of it. In order to beat the game, you need to ‘delicately’ master your ‘swipe’ sense of control. Relax your thumbs and you will soar!
  • I have tested the game on several of my friends. Some of them did not find it interesting enough but there is this one girl that keeps playing the game for more than half an hour until I said to her to quit the game. She said that she feel challenged to get a better score. I do not expect anything from this mini game. I just want to release it and see how it goes.
  • I have done all the sound effects, the main character dead animation, game over windows, option buttons to retry or quit the game, option setting to turn on/off sound effects and background music, crushing new bugs, etc.
  • I still need to make a different background music version for the main gameplay event, to add game over music background, to make program code of leaderboard and achievement features for Android and iOS devices, to incorporate interstitial ads into my game and to create an option to remove the ads for each related devices.
  • I plan to use AdMob for android target and iAd for iOS release. I do not have time to research other advertisement providers. For the time being, I just want to get experience of using those two ads providers.

That’s all for this month. Now, I need to get back to Ableton and my mini MIDI keyboard controller to create two fine musical pieces.

P.S: I haven’t touch the textbook draft until now. It is very likely that the book draft will not finish in time by the time I get back to Indonesia. I will re-plan this matter later.

Adding Features and Crushing Bugs

I have just realized that the state of my game now is actually a bit different from my early design plan. The main idea is still intact, but the overall design has gone through an ‘evolution’. After playing the prototype of the mini game over and over again, and changing the parameters numerous times, I felt the necessity to add some features and of course crushing the bugs.

I decide it to add some features into the game to make it ‘more challenging’. Before adding these feature I have already found some small bugs in the prototype but nothing major. I ignore the bugs temporarily since it did not disrupt the testing process. But, after I add the new features into the game it creates some problems. One of the features requires four days of coding. Well, actually it is a small program since it is only a mini games. But, it took me three days to solve the coding problem in order to ‘smooth’ the new feature. Also, by adding this new features I found some major bugs in the prototype. After understanding the bugs, I realized that it actually come from my lack of coding skill and experience. Now, I understand that by adding a feature, you need to somehow ‘synchronize’ it with other related codes. If you unforeseen the conflict of the new feature with other instances within the game, it will break the flow of the gameplay.

Some other features are relatively easy to code and as time goes by I feel more confident to do the ‘proper coding’. In the process, these features compete with each other. The superior features are the outcome from ‘survival of the fittest’ criteria. The shape of my new mini game has becoming much better.

Also, there is a small bug that come from the game engine. I try to find a solution in their forum but no one seems to care since it is treated as a ‘very minor’ bug. Although considered to be ‘minor’, it still annoys me very much. After a series of ‘trial and error’, I finally come up with my own coding solution. I do not know if it is the proper way to work around the bug, but I do not care as long as it works perfectly.

It seems my plan to publish the game at the end of this month is going to fail again. I am very sorry for those who are waiting. I want to make this first mini game as good as it can be. I will write a more detailed progress report at the end of this month. Stay tuned!


October 2015 Game Making Progress

Nothing much can be said during this month game making progress. I have finalised the opening menu design of the mini game. I am now focusing on the game play design of the game. I tried several input options from swiping, tilting and using in-game-touch controller. I finally come to a decision to use swiping since it is simple and intuitive. I know that  in-game-touch controller wouldn’t be appropriate to achieve the ‘simplicity’ philosophy design of the game, but I just want to see how the game would look like if I use it. I can confirm that it feels horrible, since the controller end up distracting the flow of the game play. I also work on perfecting the swipe sensitivity to a ‘normal’ feel. I don’t want the player to feel the swipe is too fast and sensitive or too slow and unresponsive.

I still haven’t got the ‘OK!’ sense concerning the overall gameplay. I am still in the process of adjusting the difficulty setting and the flow of everything. Not to mention I still need to add the ‘dead’ animation of my character, game over window and so on. I will add the necessary details after I feel confidence with the overall feel of the game play. I really hope to be able to publish the game at the end of this November. let’s work harder!

A Journey to (Game) Music Making

I remember one day when I was still in college, I am sitting next to my friend on a commuter train that goes to our university. He is a musician and a person that broaden my musical knowledge. I still remember when he asked me to listen to a particular record. “I know you will like it!”, he said. I was mesmerized by the song the first time I heard it and I still do whenever I listen to it. It was Pat Metheny’s ‘Last Train Home‘.

I said to him,”You know, I often have music in myself that is unique but I just don’t know how to write it into a musical piece.” He just laughed at me,”Really? It could just be your imagination. C’ mon!” I became quiet after that, and begin to doubt myself. How can a person like me without any musical training write music? For a long time, I forget about this ‘urge’ to unleashed the music within me. But all kind of tunes have always been playing inside my head from time to time, creating a unique music when I’m sad, happy, melancholy or fleeting in a moment.

I listen to all kind of music since I was a little kid. I still remember the tunes of Engelbert Humperdinck, Nat King Cole, Paul Anka, Daniel Sahuleka, Earth Wind and Fire, Benyamin Sueb, Bing Slamet, and others that were introduced by my parents. When I was in Junior High, I have a friend who introduce me to the Beatles, Queen and Elvis Presley. For me the best band in the world is Queen, and it still is until now.

But one day, I heard a music from the television that beat all others that I have listened before. Actually before, I didn’t understand this kind of music and always feeling sleepy whenever I listen to it. The music suddenly just struck my heart and I feel a new sensation poured into my deepest conscience. It was Beethoven (as stated in the TV)  but I didn’t know which piece. The next day, I asked my mother to buy me a couple of classical music recordings. Luckily on that day she also needs to go to a shop that is near to a music shop. As fate would have it, one of the two cassettes that my mother bought contain the music that has ‘awakened‘ something inside me the day before. It was Beethoven’s Symphony No. 6 ‘Pastoral‘. The other cassette contains Mozart’s Flute Concerto.

For me, the ‘cream of the crop’ of my musical preference are Beethoven and Tchaikovsky. For me nothing beats their music, and it still are up until now. Actually the music inside me started to sprawl and to grow after I listen to an extensive classical music recording libraries. I also listen to Handel, Bach, Vivaldi, Pachelbel, Haydn, Schubert, Schumann, Brahms, Listz, Chopin, Rachmaninov, Puccini, Wagner, Rimsky-Korsakov, Glinka, Ravel, Berlioz, Debussy, Saint-Saëns, and many others. Since I also listen to blues, jazz, swing, soul to pop, rock, dance and techno, the range of the ‘music’ inside of me are actually quite diverse.

Since now I know how to make music using the aid of modern software and technology, I am very happy. I am still learning to make a more complex composition. Most of the time my song composition only uses 2 or 3 tracks. Up until know I have produced many short pieces for my game music. The one down there (previous post) called ‘Melancholy‘ is one of them. I plan to release all my future game music in this website for you to freely listen to it. I hope you will like it!

P.S. The musician friend in the story above now support and believe in my (amateurish) musical capability. I hope I can make him proud!