Tuesday, January 28, 2014

Android indie developer interview: William Jamieson

Welcome to another interview from the series. Today, I'm going to ask William Jamieson from Supreme apps about his Android experiences and tools that he uses. He has achieved quite a lot with his 5 apps, bearing in mind that he is still a student. His new creation Yik Yak is apparently quite popular and hopefully will get even more downloads in the near future. Enjoy your read.



Bartek: Tell us something about yourself. Who are you? Where do you live? What do you do in life?

William: A sophomore at the College of Charleston. I live in Charleston SC. I play tennis daily, go to class then code.

Bartek: When did your Android adventure start and how? Why did you decide to do it?

William: This past summer when I developed Front Flash to allow people to take selfies in the dark. I did it because I wanted to take snapchats in the dark and there was no app that allowed me to do it.

Bartek: How did you learn how to create apps?

William: I knew how to code from classes at school and I taught myself the android SDK from reading online documentations as well as stackoverflow.

Bartek: What libraries/frameworks do you use?

William: I use no frameworks or libraries I write everything on my own to learn as much as I can.

Bartek: Where do you take app/game ideas from? How do you know if they have a chance to be successful?

William: I come up with the ideas for my apps by identifying something that I want that doesn't exist. Then I make it figuring if I want it then someone else would want it as well. So far the strategy has worked and all 5 of my apps have been successful.

Bartek: Where do you get resources from (graphics, sounds, music)?

William: I outsource all of my graphic design.

Bartek: Where?

William: I outsource my graphic design through fiverr. I heard about them through an internet forum.

Bartek: What's your experience with fiverr designers?

William: I love fiverr and have had great results with it. I pay only $5 for an item and if I don't like the end result I just hire someone else and worse case scenario I only lose a few bucks here and there.

Bartek: What other programming tools do you use?

William: I use git, Dropbox, as well as Google Analytics.

Bartek: How do you use Google Analytics in your apps?

William: I use analytics to monitor the apps growth across geographic regions as well as to see what time of the day the app is most frequently used.

Bartek: How long does is take you to make a single app?

William: My first app took around 1 week because I was learning so much as I was developing it. The next three only took around 2 days each and then my most recent one Yik Yak took a week because it was very complex.

Bartek: How much are you making on your apps?

William: I don't want to answer this, but more than I ever thought I would.

Bartek: How do you monetize your apps? What ad networks do you use if any? Do you have any advice on it for others?

William: My main source of revenue is AdMob banner ads followed by Widdit. My most recent app incorporates in app purchases as its only form of monetization, I am interested in seeing how this works.

Bartek: Why did you choose Widdit?

William: I chose Widdit because the app I use it on is an extension to facebooks app so my app is never seen at all. It was the only way I would be able to monitize my app.

Bartek: Which ones of your apps were the biggest success and which ones were below expectations? Why?

William: Yik Yak and Facebook Photo Downloader where my biggest success. PhoneSpy was below expectations. Yik Yak was a sucess because it was a new type of social networking app that people really enjoy and Facebook Photo Downloader was a success because it was the first app that allowed you to save FB photos without leaving the app, until FB added the feature in their app. 

Bartek: Do you use any marketing techniques or ASO to promote your apps?

William: No, no techniques I just submit my apps to review sites and they typically get reviewed by a few and then the momentum from that just carries the app.

Bartek: What sites do you submit your apps to?

William: I have had sucess on AndroidTappMashable and AddictiveTips.

Bartek: What are your favourite Android games/apps?

William: Fun Run is my favorite game.

Bartek: What Android devices do you own?

William: Galaxy S3 and Note 10.1.

Bartek: What Android blogs/sites do you read regularly?

William: None.

Bartek: What are your plans for the future? What do you want to create/achieve?

William: My current focus is expanding on Yik Yak as much as possible because it has gained 30k users in the last week and I think it has a lot of potential.

Bartek: What advice would you give to other developers (something that you wish you had known before yourself)?

William: Look for features in major apps that you would like to see added in the future then add the feature on your own.

Bartek: Where can people find you on the Internet?




What is to come on the blog in the near future? More interviews, new tools' descriptions and probably an income report, as soon as my Blobby Volley stabilizes in downloads and I manage to remove "Beta" from its name. Come back if you want to know the details.

Monday, January 20, 2014

Android indie developer interview: Mateusz Cicheński


After the long Christmas break, it's time to come back to my interview series. Today's guest is a PhD student at my university and he has just released a brand new Android game written in... C#. He's going to tell us how he did it, what technologies he used and why he chose them. I have to say that I had never heard about most of those tools before talking to him. I'm pretty sure that they will be surprising to you as well. Without further ado, here's what our q&a session looked like.


Bartek: Tell us something about yourself. Who are you? Where do you live? What do you do in life?

Mateusz: Hi, my name is Mateusz Cicheński and I'm from Poland. I'm currently doing my PhD at Poznan University of Technology and so I'm living in this city. Designing games is one of my hobbies and as most designers I have tons of ideas and just not enough time to implement them all.

Bartek: When did your Android adventure start and how? Why did you decide to do it?

Mateusz: It's the second question and I already have to give you a long story. I started last year, bringing an implementation of my prototype game from WPF (C#/XAML) to the native Android API. I used Open GL ES for rendering, but I was unhappy with the result. I decided that I need a different approach and reach more platforms with a single code base - I picked libgdx for this purpose and quickly made a new implementation which was available for PCs, Linux and of course Android. This app was available for nearly 3 months and because I was doing different things I just decided to take it down, as I was unhappy with the download rates. Now I'm giving Android yet another chance using a different toolset - MonoGame and Xamarin.Android - but I still need more time to learn the platform.

Bartek: What was your first app? Could you describe it shortly?

