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.


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!

Sunday, December 8, 2013

Blobby Volley for Android: Progress Report 7

I'm extremely excited to show you this week's progress. I worked for 16h, mainly on the AI and on integrating new graphic resources delivered by my designer - Rafał Dorsz. Both things turned out very well. Just look at the screenshots below to see how pretty the game has become. I should probably also mention that the bot plays so well that in my best match I was able to score only 5 points (with its 10)... and believe me, I played quite a lot. What is even more surprising, the AI doesn't take into account the net's existence at all (!) and it's often overeager on jumping due to a simple bug that I haven't had enough time to correct. I'm afraid to think how good it will become with some more adjustments. Will I struggle to get even one point?

If you're wondering what those colorful and transparent balls are, they serve for AI debugging purposes to show ball position predictions in key movement moments (at jump height, net height, blob height and on the ground). I decided to leave them visible for now to help you visualize how the bot is working.

The new graphic resources include: two backgrounds with separate nets and their shadows, balls with shading overlays (if you take a closer look, you'll see a light reflex on the ball, which is not spinning) and blobs. The game's theme is picked at random right now, so if you play a couple of times, you should be able to see both the beach and the snow.

What I struggled the most with this week was a strange bug causing the ball to stick to the blob instead of bouncing off it. It happens when their speeds have similar value and direction. I found a suggestion on the AndEngine forum to modify the b2_velocityThreshold value in the PhysicsBox2DExtension and then recompile the native sources, which I did (after learning how to do it first). Unfortunately it didn't help. I have no idea how to get rid of the undesirable effect. It doesn't happen very often, but it looks weird and leaves you with a bad impression of the game. I'll try to commit more time to it later, but I want to focus on more pressing issues first.

In the past couple of days I spent quite some time with pen and paper instead of in front of a computer screen. I was working on physics equations letting me predict the ball's position and speed at different moments. I felt a little rusty at first, but I quickly recovered from a state of math ignorance I've been living in for some time. It was a nice experience bringing back memories of school assignments.

I bought and played Blobby Volley by Daniel Knobe. As expected, it's just an exact PC version clone with adjusted controls. It's not mobile optimized, it looks quite ugly and there is no free version. It's biggest advantage is probably that the code is not new and might have fewer bugs this way. I haven't tried playing online yet. I'm not sure if you can do it with one instance open on your PC and another one on the phone and I don't want to buy it one more time to play on two phones. Anyway, despite costing around $1.25, the game has between 50-100 installs after a week of its release, which I guess is not a bad result, taking into account that there's no free or demo version and that it doesn't look that good.

Plans for the upcoming week include:
  • finishing the AI and introducing diversified difficulty levels, so that it's possible to win the game against AI
  • adding new graphic resources when they get finished; I expect to get buttons pretty soon and maybe some more backgrounds as well
  • designing and implementing a simple options menu, to be able to set the basic game parameters
  • fixing the bug causing the ball to stick to the blob instead of bouncing off it
  • adding AdMob banners and interstitials
  • adding BugSense/Crittercism or a similar bug reporting system

I only have 10 more days until I fly to Poland for Christmas. After that I will not be able to code for 3 weeks, so I'm motivated to publish a beta version of Blobby Volley before I leave. I'm counting on getting a lot of installs through this hottest period for Google Play apps. If my game turns out to be a flop, I might just start a new project. Otherwise, I'll improve it even more, add new settings and game modes. I have plenty of ideas on how to make it more fun, so I hope that people will like it.

Stay tuned for the last (or last but one) progress report before Christmas next week. Another interview with an Android developer will get published in a couple of days as well. Let the countdown begin!

Wednesday, December 4, 2013

Android indie developer interview: Eike Decker

In today's interview our guest will be Eike Decker from Quakatoo.com - a very talented Android game developer with plenty of experience in Flash and MMO games. As a matter of fact, he can draw and make 3D models as well as code.
Eike is going to share with us, how he transitioned from browser games to mobile and what he's created so far. He uses some unusual graphics and programming tools that might interest you. He's also a very active Google+ user, so if you like his work, you can follow him there.

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

Eike: I am a 32 year old software developer working in a company that makes browser MMO games in Hamburg, Germany. I work on my own projects in my free time, which was reduced two years ago when our first child was born - it hasn't improved since because we got another child. Don't get me wrong - I enjoy being a father and spending my time with my children. I just don't have as much time as I used to have.

Bartek: What exactly do you do in your day job?

Eike: I work at InnoGames as a software developer for games. The company is renowned for Tribal Wars, Grepolis and Forge of Empires (all strategic mmo browser games) but also for The West, an mmo RPG browser game. I have worked as a developer both on server and client code over the past 5 years, having contributed to most of those named products over the time.

Bartek: What kind of games do you make?

Eike: The games (and one app) I made on Android can be found on the play store here: https://play.google.com/store/search?q=eike%20decker
I have made 3 games so far, each was a puzzler. The current game I am working on is an action/arcade game. The first game I released, which is Recombustor was made just with the Java API and OpenGL.
Ocean Conquest and Bubble Inflate were made with Adobe AIR.

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

Eike: I started almost 3 years ago when I got frustrated about several things. I had always hoped to make games on my own ever since I was a kid and I worked hard to learn all kind of skills - drawing, 3D modelling, texturing, programming... - and I am doing quite OK in most disciplines that are necessary to make games without aid. I also made a few interesting prototypes that made people curious. But I never published anything because I was never bringing it to an end, mostly because of my lack of working out the parts on marketing, distribution and selling things - because I am shying away from paperwork. Back then, I decided I had to get a game out, no matter what. I considered that the limited possibilities of smartphones would be helping me to get something finished. And the distribution system of the Android store seemed simple enough to make it work for me. It still took me half a year to finish something... despite that I chose something "simple".

Bartek: How did you learn how to create apps?

Eike: I learn by doing. I have been learning for more than 15 years on things like rendering, making graphics etc., so using tools and to making apps was not the most challenging part - finishing them was the painful part.

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

Eike: I didn't choose any for the first project I made (Recombustor). I used the Android libraries and used OpenGL for rendering which I was already familiar with. For the other games I got out, I am now using Adobe AIR, mostly because I have become more proficient with that technology at work. I made some other prototype games with LibGDX in between, but I never got very far (though one space game prototype started to look interesting...).

Bartek: How do you make games for Android with Adobe AIR? Does it compile to native code or do you need some runtime libraries to play the games?

Eike: The Adobe Adobe AIR SDK is free and I use FlashDevelop as an IDE, which is also freely available. It's really easy to get the simple stuff working in Flash but needs some time and setup to get it working on mobile, but still, it's relatively straight forward. The upside is that it's really easy to test on desktop systems because under hood, it's just Flash.
When compiling it for Android devices, it makes a special compilation run and produces all the stuff needed for execution. It's still running interpreted, but the performance is about as good as doing things in Java - in my general experience (your mileage will vary (a lot) depending on what you do). The downside is that the 8.5MB big Flash player is part of the distribution, so for small games, it's making up a large part of the installation; for bigger games with lots of graphics, it's not so much important.
And upside of this system is, that it's also possible to compile the stuff for iOS and it's pretty much working out of the box. And of course it can be published on the web too, as it's mainly Flash.
Bartek: Where do you take app/game ideas from? How do you know if they have a chance to be successful?

Ocean Conquest
Eike: I have no idea what'll be successful. Honestly not. Following the blogs and opinions, success is a lot dependent on luck if you can't afford big marketing campaigns. I try to make the game fun enough for me that I can play it without being terrified.

Bartek: How many downloads do your individual apps have?

Eike: Recombustor is hitting 50k anytime soon (49k so far...). Ocean Conquest has 7k installations. Bubble Inflate hasn't even got a hundred downloads. I invested about 3 or 4 days of work in Bubble Inflate - compared to the half year I needed in comparison to Recombustor, it's still quite successful I'd say, especially since it's more an experiment on how an unadvertised game app fares over time. As far as I can tell, the downloads are very constant on that app - around 10 per month on average.

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

Eike: I am doing the artwork myself. For the next game, I am cooperating with some guys who provide music and sounds for free for me (http://music.supermarcatobros.com/). They produced a really cool soundtracks, but I still have to publish that game. An important resource for me is also motiviation. My initial motivation is usually able to keep me working like crazy for 1-2 months, but I usually need feedback then from other people to keep going. I am glad to have a game designer as a friend who provides me with help and feedback - which helps me to not lose interest.

Bartek: Is Super Marcato Bros. music free or paid? How much is it?

Eike: They kindly offered me to make everything for free - which I was not happy to accept because if money comes around, it should always be paid in my opinion. I offered them a share of revenue that wouldn't kill me but that would be fair in relation to their work's impact on the game. I don't know if the game will be a success, but still, I would share if there was something to share.
Bubble Inflate

Bartek: What software do you use to make graphics?

Eike: I use a really really old outdated version of Paint Shop Pro 5 for lots of things like basic drawing, converting formats etc. For painting, I am using Manga Studio 5 which works fine with the pressure sensitive pen of my tablet PC (which Photoshop for example can't because the Microsoft Ink API is not supported by Photoshop).
For 3D modelling, I am using Cinema4D R11 that has also a painting application called Body Paint included which allows me to paint on 3D models directly, which is often handy. I use that tool a lot as well.
Bartek: What other programming tools do you use?

Eike: So far, I used Dropbox alone for keeping the file backups and sharing it with a colleague. Adobe Scout is also a very nice tool to dive into performance issues.

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

Eike: About half a year. Sometimes longer.

Bartek: How much time do you spend working on your games every week?

Eike: I can spend around 2 hours per day on working on my stuff, but I often can't even do that. Maybe I manage to do like 10 hours of work per week on average, up to 20 hours if I can afford it.
Bartek: How much are you making on your apps?

Eike: Not much. If I subtract my costs for the server I have and other costs, it's slightly negative.

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

Eike: I use AdMob and some in-app purchases.

Bartek: Do you use AdMob banners only or interstitials as well? When do you show them?

Eike: I used them mostly for banners. I also used them for interstitials - which worked pretty well but I abandoned it as it led to bad reviews - maybe because I was a bit too harsh... I showed them like every 3 minutes for at least 10 seconds or so.

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

Eike: I haven't released enough apps to draw conclusions on that.

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

Eike: No, not really. I promote it by going through forums. After the first game I released, I learned that I needed to be more active in some social network and choose Google+ to build up some followers. I don't know how effective the next "marketing" campaign will be for the next game, but I'll see...

Bartek: What forums do you use to write about your games when you finish them?

Eike: I advertised Recombustor the most on various forums - like Making Money with Android Forum and a few similar. It's difficult to tell the others, I only remember that one as it gave me the best feedback. I advertised Ocean Conquest only on Google+ and some communities there.

Bartek: What are your favourite Android games/apps?

Eike: I played Pixel Dungeon extensively for some time. Super Hexagon is also a game I liked to play for some time. Gem Miner has also taken a share of my time...

Bartek: What Android devices do you own?

Eike: G1, Nexus S, Asus Transformer Prime 201, Nexus 4 and an Archos Tablet for testing.

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

Eike: I follow the Google+ Indie Game Community and also follow some other Android news Google+ users.

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

Eike: Making games and publishing them, hoping for some bigger success. Having fun playing games and having a community that takes part at the development. That would be awesome. I had the pleasure at work to get in touch with players who really care - it's awesome and frightening at the same time to see such dedication. It would be a really nice feeling to achieve something like that.

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

Eike: Making beats doubting. I made so many prototypes that I really hoped to push out but I couldn't finish them because of my perfectionism.

Bartek: Where can people find you on the Internet?

Eike: My Google+ profile is most active. I post regularly stuff there on things I like - the photographs of other people but also links to blogs about coding and of course the stuff I do myself.
I have a blog at http://quakatoo.com/ but I hardly ever post there. It's better to follow my Google+ stream: https://plus.google.com/u/0/+EikeDecker/posts
I post on Google+ about once per week about my work progress - it's otherwise littered with the stuff I find around on the internet ;)

As a bonus Eike decided to reveal screenshots from his new game, which is still in production:

Sunday, December 1, 2013

Blobby Volley for Android: Progress Report 6

The work on my Blobby Volley clone is going quite well. This week, I had a talk with my friend, who's doing the graphics and here's what he managed to come up with:

Looks nice, doesn't it? These are just concepts though, and I'm still waiting for full size backgrounds.

I worked for about 11 hours on the code. I added pause, win and lose overlays, as well as some very basic AI. You can play with a bot now (!), although it's still quite stupid. As a matter of fact, it only moves to the position where the ball is predicted to fall (I spent quite a lot of time writing physics equations for ball movement). It takes into account the fact that the ball can bounce from the walls on the left and right. Unfortunately, it disregards the net almost completely... Oh, it also knows how to serve, although sometimes it doesn't quite make it over the net :) There's plenty of room for improvement, but I have a couple of good ideas on how to make it play better. To be honest, even now the bot is able to score a point from time to time when I play with it.
pause overlay
win overlay

BTW, the screenshots above are enhanced with Device Art Generator - the official Google tool for wrapping screenshots with real device artwork. To me they look much better than plain images. Don't you think?

I just took a look at Google Play, and it turns out that Daniel Knobe - the author of the original PC version of Blobby Volley released it's Android version yesterday, as promised before. It has between 10 and 50 downloads, costs around $1.25 and there's no free version, so I think my clone can still be successful. Judging from the screenshots, it's just a one-to-one Android remake of the original game, which doesn't look that good and isn't really optimized for mobile devices. I haven't had a chance to play it yet, but I'll probably buy it to take a look at the features and copy the best ones to my app... adding additional stuff, to make it even better.

This week, as soon as a friend of mine leaves on Tuesday and I don't have to work as a city guide anymore, I'll try to spend some time on improving the AI, fixing all the bugs I can find and maybe adding some options to the options screen. I should be able to spare more hours for my game now, since my Italian course has finished. There's a chance that some of the backgrounds will get completed before the next progress report, so you'll be able to assess my designer's skills.

Download the current game apk here.

P.S. Remember about the free Creative, Serious and Playful Science of Android Apps Coursera course which starts tomorrow. If you're an Android beginner or just want to revise your knowledge and get to know other developers - go and sign up.