The ServerI started with the Server side first, because this is the area I’m most comfortable with. I decided to use Google App Engine as the server platform. This is a cloud service which takes care of all the gory technical details of setting up a server environment such as installation, operation, high availability, scalability, etc. All we need to do is develop the logic. For that, GAE support 3 different languages: Python, Java, & Go. I definitely chose Java, as it is my native language (I was born, raised and live in the island of Java).
The best part of GAE is that it is free for low traffic. This means that you can develop the server app without paying a dime to Google. In fact, you can deploy it for production use and still not paying anything as long as the traffic is still below certain limit. Just pay as you grow.
The ClientLucky for me, Android app development is also based on Java. Thus learning the Software Development Kit (SDK) is not the most difficult part for me. The difficult part is designing the GUI. I’m not at all experienced in designed a software with GUI. Whereas in server development you usually deal with performance, memory efficiency, scalability and the likes, here you need to put more emphasis on intuitiveness and handling for unpredicted user behavior.
Another challenge is the fact that Android devices comes in various sized from tiny handset to wide screen tablets. Android SDK provides the framework to work with multiple screen sizes, but the developer still needs to spend some effort ensure that the GUI looks good in all screen sizes. For my particular game, I ended up with two different layouts: one for small to medium screen and another for larger screens.Even for simple game that does not rely on graphics, designing a visually pleasing GUI can still be time consuming. I rely on beautiful and free icons from http://icons.mysitemyway.com/ to help spice up the app. Even then, I still need to spend a significant part of development time Photoshopping (I used GIMP actually).
Thus, I decided to look for an alternative. For English, I found English Open Word List (EOWL) which is compiled by Ken Loge (http://dreamsteep.com/projects/the-english-open-word-list.html) for the exact purpose of providing free alternative word list for word games or spell checkers. It’s not perfect – many valid words such as plural forms, past forms are missing. But it’s the best option there is.With Bahasa Indonesia, things got a bit more difficult. I couldn’t find a single comprehensive word list. I had to resort to Wiktionary (http://id.wiktionary.org). It’s quite comprehensive although still far from complete. The problem is it doesn’t provide the word list in an easily downloadable format. I had to write a script to crawl the site to extract the word list.
Publishing the AppAfter everything is ready, it’s time to publish the App via Google Play. Registering is almost as easy as it gets. You need to pay 25 USD to Google to get yourself registered as Developer. I’m not 100% sure, but I think it’s a one-time payment and you don’t need to pay more for uploading more apps. Definitely cheaper from registering an app to Apple’s iTune (which costs 100 USD, CMIIMW ). Google also does not require any certification process for your app. This means your app is ready to be downloaded almost immediately (read: few hours).
So it goes, after 2 months of part time development (I still need to do my day job, which pays the bill) and several liters of lattes, “Words against the World” is finally available for download.