Mateusz: I think that my first fully finished game was an implementation of NotChess (http://homepages.di.fc.ul.pt/~jpn/gv/notchess.htm) made as a project for one of the courses at the university. It's basically a board game with only rooks and knigts, however the rooks can only move by one field. Also, after moving a given piece it will change to the other one (the rook will turn into a knight and the knight will turn into a rook). Obviously your task is to eliminate the pieces of your opponent from the board. You can see what it looked like on this page: http://warsztat.gd/projects/notchessthegame

Bartek: Why didn't you just leave the app on Google Play and decided to take it down instead?

Mateusz: Here is my reasoning: the app I made for Windows Phone 8 was made totally from scratch and I didn't reuse the code from the Android port or the initial prototype written in C#/XAML. What does it mean? First, I included a lot more features in the Windows Phone 8 app - among others - Azure high scores, Skydrive integration, MS Live authentication, support for proximity devices (e.g. NFC tags, tap&share levels), and even the gameplay evolved. This meant that the Android version was missing all those functionalities even though it had the same name for the app. But that's not everything - the actual visuals were also updated and I really enjoyed the much cleaner style I was able to make using the Windows Phone SDK when compared to the Open GL version from Android. Have you ever seen a game made by the same developer on two different platforms that looked totally different? And lastly - the code for WP8 was written in C#, while the Android version was written in Java - if I wanted to support both versions simultaneously I would need to update both code bases every time, which is not ideal. That's why I decided to look for a different solution that will let me reuse most of the code in C# and that's how I came across MonoGame. Also, the game wasn't very popular on Android, not even reaching 100 downloads, so I thought that I should avoid confusing users, who might have both a WP8 device and an Android device (phone + tablet for instance) and download the game on both machines. Taking all of that into account I decided to go for the Windows Phone with this game and take the Android version down.

Bartek: How did you learn how to create apps? What resources were you using?

Mateusz: I have a pretty solid programming skills background from the lectures at the university and for the last year I've been developing apps for Windows Phone 8 using technologies I was familiar with (C#/XAML). Mainly as a reference I'm using documentation and channel9.msdn.com for those projects. If we talk about Android, I'm currently using the official developer guides and also documentation from Xamarin.Android, but nothing in particular.

Bartek: What libraries/frameworks do you use? Why did you choose them?

Infinite Snake
Mateusz: Currently I'm using MonoGame (open source implementation of XNA 4.x) and Xamarin.Android to run my games on Android. So far I've made one game using this combo (Infinite Snake) and even though I'm not 100% happy with the result, I'm quite satisfied with the simplicity it took me to make that game using these tools. There are still things I need to reconsider and pay more attention to, like the app lifecycle, which is totally different when compared to Windows Phone (and I believe iOS as well) and actually makes it a little bit harder to keep everything user friendly and smooth. I do hope that with more and more projects done I will just keep getting better.

Bartek: What are your thoughts on Xamarin.Android? Would you recommend it to other developers? What are its main advantages/disadvantages compared to libgdx?

Mateusz: Xamarin.Android is just used as a tool in the pipeline to generate an Android version of the project. The question should be about the comparison between libgdx and MonoGame - the latter one being just an implementation of XNA 4.x. This basically means that if you are familiar with XNA (or even have an existing project that you would like to port), then you don't have to learn it all over again. A prime example would be the game Bastion by Supergiant Games, which was ported to the other platforms using MonoGame as it was written originally in XNA. You still probably will find some differences, but mainly you shouldn't feel lost. I cannot tell you much about it as I just started using it, but it seems to be a pretty solid option to use. From my point of view it was more natural to use it - C# vs Java - but probably you can achieve the same results. Also, it is very easy to start with some 2D games in XNA/MonoGame, which wasn't the case when I used libgdx (so I went straight for Open GL there), but that's my subjective opinion.

Bartek: Where do you take app/game ideas from? How do you know if they have a chance to be successful?

Mateusz: I steal them. No. I don't! :P
Basically, the ideas come to my mind in different situations. It's like when you see a movie or listen to a song and you think "hey, that's cool, I could use it in my game". From time to time you just figure out something that might be cool without any particular "direct" motivation, but it's always based on what you've experienced yourself. However, it's not just making yet another Candy Crush Saga clone - you extend the idea, exploit its strengths or try to balance it out to be more enjoyable. Every now and then you innovate, think about things nobody has imagined - and then you become a millionaire selling your brilliant game or you just live your life unaware that your idea was worth all that money.
For me it's a hobby and whenever I think about something that I believe might be fun, I try to implement a prototype. To make a final game you just have to take the right prototypes and merge them together so they make sense. However, I can't tell you if those prototype ideas will be successful. I think that this will be verified by the players who picked your game - if there are not many, then either the idea was not that good or you should think about improving the way in which you present the game content and talk to the players - if they can't understand what they have to do, then they won't play the game. Which doesn't mean that you have to forget about your super crazy idea for a RPG dungeon puzzle rogue like a platform game controlled with just one tap - but it's much harder to make the player understand his actions in such mixed genres when compared to games that are good at one thing, e.g. puzzle or platforming, so you have to spend more time to think about your design. At least in theory. ;)

Bartek: Where do you get resources from?

Mateusz: I've been making soundless games so far, but if I put some sound effects or music, I will record them myself, because I have some basic skills playing the piano and the guitar. If I manage to think about bigger production, then probably there will be a person responsible for that part.
I also make graphic assets myself - they are not very complex and don't require much skill. Most of my games use squares or circles as the representation of the game state, so I guess almost anyone could provide me with some graphic assets with enough quality. This doesn't mean that I wouldn't like to improve, but for prototyping purposes I believe that I don't need anything looking great. (which I won't recommend to anyone - that's probably why my first Android game had almost no downloads - you have to appeal to potential player so he will actually download your game!)

Bartek: What other programming tools do you use?

Mateusz: I'm using Team Foundation Server, which is a versioning system from Microsoft. However, depending on the project I've been switching to git or SVN. For my graphics I'm using Adobe Illustrator (an overkill, I know) and for music I would be using Cubase which I got with my external sound interface. For programming I'm using Visual Studio 2013 and Resharper, plus obviously Xamarin.Android and it's Xamarin Studio.

Bartek: How long does is take you to make a single app?

Mateusz: It depends on how complex the game is and how much time I can spend on developing it each week. Infinite Snake, for instance, was started at the beginning of this year and after three days I had the first version on Google Play available to download. However, it's just a classic snake, so I didn't even spend time on designing the gameplay. My other projects take me from 4 to 8 weeks to accomplish, however I'm publishing them only if I'm satisfied enough with the result. :)

Bartek: How much are you making on your apps?

Mateusz: From Android - nothing. I still haven't got enough time to figure out how to configure some ad providers in the framework I'm using and I decided to use my time to make a useful app rather then "useless, but with ads" if you know what I mean. My Windows Phone projects are not bringing much revenue either - I do support it with ads, but because of the low volume of distribution I get around 4 PLN (~$1.25) per month from them. However I'm taking part in Nokia DVLUP campaign, because they offer some great rewards just for being with them and creating apps for Windows Phone.

Bartek: Can you say some more about the Nokia DVLUP campaing? What is it exactly?

Mateusz: Nokia DVLUP is a reward system which tries to help developers become more successful. How? They give you a lot of challenges that you can complete for which you get XP points and the same amount of PTS (just points ;) ). The XP is used to show how long you have been with the program and how many challenges you completed. However, the PTS is used to get rewards - from coupons to popular shops, through accessories for your mobile device, to such great rewards as XBox One or Lumia 1520. You don't have to pay anything to be a member of the program, and if you make apps for WP8 and they meet the requirements for the challenges - you can benefit from it. Obviously you cannot just publish million apps without any functionality, but on the other hand they post updates about different APIs and tutorials to help developers create better apps. You can also choose as a reward a consultation about your app to improve it and bring even more users, or you can use the points to promote your app with ad campaigns. In other words - a lot of great stuff! :)

Bartek: Where do you find hackathons/contests to take part in?

Mateusz: The InternAppHack was actually organized during my internship at MS and it was just a great opportunity to jump into mobile development for Windows Phone. However, the rules were a little bit different from what you can find in most hackatons, as you had about 1 month to create your app. They provided additional lectures on WP8, Azure and SkyDrive and so the whole event was really interesting. As you can see the longer period to submit a project to the competition let me create a better user experience and improve the game a lot, so I try to avoid time-restricted hackatons in which you have 1 or 2 days to create "something". Quality over speed and quantity. I prefer to spend time polishing the idea rather than fast-coding the game.

Bartek: How do you monetize your apps? What ad networks do you use if any? Do you have any advice on it for others?

Mateusz: I'm using Microsoft Advertising for Windows Phone and used to employ AdMob for Android. Haven't looked into the market much so I can't tell you if these are the best available ones.

Bartek: Which ones of your apps were the biggest success and which ones were below expectations? Why?

Mateusz: So far the biggest success was Squared for Windows Phone, which was awarded 3rd place in a hackaton amongst 48 other submissions. I'm still waiting for Android success and I'm currently working on some ideas that I hope will be interesting. For the apps that are below expectations I think it would be Squared again - it was the game I firstly made on Android, but didn't get much attention and I was unhappy with the visual part of it, so I decided to take it down. Implementing it for Windows Phone was just an opportunity which turned out so well that I decided to make some more projects for that platform. Now I'm trying to figure out a way of developing for both platforms at the same time - fingers crossed for the results - but it's pretty hard without marketing yourself.

Bartek: Do you use any marketing techniques or ASO to promote your apps?

Mateusz: Not really. I just send them to my friends (using Facebook, forums, e-mails etc.) and try to keep project updates on warsztat.gd. They are purely for fun and to learn new things - maybe someday it will be my way of living, but first I want to finish my PhD. :)

Bartek: What are your favourite Android games/apps?

Mateusz: I don't use Android on a day to day basis. I used to have HTC Desire with Android 2.2 (which was pretty unlucky, because full Open GL ES support started from Android 2.3 and I really didn't want to write low level things during my development), but now I have Lumia 920. This honestly doesn't change much, because I'm using my phone for what it was designed for - calls and messaging. If I play some games they are just random things found in the app stores, but I just don't have enough time to enjoy myself playing on a mobile device - I prefer playing games on PC if I can choose.

Bartek: What Android devices do you own?

Mateusz: Currently none. I used to have HTC Desire and for development I'm borrowing my moms' Sony Xperia J. And of course I have the emulator! ;)

Bartek: What Android blogs/sites do you read regularly?

Mateusz: None, but I don't read much about other platforms either, so I guess I'm not favouring any of them.

Bartek: What are your plans for the future? What do you want to create/achieve?

Mateusz: First I want to finish my PhD. After that we will see what future holds. This classic job interview question I will always fail to answer: "What will you be doing in 5 years?". ;)

Bartek: What advice would you give to other developers (something that you wish you had known before yourself)?

Mateusz: Never ever assume that documentation is right and emulator is perfect - test everything yourself on the real device, as it is surprising how they are different from emulators. And in general, it's always better to test things in real life, because then you know for sure and you can avoid unnecessary complications. Which is not that easy with so many Android devices... And actually one of the bugs I found in Infinite Snake was not occuring to me - I had to debug it remotely with my friend over phone describing what happens on his screen... terrible! But the more you know the better you can prepare for next time.

Bartek: Where can people find you on the Internet?

Mateusz: I mostly use these channels:
Facebook: https://www.facebook.com/mateusz.cichenski
YouTube: http://www.youtube.com/user/hrkm1
Soundcloud: https://soundcloud.com/hrkm
Google Play: https://play.google.com/store/apps/developer?id=Mateusz+Ciche%C5%84ski
Windows Phone Store: http://www.windowsphone.com/pl-PL/store/publishers?publisherId=Mateusz%2BCiche%25c5%2584ski



I hope you liked the interview and some fresh views on Android and Windows Phone programming. Perhaps it will encourage you to look into other platforms as well (if you aren't already publishing for them). I'm thinking about porting my Blobby Volley to work on other devices as well. It's getting more and more downloads every day, so maybe Apple and Microsoft fans should be given a chance to play it as well. For now, there are still a lot of bugs to fix, but almost 2,000 new users every day make me believe that my work is actually worth it. More stats will be published in one of the next posts. Stay tuned and come back for another piece of content in about a week.

Monday, January 13, 2014

Programming Mobile Applications for Android Handheld Systems on Coursera

I just wanted to let you know that there's another Android course on Coursera called
Programming Mobile Applications for Android Handheld Systems. It's targeted at more advanced students than the one I wrote about previously: Creative, Serious and Playful Science of Android Apps. It requires the knowledge of Java and optionally also some background in mobile development. The course is totally free, starts on January 21st and lasts for 8 weeks. It will cover subjects such as: the Android development environment, application fundamentals and lifecycle, permissions, fragments, intents, user interface, notifications, broadcast receivers, AsyncTasks, networking, graphics & animation, multitouch, gestures, multimedia, sensors, maps, data management and content providers. As you can see, there's quite a lot of material, so make sure you have 3-6 hours a week to spare. You can also follow the course at your own pace and skip the tests and assignments, but this way you'll not get a certificate at the end. Anyway, I encourage you to give it a try. Coursera courses are of very high quality and I expect this one to be great as well. Watch the video below for more details or just go to the official site, read more and sign up!


As to my Blobby Volley game, it has 5,114/13,382 current/total installs and it gets downloaded by more than 1,600 users every day. It's definitely my biggest success so far and I can't wait to learn what's going to happen with it in the near future. It has made me a little over $30 so far, but this amount is increasing fast and I'm sure it's going to grow even more. I've just published new bugfixes, and I implemented Ad Network Mediation to work with Airpush, Leadbolt and AdMob interstitials. I wanted to include AdBuddiz as well, but their API turned out to be somewhat difficult to integrate with the mediation API. I've already spoken to to one of their staff and they assured me that they would fix this in the new version. As there are no official mediation adapters for any of the networks I used, I had to write my own. There's almost no information about it on the Internet, so I'll try to describe it in detail in one of the next posts.

What else can you expect to appear on the blog in the near future? I'm planning to publish some more interviews, financial reports from Blobby Volley and my other apps, including CPMs from various ad networks and a new series of articles describing or comparing various development tools. Stay tuned and may the year 2014 be awesome for you!

Tuesday, December 31, 2013

Blobby Volley for Android: Postmortem

It's been two weeks since I released my first full fledged Android game: Blobby Volley. Now it's time to reflect on the creation process and learn from it. I'm very satisfied with the results, but my next game can always be better. Perhaps you can learn something from it as well.

It took me 129 work hours during 8 weeks to implement the game. On average, I worked for 16.125h/week. That's not too bad, bearing in mind the initial assumption that I would commit between 10 and 20 hours a week. I could have probably been more efficient, because I didn't have a full time job at this time, but this amount proved good enough to keep me motivated without making me tired. Also, those 129h don't include reading AndEngine for Game Development Cookbook (I'm still only half way through it) or thinking about design problems (e.g. what the menu should look like, how to implement the AI, etc.).
With my next project, I'd like to stick to some schedule, istead of fitting the work hours whenever I have a free moment. Waking up and starting earlier might help as well. I really enjoy working in the morning and it's usually my most productive time, but getting up after a long evening with friends or a tiring football match is not always easy. I'll have to work on it.

What you're probably the most interested in is how good the game is doing on Google Play and AdMob (note that the data is from two days ago because of the statistics delay on those sites). It has 1266/3044 current/total istalls, which is definitely my best result when it comes to the daily growth. It increased by 178 compared to the previous day.  I already made $10.22 on ads: $4.90 and $5.32 on banners and interstitials respectively. The CPMs are $0.50 and $0.56, which is not too high, but I noticed that they're rising as well, so perhaps the Google's algorithm needs some time to adjust. I want to try AdBuddiz in the near future, because I like their ad style and they promise high CPMs. I'll report on that later.

As to the tools and resources that I used, I'd like to mention every single one with a short description:

AndEngine - an Android engine for 2D OpenGL games. It works really fast and is easy to learn (I didn't know it when I started making the game and I managed to learn it in the process). The bad thing is that it lacks an official documentation. However good the code examples might be, they will never replace a detailed description of how the code should be structured. There aren't even decent JavaDocs. I was forced to read online tutorials, but sometimes they weren't enough or were simply outdated. Finally, I got the AndEngine for Game Development Cookbook, but I kept wondering why they didn't publish it for free as the official specification. As a result of bad instructions, you get errors such as NullPointerExceptions when unpausing the game, which could easily be prevented if you had known the solution beforehand. Don't get me wrong, AndEngine is still a great tool to use. Just bear in mind that it has drawbacks as well.
I might try libgdx with my new project, just to be able to compare the two of them and perhaps release for iOS as well. As for now, I don't have any Apple devices and I'm not ready to pay $100 to be able to publish on Apple Store.

AndEnginePhysicsBox2DExtension - an AndEngine extension letting you simulate a physical world with colliding bodies and joints. It's very useful when you want to have some physical behavior in your game and you don't want to code it yourself. Just apply velocities and forces and everything will work magically... unless you want to create something less standard, like my blob/ball collisions which always make the ball bounce with constant velocity. However, by committing some more time to it, you can do it as well.
It was weird for me that Box2D uses the body's center as its position while AndEngine requires coordinates of the top left corner of a sprite. I'm not sure if I was doing something wrong or if it was supposed to work this way, but it was confusing at times.

AndEngineTexturePackerExtension - an AndEngine extension letting you easily load textures created with TexturePacker described below.

AndEngineDebugDrawExtension - an AndEngine extension letting you draw physical bodies to make sure that they are in the right place. It's a must for anyone using Box2D. Otherwise you never know where your bodies really are and debugging physics becomes a nightmare. Too bad that this extension doesn't support changing the value of the meters to pixel ratio. If you want to use it, you have to keep it at 32 and adjust other parameters (like gravity) to obtain a desirable result.

TexturePacker - a great tool letting you pack your sprites together so that they can be loaded faster. It can also reduce the images' size and significantly simplify the resource loading process by generating the necessary code for you. Its only drawback is the price, which is $40, but I'd still say that it's totally worth it. If you'd rather not pay for it, you can still use the free version. It's somewhat limited, but it has most of the basic functionality and it'll save you plenty of time. If you're a blogger, you can get the license for free (that's what I did). Go to my previous post for instructions.

PhysicsEditor - a tool created by the same company as TexturePacker. It helps you assign physical bodies to sprites, when you use the Box2D extension. I lost so much time trying to do those things by hand that I can't even say how helpful it turned out to be. Unfortunately it still has lots of bugs. I reported 7 of them, but I never got any answer. They make your work somewhat less pleasant, but they are relatively minor and constructing physics bodies in the code is definitely not an option. PhysicsEditor costs $20 and there is no free version (only a 7-day trial). You can buy it together with TexturePacker for $50, getting $10 off the total price. Again, you can get it for free, provided that you have a software related blog. See the video below for a nice example.


Rafał Dorsz - he made almost all the graphics for me (except the icon and the logo). He did a great job and was always on time. He worked for free, because he owed me a favor (I wrote a Python program for him some time ago), so next time I guess I'll have to pay him or find some other way to get the graphic resources. I'll be happy to go with the first option, but I want to be sure that I can at least make the same money on the game.

Photoshop - I used it to make the icon, the logo, and prepare other graphic resources before Rafał made me the final versions. It's a great tool, although a bit costly. Use GIMP instead if you want to save money. I installed Export to Android Photoshop Script to make scaling images for various densities easier.

Crittercism - a mobile apps error monitoring tool. It sends information about all uncaught exceptions that happen in your game. At first I thought that it wouldn't be very useful, because Google Play offers a similar service without any changes to your code, but I'm happy I changed my mind (thank you Marcin). I was able to track several bugs this way, while my Google Play console only noticed one of them. Not to mention that it helped me a lot during the testing process. It only requires one line of code to add. You should try it as well if you haven't done it yet. I will definitely add it to all my apps in the near future.
There are other similar tools that you might want to see: Bugsense and ACRA are the most popular. I chose Crittercism, because I was the most familiar with it, although I had a chance to work with others for a short period of time as well. I might write a longer post about it soon.

What went well


As I said, I'm quite happy with the game. I managed to keep up with my schedule and I finished the basic functionality before Christmas, which I believe earned me a lot of installs. AndEngine wasn't that hard to learn, even without any documentation and it turned out rather pleasant to work with. The biggest achievement though were my graphic resources, which I never expected to turn out so well. At first I wanted to do everything by myself, but this way the whole game would look much, much worse. Thanks to Rafał it became the prettiest Blobby Volley clone on Google Play. Next time I decide to create a game, I'll definitely use his services again or hire another designer. I think that a good design can get you a lot of users, while a bad one will make them reject your game, even if  it's fun to play.

What could have been done better


Some people wrote to me that it was unwise to publish the game and then forget about it for three weeks. I wasn't going to abandon it totally, but I knew that I would have hardly any time to work on it. In fact, even a worse thing happened. I forgot to upload the keystore before I left for my Christmas break. I found out about it when I was ready to publish my first bug fixes. I couldn't sign the apk file with the same certificate, because I didn't have it, so Google Play didn't let me upload it. All the changes will have to wait until I come back hope in nine days...
Still, I don't regret publishing the game so early. Plenty of people downloaded and liked it. I explicitly wrote in the title that it's a beta version, so occasional crashes shouldn't be a problem. The only bad reviews that I got were due to difficulties in controlling the blob. Some of my friends didn't even notice that they can change the controller type in the menu. Perhaps it should be more clear.
I'm aware that the game doesn't offer too many options, but I'm planning new extensions when I regain access to my computer. People say that the other version is still better. I'd say it's just different. My AI is quite good, my GUI is prettier, I don't have functionality that doesn't work (like achievements in the other game). I'm planning to slowly add new features and I hope to surprise my users in a positive way soon.

Conclusions


I really like making games and I'll definitely try to create another one if my Blobby Volley exceeds the level of $100 a month in earnings. Otherwise, I'm afraid I'll have to focus on things that bring me more than $1 for an hour of my work. Judging by the growth rate though, I have a big chance to succeed and break the threshold amount. I have no idea what my next project will be. I want to focus on fixing the bugs first and making sure I can leave it be without supervision. After that I'll start hunting for another oportunity. Wish me luck and go play my game, if you haven't seen it yet!

Sunday, December 22, 2013

Mobile appreneur interview: Thomas Strock

Thank you for waiting longer than usual for this interview. I flew home for Christmas and I'm spending my time catching up with family and friends. Nonetheless, I'm pretty sure you're going to like my today's guest. Thomas Strock is still in high school, but already makes more than $3000/month. What is more, he does that without extensive coding experience or technical skills. Sounds impossible? Find out yourself.



Bartek: Tell us something about yourself. Who are you? Where do you live? What do you do in life?

Thomas: I’m a high school senior from Pennsylvania, but more importantly I’m an entrepreneur. At the moment, my main businesses are Kindle publishing and iPhone app development.

Bartek: When did your app development adventure start and how? Why did you decide to do it?

Thomas: Going back to when I was twelve I wrote a children’s book called Tomato Turtle: A Trip to the Park. It ended up getting picked up by a national publisher and I started learning how to market it, as a lot of that is left up to the author to do. From there I eventually found Pat Flynn from Smart Passive Income and started getting into online business. I started off with niche AdSense sites and eventually transitioned into Kindle publishing and iPhone apps.

Bartek: How did you learn how to create apps?

Thomas: I don’t actually code or design the apps myself. I considered teaching myself to code at one point but decided the best decision for me was to outsource. Here’s the post I wrote about why I made that decision: http://onlineincometycoon.com/should-you-code-apps-yourself-or-outsource/

Bartek: Where do you look for developers and how much do you pay them? Could you shortly describe the process of finding someone to code an app for you and then having it done by them? Have you had some bad experiences with freelancers before?

Thomas: I find my developers with freelancing sites like Elance. I pay on a per-project basis and how much I pay all depends on how complicated the app I’m building is, where the developer’s located, and how experienced the developer is. Typically for the smaller, more content-based apps I’m making it costs around $200-500 per app.
I’ve had my fair share of dud developers who lead you on and then eventually deliver nothing. However, I’ve learned over time how to filter out most of those developers in the vetting process with hiring them. Also, I always use Escrow with Elance and never pay for milestones, only at the very end of the project once the app has been approved by Apple.

Bartek: Have you tried other freelancing portals than Elance?

Thomas: I have only used Elance so far, as that's what I got started with and am comfortable with. Plus I've built up enough previous business there where it makes more reputable developers see I'm legit.

Bartek: I know you produce both Android and iPhone apps. Which type is working for you better?

Thomas: I’m making more money with iPhone apps at the moment. However, it’s not a fair comparison because I have concentrated a lot more of my time and money towards iPhone and have only dabbled in Android.

Bartek: Where do you take app/game ideas from? How do you know if they have a chance to be successful?

Thomas: I publish content-based apps so my process for finding profitable app topics might be different from someone who is developing games or other more interactive apps. Basically my process involves picking a category, studying apps in the top 100-200 of that category, researching topics based on those top-performing apps to see if the majority of apps on that topic are successful, then finding a way to make a similar app that improves upon the current ones available.
You never know for sure whether or not an app will be successful or not until you publish it. For that reason, I prefer to publish many smaller, less expensive apps rather than just a few really large projects. That way I’m more diversified and not relying on one or two apps for the majority of my income.

Bartek: How long does is take you to make a single app?

Thomas: Outsource to multiple developers, I can be “working” on multiple apps at one time and get them created and published much faster than I could do myself. Obviously the time for one app depends on the complexity, but typically for my smaller, content-based apps it’s anywhere from 2-10 days depending on the app and developer I’m using.

Bartek: How much time a week do you spend working on your business: ebooks, apps, etc. I know you're a student, so school probably takes a big chunk of your time.

Thomas: Yeah, school takes up a large chunk of my time, though I do manage to “multitask” and get some small stuff done during the school day. Every day’s different, however I probably spend at least 5 hours a day doing business-related stuff, whether that’s reading blog posts, working on apps/ebooks, or responding to comments on my blog.

Bartek: Where did you get money to start all this? How did you fund your first apps, ebooks?

Thomas: One of the great things about Kindle books is that they’re not that expensive to create. You could potentially do everything yourself and get your first book up there for $0. However, if you’d rather outsource, you could get a book done for as little as $60-70 if you hire the right people.
Personally I had a little money saved up from previous business ventures that I used to publish my first few Kindle books.

Bartek: Where did you learn how to be an entrepreneur? Do some of your family members do similar stuff?

Thomas: I’ve been interested in entrepreneurship since I was little, it was just a matter of taking action and making it work. The only member of my family who’s an entrepreneur is my uncle who runs a tile business.
Bartek: How much are you making on your apps?

Thomas: My Kindle books have been my main source of income, usually bringing me around $3,000/month. However, the past couple months I’ve really started to take app development more seriously and this month I’m around $20-50/day this month. I have 12 apps currently in the works too so that’s only expected to increase.

Bartek: How did you come up with the idea of making money on Kindle books? Do you think it can be more profitable that making apps? If you're earning so much more this way, why do you still stick to the app business?

Thomas: I heard about Kindle originally from Eric at Shuckabuck.com. The reason I’m also doing apps is to diversify my income. If for some reason my account got shut down or Amazon created new rules for authors, I don’t want all my eggs in one basket.
Bartek: How do you monetize your apps? What ad networks do you use if any? Do you have any advice on it for others?

Thomas: Right now I’m only monetizing through paid apps, but in the near future I’ll be exploring using a freemium model with in-app purchases or affiliate marketing within my apps.

Bartek: Do you use any marketing techniques or ASO to promote your apps?

Thomas: For most of my apps I don’t do outside marketing for them, so I rely on picking profitable topics and optimizing my apps for keywords. I use AppCod.es and Sensor Tower to find the best keywords for the topics I choose and incorporate those keywords into my app metadata. I’m definitely not an expert on ASO though, but I try to incorporate the basics as I learn how to improve in that area more and more.

Bartek: What are your plans for the future? What do you want to create/achieve?

Thomas: Until the end of the year I’m planning on going all-out and publishing a ton of new Kindle books and iPhone apps (probably around 15 of each). For the first few months after the new year I’ll keep doing Kindle books and apps in the “background” but my primary focus will be doing a case study on my blog about starting a Software as a Service business. I’m going to find a major pain point within a small business industry and create software to help solve that problem, which should hopefully generate some nice recurring revenue as a result!

Bartek: What do you want to do after you've finished your high school? Do you still want to go to college?

Thomas: I’m still planning on going to college while continuing my businesses. Ideally by the end of college I’ll have built up my businesses enough where I’ll only have to take a 9-5 if I actually want to.
Bartek: What advice would you give to other developers (something that you wish you had known before yourself)?

Thomas: Instead of coming up with completely unique ideas, you’ll have a better chance of success finding already popular apps and improving upon them. Use market research to your advantage and choose ideas that have been PROVEN to be successful instead of leaving it to chance.

Bartek: Where can people find you on the Internet?

Thomas: The main place to connect with me would be on my blog at www.OnlineIncomeTycoon.com and make sure to sign up for my email list, as that’s where I share some exclusive content that’s not on the blog. You can also connect with me through social media, all the links are right on the blog too.

Bartek: Thank you for your time and good luck with all future projects!



P.S. My Blobby Volley game had 231 installs after 3 days. It's my best result so far and I'm hoping to get even more. Go check it out if you haven't done it yet!

Wednesday, December 18, 2013

Blobby Volley for Android: Progress Report 8 (Release!)

I've made it! I managed to release my Blobby Volley clone before going home for Christmas. In fact, my flight is in three hours. I couldn't sleep last night, because I was so excited to publish it and see if people would download it. Finally, I'm going to find out (and hopefully sleep better as well). You can go to Google Play to check it out yourself or simply look at the screenshots below. If you like it, I'd be grateful for a nice rating and a review.







Again Rafał Dorsz - my graphic designer has done a tremendous job. Thanks to him the game looks so pretty. I made the logo myself, and I'm quite proud of it as well.

I managed to commit 38 hours to the game this week, even though I was helping with organizing a festival in a nearby city this past weekend, and I was going back home at 2 in the morning. I was able to complete everything that I'd planned: three different levels of artificial intelligence, the menu with basic game options, AdMob ads (including a banner and an interstitial), bug reporting with Crittercism and fixing various issues that came up on the way.

In case it comes in handy for anyone of you, I got rid of the bug causing the ball to stick to the blob when their relative velocity was small by changing the value of the b2_linearSlop constant in the Box2D extension to 0.05 instead of 0.005 and then recompiling the native source. I spent quite some time working on it though, and I nearly gave up at the end only to find a solution when my patience was getting close to its limit.

Also, I got to know just today that there's a known bug in AndEngine causing it to crash when running the onResumeGame() method (which is for example when your game gets paused and then opened again). Luckily, I was able to detect this issue thanks to Crittercism and find a solution on Stack Overflow pretty fast.

I promise to write an in-depth postmortem on the game, mentioning once again all the tools that I used as well as my experiences with AndEngine. However, right now I feel a little tired of it and I want to enjoy my Christmas without too much computers and Android phones involved. Also, this week's interview will be delayed by a couple of days, because I'm going to spend some time away from home. Nonetheless, I can assure you that it will be very interesting when it finally shows up.

I want to finish by wishing you Merry Christmas. Take some rest, spend time with your family and friends and gain a fresh view on your ideas. Have a great holiday and good luck with all your projects in 2014.

Thursday, December 12, 2013

Android indie developer interview: Lasse Hakulinen

After talking to developers from hot countries, the time has come to interview someone from Scandinavia, where they work on some cool stuff as well. Lasse Hakulinen, my guest today, has a very solid academic background in programming and computer games theory. In fact, he's doing a PhD on applicating games for unusual tasks - in education, work and everyday life. I hope you'll like what he's doing and what he has to say.


Bartek: Tell us something about yourself. Who are you? Where do you live? What do you do in life?

Lasse: I'm the founder of Metka Games, as well as the junior game developer, novice graphical designer, and marketing apprentice of the company. I'm a PhD student from Finland and for my thesis I am researching the use of games in computer science education. I have also two sons that keep me pretty busy nowadays.

Bartek: Could you tell us some more about your PhD?

Lasse: Basically I'm interested in researching different gameful methods that are (or could be) used in computer science education, including alternate reality games, card games and gamifying existing learning environments. You can see my publications here: http://www.cs.hut.fi/u/lhakulin/ Roughly saying, I think it takes a bit over a year until I'm finished. After that, one interesting possibility would be to do games full time.
Bartek: When did your Android adventure start and how? Why did you decide to do it?

Lasse: The idea to develop games for Android came from my co-worker. I've always liked making games and Android seemed like a nice platform to get something actually published. So I just decided to go for it and see what would happen.

Bartek: How did you learn how to create apps?

Lasse: Being familiar with Java and programming in general, learning to make basic apps was not a big task. I mainly used the Android developer documentation to get started, but also searched additional guides and examples for more specific stuff (e.g. audio processing for the Rhythm Sheep game).

Bartek: Do you remember any specific sites that you used to learn more complicated Android programming?

Lasse: Stack Overflow has been useful for many things. Also, as an example, I used this site https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ to learn about the wav format because I need to do some basic audio manipulation on the fly in Rhythm Sheep.
Bartek: Do you use any libraries/frameworks?

Lasse: I use just the Android SDK. In the future, I should check if I could make my life a bit easier with some good frameworks.

Bartek: If you're not using any libraries/frameworks, how do you draw and animate objects? Do you use OpenGL, just a simple Canvas or something totally different?

Lasse: The animations are quite simple so I just use Canvas for them.
Bartek: Where do you take app/game ideas from? How do you know if they have a chance to be successful?

Lasse: I have some game ideas (that I haven't implemented yet) that I have had for years. Usually I talk to people and see if they find the idea interesting. I have also got many ideas that first seem excellent but not so good on the next day. So the first test for an idea is the first 24 hours.

Bartek: Where do you get resources from (graphics, sounds, music)?

Lasse: I have done all the graphics for my games myself. At the moment, I don't have any music in my games, but the next version of Rhythm Sheep will have some music composed by a friend who is fortunately more talented in the area than me.

Bartek: Does your friend who made music for you have a website or is there some way other people can contact him if they want something similar done?

Lasse: At the moment, he is focusing on something else and not looking for new game music assignments. However, if you have an offer that you think he can't refuse, you can ask him: https://twitter.com/AnttiSuonio
Bartek: What other programming tools do you use?

Lasse: Nothing special. Eclipse for programming and Inkscape for the graphics.

Bartek: How long does is take you to make a single app?

Lasse: At the moment I'm not doing this full time (or even anywhere close to it), so it takes a lot of calendar time to get even the updates done. The first app took about couple of months from start to publish. However, I have made several updates for it later.

Bartek: How many hours a week do you spend working on your apps?

Lasse: That is really hard to say, because it varies a lot. At the moment, 0-3h a week.
Bartek: How much are you making on your apps?

Lasse: Enough for financing the domain and hosting fees of www.metkagames.com but not enough so that I would want to calculate what has been my hourly wage so far.

Bartek: How do you monetize your apps? What ad networks do you use if any? Do you have any advice on it for others?

Lasse: I monetize with ads and paid versions of the games. Currently I use only AdMob for showing ads. I tried some banner exchange networks before, but decided to stick with one ad network at the moment just to keep it simple.

Bartek: What banner exchange sites have you tried? What are your experiences with them?

Lasse: Tap for Tap, Applifier and WaveX. The first two worked technically fine, but I had some issues of clicks not registering with WaveX. Overall, I didn't see any effects worth mentioning and therefore I decided to stop experimenting with different networks now that my developing time is really limited.
Bartek: Which ones of your apps were the biggest success and which ones were below expectations? Why?

Lasse: Rhythm Sheep has been the most successful app. I think its strength is that the gameplay is really simple but the idea of the game is not used anywhere else (at least I haven't seen it). Also, you can actually train your rhythms skills by playing the game so it is also beneficial in addition to the ultimate enjoyment it brings.
Shape Fitter has also been doing ok, even though the idea of the game is not that new. However, the levels are surely different than anywhere else as they are all hand crafted by me.
On the other hand, Color Match has not been very popular, but then again I haven't put nearly as much effort in it than in my other apps.

Baretk: Do you use any marketing techniques or ASO to promote your apps?

Lasse: Not much. Just try to describe the games in my webpage and Google Play listing as well as I can.

Bartek: What are your favourite Android games/apps?

Lasse: I just installed Chess By Post and I also like various puzzle games.

Bartek: What Android devices do you own?

Lasse: Samsung Galaxy Gio and Denver 7" tablet.

Bartek: What Android blogs/sites do you read regularly?

Lasse: Android Developers Blog fairly regularly and then some other sites more irregularly.

Bartek: Could you list other sites/blogs that you read other than the Android Developers Blog?

Lasse: Your blog, blogs in GamasutraMobile Icecube.

Facebook groups:
Indie Game Developers: http://www.facebook.com/groups/8117041572/
Play Finland: http://www.facebook.com/groups/23186771856/

…and occasionally these forums:
Making Money With Android: http://forums.makingmoneywithandroid.com/
AndroidPit forum: http://www.androidpit.com/en/android/forum

Bartek: What are your plans for the future? What do you want to create/achieve?

Lasse: At the moment I haven't been able to put much time for Metka Games, but I'd like to do games more seriously in the future. Possibly making a living out of it. I put "Awesome games for awesome people" as a motto to the Metka Games website and basically I'd like to make good games that people have fun playing, and maybe even find them useful in addition to the fun part.

Bartek: What advice would you give to other developers (something that you wish you had known before yourself)?

Lasse: There're still lots of things I wish I would know now. If I did something different, I would not rush publishing my games, but do some more testing and get more feedback before the launch. I would also do the marketing part better (but how?).

Bartek: Why do you think rushing to publish your app/game is bad?

Lasse: I think that it would be easier to market a new game when it is polished, complete, and well tested. Also, getting a lot of installs in the beginning could make some nice snowball effect going on and increase the total visibility of the game. Anyway, that's what I'm planning to try in the future and we'll see what happens.

Bartek: Where can people find you on the Internet?

Lasse: Pick your poison:
Metka Games website: http://www.metkagames.com/
Games on Google Play: https://play.google.com/store/apps/developer?id=Metka+Games
Blog: http://blog.metkagames.com/
Twitter: https://twitter.com/metkagames
Facebook: https://www.facebook.com/MetkaGames
Google+: google.com/+Metkagames
...and if you want to stalk me personally: https://twitter.com/lhakulin


I'm proud to announce that I almost finished my Blobby Volley clone and I should be able to release it at the beginning of next week. It's still a beta version, but I'm excited to see if it's going to be successful. The next progress report will be a little late (I'll probably publish it on Tuesday), but it will contain a Google Play link to the game. Wish me luck!