Thursday, November 28, 2013

Android indie developer interview: Matey Nenov

In this week's interview I'm proud to introduce to you Matey Nenov, who's achieved quite a lot in his year-and-a-half long Android career, producing 11 apps and making up to $500 a month in revenue. On his blog, he reveals all his income stats as well as thoughts on the app development business. Today, he's going to share some of his experience with us.



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

Matey: I'm Matey, I'm 35 and I live in Stuttgart, Germany with my wife and my daughter. I'm originally from Bulgaria and came here 15 years ago. I studied computer science and physics here and now I work for a big car manufacturing company. I used to work as a software developer, but now I just oversee other developers.

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

Matey: My Android adventure started last year. I had an Android phone, I wanted for a long time to create something for it and finally I got the time to do it. My first app was Tetricorn, a game I developed as a Java Applet and then ported to Android. It felt pretty good to finish the app and publish it to the Play Store, so I decided to do more apps.

Bartek: How did you learn how to create apps?

Matey: As an experienced Java developer, it was pretty easy to start with the Android SDK. At the beginning I used almost only the main android developer page: http://developer.android.com.

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

Matey: I made my first projects with the standard Android SDK, no extra libraries or frameworks. Then I switched to LibGDX. LibGDX is very powerful and gives you the freedom to do whatever you like. The biggest advantage is that the LibGDX apps can be run and debugged directly on the PC, no emulator or mobile device needed.
I started to create my new game with Unity 3D. My first impressions are very positive and also the ability to publish to different platforms is a big plus. I will comment further on this topic on my blog, when my new game is finished.

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

Matey: It is very different. Sometimes I just have a great idea, sometimes I just see an app and I come up with an idea how to create a similar app but with some upgrades. And sometimes I just make a remake of a game I liked as a kid.
I have absolutely no idea if a game or an app will be successful. If I knew it, I would make only successful apps ;). Although with time and apps I create I can see some tendencies.

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

Matey: I create most of the graphics by myself.
Sounds are one of my big weaknesses. I download most of the sounds from www.freesound.org but mostly I am not really happy with the result.
Until now I never used music in my games.

Bartek: What other programming tools do you use?

Matey: I use git.

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

Matey: From a couple of days to a couple of months. I don't have much time for my private projects, so I try to make only small projects that I can finish in a foreseeable time.

Bartek: How much are you making on your apps?

Matey: I have a very detailed monthly report on my blog (http://www.nenoff.com). [around $300/month]

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

Matey: I like to experiment to see what works and what doesn't work. I don't have any prejudices about what is good and what a developer shouldn't use. If something is working, it's good, period. As I said I use all kinds of ads:
Banner ads - I use AdMob, MobFox and Millenial Media.
AdMob worked fine in the past, now the income is very low. They have a very good fill rate, so I am still using them for ads when MobFox can't serve.
MobFox on the other hand is pretty stable, so this is my primary banner ad provider.
Millenial Media was good only for one month, now this is worse than AdMob, so I am keeping them for only two of my apps and only when no other ad network can serve an ad.
Push notification and icon ads. The major app stores banned this type of ads, so I don't use them anymore, although they were very lucrative. For live wallpapers this was the only option to make some money! Here I used two networks: AirPush and Leadbolt. Both of them were good, so I can't decide which was better.
Interstitial ads - after the push and icon ads were banned I switched all of my apps to this ad type. The only thing that I regret is that I didn't do this earlier. This type of ads are very lucrative, with some apps they are much better than the push ads! I am using here also AirPush and Leadbolt. For now there is no favorite, although I think Leadbolt is a little bit better.
I have also paid versions of my apps, but the sells revenue is not comparable with the ads revenue.

Bartek: Can you reveal the CPMs you're getting?

Matey: First of all I think that the CPMs from the different ad networks, ad types and apps must be enjoyed with care. Ad type, position and refresh rate have the biggest impact on the CTR. For example you can achieve very good results with high refresh rates for a banner ad on some networks with a good fill rate but have very bad CTR (due to the high refresh rate). Furthermore the CTR can change from one day to another, depending on the ad campaigns that are available...
With all this said here are the numbers from the last 30 days (or the number ranges, because it is very different for different apps):
AdMob: from 0.10€ to 0.59€
MobFox: from $0.11 to $1.14
Airpush: from $0.06 to $1.76
Leadbolt: from $0.04 to $3.39
As you can see the ranges are very wide and can change very often.

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

Matey: My biggest success is the Fart Revolver app and I don't know why. The biggest disappointment is actually my first app Tetricorn. This is not my worst performing app, but I had too high expectations for it. I thing Tetricorn is too complex and most of the people don't get it.

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

Matey: Not really, all I do is optimize the app title and description.

Bartek: What are your favorite Android games/apps?

Matey: My apps of course ;)

Bartek: What Android devices do you own?

Matey: Samsung Galaxy S2c, Samsung Galaxy Note, Samsung Galaxy S4.
Unity can build for IOS, so I bought recently a Mac Mini and an iPad Air (with the money I earned with my android apps ;))

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

Matey: Your blog :). When I have problem with something I just search the net, so there is no specific site I use.

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

Matey: I will concentrate on making better 3D games. Maybe in the future I will hire some people to help me do some ambitious projects.

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

Matey: Don't give up, don't stop trying. As Einstein once said: “It's not that I'm so smart, it's just that I stay with problems longer”. If something isn't working - change it and keep trying...

Bartek: Where can people find you on the Internet?

Matey: blog: http://www.nenoff.com/
Facebook: https://www.facebook.com/nenoffAndroid
Twitter: https://twitter.com/mnenoff
Play Store: https://play.google.com/store/apps/developer?id=nenoff

Tuesday, November 26, 2013

Creative, Serious and Playful Science of Android Apps

Just a quick announcement for all those who want to learn Android programming in a fun way. A new Coursera course - Creative, Serious and Playful Science of Android Apps starts December 2nd (Monday). It's totally free and doesn't require any previous programming knowledge. I've already signed up, even though I don't expect to learn a lot, since I know all the basic stuff. I just want to meet new people interested in Android development and have a nice time coding something in my spare time. Check out the introduction video below, to get a better idea, what it is.


For all those who don't know Coursera yet, it's an online learning platform with amazing courses prepared by the best universities in the world. See my previous post about it or just visit their site to find out by yourself. I've recently finished two more courses organized by them: Creativity, Innovation, and Change and General Game Playing. They were both very interesting and professional.

So, anyone else wants to sign up, study and have fun with me? Let me know.

P.S. If this course seems too easy for you, take a look at other ones. If I had more time, I'd probably be watching the lessons most of the day... perhaps only taking breaks for TED :P


Sunday, November 24, 2013

Blobby Volley for Android: Progress Report 5

Last week brought some pretty unexpected events - this time positive ones though. I was working on blob and ball shadows, as well as controller buttons and I had to add a lot more textures to my game. Using TexturePacker, it was quite easy, but I noticed that the free version I was using wouldn't let me change the layout algorithm, resulting in very suboptimal layouts (see the images below). Also, the texture produced this way was much larger than it could be. This, and the fact that I couldn't change the package name in the generated Java file so I had to correct it by hand every time I modified something, convinced me that I needed a full version. The bad news was it cost $40 and I wasn't sure if I was ready to spend so much on my game. I started desperately looking for a way to get it for free... and I found it. I'm not talking here about some black hat method involving key generators, torrents, etc. It's totally legal. The only condition is having a blog about game/software/web development. If you meet this condition, go to the Request a free license section of the Code'n'Web site and apply. It's that easy. You can also request PhysicsEditor, which comes in handy when you create Box2D physic connectors for sprites. I wanted both, and I got them the next day. Yuppie!

TexturePacker's basic layout algorithm
TexturePacker's MaxRects layout algorithm - not available in the free version
The second unexpected thing happened when I was talking on Skype with my friend Justyna, who makes T-shirt designs. You can check out her Facebook profile. She's done some drawing for me in the past, so I was hoping she could help me this time as well. It turned out she's a little busy right now, but her brother, who is an awesome artist as well (take a look at his gallery), is much less occupied. In fact, he owes me a favor after I helped him with a college programming assignment some time ago (I almost forgot about it). I haven't talked to him, because he was finishing a project of his, but I'm planning to make a list of every piece of graphics I can possibly need in the game and ask him what he can do.

Apart from the exciting stuff, I worked hard for another 12h on the following things:
  • I added ball and blob shadows
  • I'm showing an indicator when the ball is outside of the screen
  • I made the movement controls look nicer and behave like buttons (highlight when pressed)
  • I moved all physical objects' definitions from code to PhysicsEditor - now I can easily change the bodies without thinking too much about coordinates and writing lengthy methods initializing all the necessary connections
I also read a couple of pages from AndEngine for Game Development Cookbook. Not too many though. I'll try to read more next time.

Take a look at the screenshot below to get a grasp of the current game state. You can also download the latest apk.


This coming week, I'll probably have less time to code, due to my Italian exam (yes, I'm studying the language of Dante), and my friend's visit (he's staying for a couple of days). Nonetheless, I'll try to complete the following:
  • limit the number of legal ball hits (perhaps also parametrize it)
  • start working on a simple AI
  • talk to my graphic designer and decide on what I need and what he can actually deliver

While I spoke with Justyna, she was trying to persuade me to release the game before Christmas, because that's when people download the most apps. I think it's a good idea, so I'll try to finish the basic stuff (namely options, AI and graphics) until then. I'm pretty sure I can make it. I'll leave multiplayer and other more complex features (achievements, advanced game modes, animated backgrounds, etc.) for later. If I get a lot of downloads, it'll give me additional motivation to work. If not, I might just abandon the project and start something else. I believe that the black scenario will not happen though.

I hope you like where the game is going. Feel free to share with me any thoughts you might have. I'll read and consider all of them.

For those who are waiting for another interview, I have a couple of them accumulated and I'll be releasing them every week around Wednesday/Thursday. Come back then to get a new portion of stories, tips and advice from other developers. 


Wednesday, November 20, 2013

Android indie developer interview: Marcin Mikosik

In this week's interview, I'm excited to introduce to you Marcin Mikosik, not only because he's Polish like me, but also because he manages to make a living from his apps/games. He does everything by himself, from coding, through graphic resources up to sound effects. Today, you'll have a chance to learn a few tricks from him and take a look at what he's done so far. Marcin is very professional in his work and uses a bunch of interesting tools. Perhaps they'll turn out useful for you as well...


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

Marcin: I'm Polish and live in a small town in the center of Poland. I have my own, one-man company Perun Labs. I develop games for the Android platform.

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

Marcin: It happened 3 years ago when I decided to change the way I lived and worked. I quit my job and moved back to my home town together with my wife. At that time I knew very little about Android and much less about creating games but I was convinced that Android would be a good choice as a platform for my future games. Time has shown it was a right decision.

Bartek: How did you learn how to create apps?

Marcin: Concerning the Android platform I found most things I needed at http://developer.android.com/. In more problematic cases I usually found answers to my problems at StackOverflow or simply by using google search.

Considering game creation, I truly recommend The Art of Game Design: A book of lenses. It doesn't touch any technological stuff. It just explains why humans like playing games. Why some games can engross their players for hours when some are boring after a few minutes of play. Developers usually focus on technical aspects of game creation while there are other equally important. This book explains all of them in details.

Bartek: What libraries/frameworks do you use?

Marcin: I do not use framework like libGDX or AndEngine. I built my own, but it's rather a set of libraries than a rigid framework. I have already released one part of it as https://github.com/mikosik/jvalues.

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

Marcin: This is the hardest question for every game creator. I guess most of my ideas are just mixes of games I played before. Predicting success of one game is even harder. I frankly say I'm quite bad at it. In most cases so far I usually underestimated games that were actually successful and overestimate games that didn't bring much revenue. Generally speaking I'm not the best person to give you advice on that one. ;)

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

Marcin: I created all graphics for my games myself. That's actually one single thing that I'm most proud of as I had never done any computer graphics before. I decided to go this way for a couple of reasons. First of all I wanted to limit the amount of money I spent on each game. I wanted to try creating graphics myself so I could better understand that process. As it is usually hard for me to decide what graphics should look like up front and at the same time it is helpful to have some graphics at the beginning of development. I usually redesign graphics assets a few times during development of every single game. It would be much harder (and  more expensive) to do it if I had to coordinate it each time with a professional graphic designer.

Concerning sounds and music I was less ambitious. Initially I bought a few songs from Premiumbeat.com. Later I switched to royalty free songs available at incompetech.com. Sounds are pretty tricky to get right so you have to either buy all of them from a single place, so they play nice together, or create all of them yourself. Recently I've been using as3sfxr. It's great retro sound generator. It seems a bit hard to create something you need at first but once you get used to it you can very quickly create a whole set of sounds for your game.

Bartek: What other programming tools do you use?

Marcin: That's a lot of stuff to cover so let me enumerate only the most important and skip obvious ones (like Eclipse, linux distro, JVM, etc).

  • Smooth-build - that's the build tool I've just created (it's in early 0.4 version). I'm migrating all my projects to it as I'm sick and tired of Ant, Maven and Gradle. If you want to try in any open source project as an early adopter I'm eager to write build scripts for you,
  • git - that's the only reasonable choice nowadays,
  • ProGuard - java byte code shrinker that makes you bytecode small,
  • Tiled Map Editor - an awesome level editor. I wonder how I could develop my first games without it. I'm convinced that a good level editor is so crucial for success of your game that I dropped a few game ideas just because design would be to complicated to create within Tiled,
  • Inkscape - all my graphics are svgs. They are converted to png format during build time. When I started creating graphics I considered raster graphic formats at first but after some experiments I noticed that I could create better quality stuff with vector graphics. Inkscape can be hard to grasp at first. If you find yourself a little lost initially I recommend The book of Inkscape: The Definitive Guide to the Free Graphics Editor. It explains a lot of stuff that happens in inkscape under the hood which helps you understand this tool better even though UI can be sometimes misleading,
  • OptiPNG - png file shrinker - makes you png files as small as possible without losing any quality
  • and finally basic set of java libraries: JUnit, mockito, testory, jvalues, assertj, guava, guice.

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

Marcin: I always strive to implement the whole game within 4 weeks of time (I work 8h per day, 5 days a week). This way each feature I want to add to the game has to be carefully analyzed concerning its time requirements. There's nothing worse than spending weeks perfecting your game and finding in the end that it is not so popular as you expect. As I read in some book: "Your first 50 games will be ugly so make them out quickly". Another advantage is that I never develop a game long enough to get bored with it. Four weeks is a tight deadline so I seldom manage to keep it but it is a good rule of thumb. For my latest games the numbers are the following:
Worm Plex - 9 weeks
Slide - 4 weeks
Pac Maze (with first set of 52 levels) - 8 weeks
Sokoban - 2 weeks
Rings - 8 weeks
Maze - 2 weeks

Bartek: How much are you making on your apps?

Marcin: Just enough to make both ends meet. It's much less than I would earn working for somebody else but on the other hand my games bring me revenue even when I sleep so I treat it more as an investment.

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

Marcin: AdMob is my main source of income. It brings almost 95% of my revenue. The rest comes from IAP and ad-free version of my games. I haven't done much experiments in this area so far. I'm planning to try interstitial ads soon.

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

Marcin: The biggest (and most unexpected) success was my Pac Maze game. I thought that game with so simple graphic and so old idea of eating dots in a maze couldn't be a big success but it turned out it got many positive reviews. Gamers seemed to focus more on playability than graphical effects. The biggest disappointment to me so far was Worm Plex. Especially it is the one I'm most proud of. What I can say from my experience so far is that niche games like Worm Plex (which is strictly puzzle/logical type) are more difficult to find their audience than traditional casual/arcade games.

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

Marcin: Nothing extraordinary that wouldn't be known by almost everybody.

Bartek: What are your favourite Android games/apps?

Marcin: Mini Quests - isometric adventure with ultra low resolution. I always preferred games that required some thinking. This game shows that you don't need to use mind blowing graphic effects to create an interesting game.

Bartek: What Android devices do you own?

Marcin: Nexus 1, Nexus 7, Samsung Galaxy Tab.

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

Marcin: Apart from Android developers blog I do not have any other Android specific blogs in my RSS reader.

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

Marcin: Currently I'm working on smooth build so it can reach version 1.0 soon. It would have all the features required from a full fledged Java build tool. It's hard to say what will be the next thing as I do not like to decide on such things in advance. Landscape changes too quickly to make long-term plans. I have a few things on the radar though: porting my games to OUYA, porting my games to html5, adding an in-game level editor to Pac Maze, and a few ideas for new games.

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

Marcin: Reduce the number of features in each game to minimum. Release as many games as possible. The more games you release the biggest chance that you make a game that is a big success even though it has many parts missing. You will fix them once you know which of your games is that one. Note that spending a lot of time on a single game has a drawback of being bored with it. Just be quick with releasing your games.

Bartek: Where can people find you on the Internet?

Marcin: my blog: http://developing-android-games.perunlabs.com/
Google+ https://plus.google.com/108838636104991588862/posts
Facebook: https://www.facebook.com/PerunLabs
game/apps in Google Play: https://play.google.com/store/apps/developer?id=Perun+Labs
GitHub: https://github.com/mikosik


Marcin doesn't post on his blog very often - usually just once or twice a month, but some of his posts can be very helpful. I particularly liked his articles about the best app stores to publish on, creating app icons, useful development tools and the video below.



For all those who follow my Blobby Volley progress reports, there were a couple very exciting things happening this week. I can't wait to tell you about them at the end of this weekend. As a sneek peek, I can tell you, that I found someone to do the graphics for me for free (!) and that I managed to get TexturePacker and PhysicsEditor licenses also without spending a buck (and without violating any copyrights). You want to know how I did it? Read the next post :P

Sunday, November 17, 2013

Blobby Volley for Android: Progress Report 4

This week was super productive. I worked for 20h and I managed to read 136 pages of AndEngine for Game Development Cookbook. I feel like my game is getting more and more fun to play. Check out the screenshot below or download the latest apk.



Here's what I spent my time on:

  • Instead of relying on my own scaling mechanism, I started using one of those built into AndEngine. This way everything might be a little distorted, but it saves me a lot of work and puts more order into the code.
  • I refactored everything once again to be compliant with what they say in the book. You can't see any direct results of this, but believe me, navigating through the code now is much more pleasant.
  • I tried playing the existing Android Blobby Volley clone via WiFi and Bluetooth. The former didn't work at all, the latter crashed for the first time and started running when I created the game once again. You can see that there's plenty of room for improvement. Perhaps my app can do it better.
  • I fixed a couple of small bugs, one of which allowed blobs to move a couple of pixels inside the net or too far out of the screen.
  • I implemented variable height jumping. I followed the instructions from a thread on Stack Exchange, particularly the example code on JSFiddle mentioned there.
  • I added blob animations. Now, when they walk or jump, they change their shape a little. I used the AndEngine's EntityModifier functionality. Unfortunately, you can't see it in the screenshot. You have to install the game from the apk file.
  • What you can see, is another movement controller. The red button moves the blobs left and the green one right. You can choose which one you want to use and on which side you want it to be (left or right). Too bad, you can only do it from the code right now.
  • I parametrized a lot of stuff, so it's easy to change gravity, blob walking speed, blob jumping height, player names and move/jump controller types and sides.

This coming week I want to do the following.

  • Add blob and ball shadows, so that they look more natural.
  • Show an indicator pointing at the ball, when it's outside of the screen.
  • Make the movement controls look nicer.
  • If it's not too hard, make it possible to control blobs by tilting the device.
  • Start some simple AI.
  • Read another 100 pages of AndEngine for Game Development Cookbook.
  • Watch some videos/read tutorials about Google Play Services. They might come in handy when it comes to achievements and multiplayer.
Once again, feel free to download and play the game. If you have any remarks or suggestions, leave me a comment below. I will certainly read it and I'll try to put it into practice.

If you like reading my interviews, a brand new one is going to show up in the middle of the week. Don't miss it. As to another progress report, wait for it at the end of the next weekend.

Thursday, November 14, 2013

Android indie developer interview: Gabriele Ferreri

Today, you'll have a chance to meet the founder of Tech Cookies and a hobby Android developer from Italy. He actually does other kind of programming, but he decided to give mobile a shot and publish a popular puzzle game. How successful was he? Find out for yourself.


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

Gabriele: I’m an Italian ASP.NET C# Developer. I’m 35 years old and I like to play soccer and watch movies (SciFi).
I worked for a long time in southern Italy (where I was born) and then after 2 years in Milan and one in UK I’m currently working remotely for a UK company.
I like to write about my interests and I have had a few articles published on codeproject.com about ASP.NET (C#), Ajax, Javascript, Silverlight and Sql Server.
I also have my website at www.techcookies.net talking about Android apps, games and tricks.

Bartek: I like your site (Tech Cookies). What made you start it?

Gabriele: I started it mainly to improve my English skills and because I like to test unusual apps and games. I don't have much free time and I normally post one article/review each day. I actually have between 300 and 500 visitors each day but for some special tips and tricks articles I get even more than 6000 visitors a day.

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

Gabriele: About 2 years ago I received my first Android phone (LG Optimus Me) and I started to think about creating my first app or game. When I was a child I remember a very popular game in Italy called Fifteen Puzzle (the plastic one) and I decided to create a reproduction of that game. I was not sure it could be successful.

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

Gabriele: I mostly learned using online tutorials/videos. I don't remember all of them. I think the most important ones are:
http://developer.android.com/index.html
http://libgdx.badlogicgames.com/

Then I search on Google to spot tutorials/solutions for any issue I get.

I don't read the same websites but I normally use Google+, Facebook and reddit to get the articles I want to read.

Bartek: What libraries/frameworks did you use and why did you choose them?

Gabriele: I used libGDX because it's a very powerful library to create games. The key feature for me is the possibility to test games on a desktop with any screen size you like and the internal algorithm that automatically adapts a game to any screen resolution.
Bartek: Where did you get your resources from (graphics, sounds, music)?

Gabriele: I learned a 3D tool called Blender and I used a 3D renderer called YafaRay. I used them to create my resources.

Bartek: Did you use any other programming tools?

Gabriele: I just used Eclipse and libGDX.

Bartek: How long did it take you to make the Fifteen Puzzle X?

Gabriele: I made it during my free time and I probably spent one hour a day. It took me two months to create the basic version and lots more to continue with improvements and bug fixes.

Bartek: How do you monetize it? How much income does it generate?

Gabriele: I don't make much money from this game because I don't like to be very intrusive with ads. I have one banner at the top of the game and an interstitial on a back button. I probably got enough to buy a Nexus 5.
I'm using AdMob for the banner and AppBrain for the interstitial.
Bartek: Do you use any marketing techniques or ASO to promote it?

Gabriele: I didn't use any marketing techniques. I just shared it on Facebook/Google+ and asked for a review on websites.

Bartek: What are your favourite Android games/apps?

Gabriele: Real Racing 3, but I normally like puzzle games in general.

Bartek: What Android devices do you own?

Gabriele: Now, I have a Galaxy Nexus but my first device was an LG P350.

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

Gabriele: I read Android Central.

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

Gabriele: I don't have any big plans because this is just a hobby and it's difficult to get free time over my main work but I'm working on a new app.

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

Gabriele: If you plan to make an app or a game don't publish it until the basics are ready or you'll get bad ratings. When you are ready to publish try to share as much as you can because the first 30 days Google will give you a better ranking.

Bartek: Where can people find you on the Internet?



P.S. For those who follow my Blobby Volley progress reports, this week is going to be waaay more productive.

Monday, November 11, 2013

Blobby Volley for Android: Progress Report 3

This week was definitely not a productive one. Neither was it very lucky. But let's start from the beginning.

I only worked for about 3h. I was really busy with other duties and I went for a trip during the weekend. I'm not very proud of this number, but it didn't happen because of my laziness - I honestly had other things to occupy myself with.

Nonetheless, I was able to create a menu screen and an options screen. I also started using the HUD class to display points and FPS. All of those things I learned through the AndEngine Tutorials site. You can take a look at the screenshots below to get a grasp of what I'm talking about or just download the current game apk file.




I'm not very happy with what the menu looks like right now, but it'll do for a while, until I design a better one. You may notice that the FPS rate is quite high and on my Nexus 4 phone it stays close to 60 all the time.

Unfortunately, I won't be able to use the resources from the original game. I found a StackOverflow thread about using GPL-licensed images in your projects that said that it's not legal to do so. However, it also said that I might try to ask the author for permission. So I did, but I got the following answer:
I'm sorry to tell you that we have an Android app of Blobby Volley 2
already in incubation (.etatest) which will be released soon:
http://blobby.sourceforge.net/ 30. November ;)
The images and sounds are not OpenSource. So I'm sorry to tell you
that you can't use them. But feel free to use the GPL code for your
stuff under the terms of the GPL.
So not only can't I use the resources, but also they're writing their own Android version of the game. If fact, they've practically finished it. You can imagine that it didn't make me very happy, but after giving it some thought I decided to finish my game anyway. It's a great learning experience and I think it can still be successful. Especially if I make it better or just different from other existing ones. I'll probably be needing a designer though and I'm still not sure how I'm going to find one and how much I'll be willing to pay him.

Other than HUD, menus and legal issues, I was able to enhance the physics a little. Even though I didn't have time to code everything, I'm pretty sure I have it well thought over. If you're observant, you may notice that the ball doesn't influence the blobs' speed anymore (although it was an interesting effect). I transformed the blobs into kinematic bodies and I have a nice plan how to code the rest of the bounce mechanism.

Here's what I want to do in the next 7 days:
  • finish up the game physics so it behaves pretty much like the original game
  • enable the controls to be on both sides of the net (for left handed people and for those who prefer it this way)
  • add other control mechanisms - left/right buttons and possibly gyroscope
  • start working on blob animations
  • perhaps code a very basic AI
This week made me realize why documentation is important and why good code examples are not enough. AndEngine is lacking a manual and JavaDocs and without those two, you have to come up with your own design patterns and good practices. That's why I decided to get the AndEngine for Android Game Development Cookbook. I haven't started reading it yet, but I'll definitely share my impressions of it later. Also, besides regular progress reports, I'll be telling you, how far through the book I managed to get.


As a post scriptum, I want to thank Jeremiah McLeod from XdebugX Games for giving me a tip concerning TexturePacker. He wrote me a comment on the last progress report, indicating that libGDX has it's own TexturePacker which can be used for free, if my trial period expires and it leaves me with insufficient functionality. I didn't have to add any new textures last week, but I'll remember this piece of advice when I have another sprite to add. If you happen to possess a piece of information that might help me with my struggle, please share it as well.


Oh, and one more thing, a lot of people have answered my interview request lately, so you can expect weekly Q&A sessions with various developers. If you have something interesting to say, you can contact me as well at bartas.wesolowski [at] gmail.com... and if you just want to read and learn, come back in a couple of days or even better, sign up for email or RSS updates.

Thursday, November 7, 2013

Android indie developer interview: Marcio Andrey Oliveira

It must be the longest interview I've done so far. Marcio reveals a lot of details concerning his struggles to make money on Android apps as well as Flash games. He also gives precise figures concerning his income and expenditures. He doesn't code only by himself, but outsources some of the work to other programmers and designers. I'm sure you'll find his story interesting and educating.



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

Marcio: I'm Brazilian living in Sao Paulo with my wife and I have no kids. I'm 42 years old and I'm an Electronics Engineer. I started programming in 1991 in C and assembly (both for Z80 and x86). My day job has nothing to do with games. It's mainly C/C++ and Java server side programming.

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

Marcio: My daily job involves server side programming but my enterprise has some mobile clients too (at first they were J2ME, BlackBerry and BREW). Then they asked for an Android version. It was my first contact with Android. I liked it a lot and as I wanted to learn how to develop games I thought it could be a good idea to develop a game for Android.

Bartek: How did you learn how to create apps? What resources were you using (websites, books, etc.)?

Marcio: I mix books and website tutorials in order to learn. I use books because they have a lot of information in one place and tutorials because I can pick specific topics and see how to deal with them. I don't like classes by the way. I think they're a waste of time.

Bartek: Could you list some books/sites that you used?

Marcio: I used books such as: Android NDK Beginner's Guide, Professional Android Sensor Programming and Learning Android Game Programming. As to sites:
https://mhandroid.wordpress.com/
http://blog.edwards-research.com/
http://developer.android.com/
http://www.andengine.org/forums/
http://www.anddev.org/
The last three are the ones I use the most.

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

Marcio: I did some research and I found some libraries. To pick one is the hardest part in the beginning because I didn't know which one best fitted my needs. In the end I picked AndEngine. I chose it because it had a great support. It's almost impossible to ask something in its forums and not to get an answer. It's a must for me.

Bartek: Are you happy with your choice now? Would you have chosen something else with your current knowledge?

Marcio: When I started I was just focusing on Android and I was 100% satisfied with AndEngine. Some time later I changed my mind and then this framework didn't filled my needs anymore. But if I were to stick just with Android I'd be using it for sure.

Bartek: What did you switch to? Why wasn't it enough any more?

Marcio: I'd never made a game before and when I finished my first two games and my first app I didn't get many downloads and they didn't bring me any money. I didn't expect to be rich but I realized that ads in apps required a lot of downloads to make me some money. My two games and my first app got around 90,000 downloads and I earned around $75. I thought about it and I saw the problem:

  1. users have to discover your app
  2. users have to download your app
  3. they must have network connection enabled
  4. then the need to click the ads

It's not that easy. Many run the apps with network turned off and others just skip ads. I like to play flash games and I thought: "Hey! Why stick with Android? In Flash market I can make more money." Why?Because users just have to find your site and click the ads. They already have network enabled and the ones that use AdBlock I can just redirect them to another place. And then I started out as portal owner but I wanted to keep doing my games. This made me look for another tool. I found OpenFL (formerly Haxe NME). It allowed me to target Android and Flash. Then I switched to that framework. But not everything is flowers: in Flash games market competition is much bigger than in Google Play. The revenue paid by ads is much smaller and there are many cheaters (guys that hack your games, replace the ads and links inside the game and redistribute it).

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

Marcio: To say the truth, I decided to start with simple games to learn so I picked an easy and somewhat odd game as my first game. I'm still learning a lot of things so I can make only simple games, but I'd like to make games like the ones from Atari. Many games in Android market are games based on ancient games like the ones from Atari, Odyssey and SNES. I'm realist. As my games are simple I don't expect they will be a huge success. It's something that will (hopefully) happen in future when I'll have acquired required skills for a real game developer. But you really can't be sure about the success of a game. I have a game called Beautiful Mermaid DressUp that is boring as hell (from a boy's point of view) that has 80,000 downloads (including other app markets, of course). Other games I like have almost no downloads.

Bartek: So why a mermaid and not something more Atari-like? How did you find out that something like this can work?

Marcio: For two reasons:
  • Atari games require more knowledge than I have,
  • because I needed traffic for my arcade site and there is a good demand for dress up games.

Bartek: Do Flash games work better for you than Android ones?

Marcio: Much better. All my Flash games have almost 2,000,000 game plays. My Android games are far away from this number. The drawback as I told you is that ads on Flash pay much less than on Android.

Bartek: Where do you publish your flash games? How do you get the audience?

Marcio: There are two ways to get audience: organic and bought. Organic traffic comes from search engines. It requires a lot of time and effort to get organic traffic because the competition is very strong. Bought traffic can be achieved by:
  • ads in Google and other networks,
  • traffic exchange with other arcade sites,
  • traffic that comes from the "more games" link in your games.
I submit my games to more than 400 arcade sites and I make many deals with some of them (game exchange - I publish their games and they publish my games). All methods have their positive and negative points.

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

Marcio: I bought graphics from oDesk. There are many sites that offer free music/sounds on the net. Just to be clear, not all games were made by me (I sponsored some) and in this case graphics, sounds, music are all included.

Bartek: Can you give examples of the sites that you used?

Marcio: Soundsnap, Openclipart. A good place to buy stuff is Flickr. These I use the most. In my opinion it is better to hire an artist to do all the graphics, so the game has a more uniform style. When you get free resources it's hard to find everything in the same style.

Bartek: How much do you pay for it?

Marcio: Between $150 and $500.

Bartek: For the whole set?

Marcio: For all graphics needed for a game. On my first game I spent about $155.

Bartek: How much for a full game? Do you find people who make them for you on oDesk as well?

Marcio: There are many developers there but I prefer to work with the ones from FGL. Games range from $200 to $500. Flash games have a totally different price range. I decided to sponsor some games mainly because I need to bring traffic to my arcade and as I'm not such an experienced developer. If I only made games by myself, it would take much more time. I'm in red at the moment.

Bartek: What are the differences between Android and Flash prices?

Marcio: Flash games can cost you up to $20,000. As to Android games, on the other hand, I never saw anyone paying more than $1,000. My idea is to start making games to sell. But it will be done only when I have acquired enough skills to make decent games. No way am I planning to abandon Android. Much on the contrary. All my games have links to their Android version. I believe that in the near future (say 5 years) Flash market will have a significant drop while Android will dominate the market, so it wouldn't be smart to move away.

Bartek: How long does is take you to make a single app (or have it done)?

Marcio: Apps (not games) are simpler to make. I usually take between 3 days and 7 days. Games take longer - around 2 to 3 months. The reasons are:
  1. the lack of knowledge (I need to learn a lot during the development process),
  2. the lack of time (I have a full time job),
  3. the lack of health (I have a severe tendinitis) it limits how much I can work per day.

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

Marcio: At first I used Inneractive, but I switched to AdMob because it has a lower payout. For some games (that I didn't publish on Google Play) I use RevMob.

Bartek: Do you just show banners or do you use other ad formats?

Marcio: I used only banners but now I started to use interstitials to see what happens. I particularly dislike interstitial ads.

Bartek: Why?

Marcio: I think they are more annoying than banners. Banners can be easily ignored but interstitials require user to interact with them. And (in my opinion) interstitial ads only perform better because many users don't know how to skip them without clicking in the ad. I would never pay for interstitial ads if I were advertising.

Bartek: They often pay for installs of apps advertised this way and not just for clicks.

Marcio: I know. But as a user, I get very upset when I come across an interstitial ad and I refuse to install/buy anything advertised this way. So, if I were an advertiser, I woudln't use this kind of ads.

Bartek: How does your balance look like? Are you managing to make some money out of your apps right now? If not, how and when do you expect to reach a profitable level?

Marcio: Up to now I've spent $12,000 (since 2010) and I've earned $1,000 so I'm in the red. In the near future I don't see any change in this but I won't give up.

Bartek: Is this only Android or Flash as well?

Marcio: Both. I've spent around $1,000 for Android and the remaining for Flash. From my earnings, $200 came from Android and the remaining from Flash. Pretty bad...

Bartek: Is the revenue going up or down?

Marcio: It's slowly going up. But I think that I need to develop an application that requires users to be online in order to use it, so it will increase the chances for earning from ads. I'm thinking about something like this while I'm developing my current application.

Bartek: You know - when I was living in Poland not too many people had the Internet in their phones, but here in Italy it's practically everyone - I pay 8 euro a month and I have unlimited Internet transfer. I think it's going to change in the near future. Everyone will have the Internet in their phone/tablet.

Marcio: I hope so. But some applications don't require users to stay connected (for instance, games) so it diminishes the opportunities to show ads. An application like a Twitter client, on the other hand, has a huge potential.

Bartek: I get your point.

Marcio: When I was learning to use the GPS API I made an app named TwitMyPlace. It just posted to your location to Twitter. The CTR was very high compared to my games. The drawback is that it was a test app and the download number was low. But still I think that connected apps are the best ones to develop.

Bartek: My best earning app (Toilet Sounds) does not use the Internet... Others with the highest CPM (Toothbrush and Milan Subway Map) don't require it as well. The CPM of a simple banner in Toothbrush is $2.33 now. To be honest, I'm surprised myself. On the other hand, my comic readers that require Internet connection have the CPM of $0.08. It's partially my fault though, because I use animated banners that get hidden after a couple of seconds.

Marcio: Maybe an update would help you.

Bartek: You're probably right, but they make me about $0.05/month, so I usually find some more pressing issues :)

Marcio: I see.

Bartek: Let's come back to some more serious stuff for a while longer. Which ones of your apps were the biggest success and which ones were below expectations?

Marcio: The best one is Beautiful Mermaid Dressup. It was a surprise because I personally find this kind of games boring as hell. The worst performing one is ClickToFly. I thought people would like it, but it has almost no downloads.

Bartek: What do you think are the reasons for this (the success and the failure)?

Marcio: I wish I knew. I don't have any clue about that. Some friends of mine spent more than $3,000 on a game (in Flash) and it made nothing in return while others invested around $250 and earned a lot. It's hard to understand the users' taste.

Bartek: Perhaps it's random and it's better to produce a series of small, cheap apps and hope that one of them will be successful?

Marcio: There are 2 approaches: you can invest a lot of time and money producing a game/app or you develop a low budget one. I prefer not to spend too much money on them. If it fails, I move on. Also because I don't like doing the same thing for a lot of time. I get bored.

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

Marcio: I have some friends that are developers too and we promote each other's applications on social networks, with friends... Investing in marketing is hard when you have a low budget.

Bartek: What are your favourite Android games/apps?

Marcio: Apart from my apps? I like a lot the following: Opera Mini, 920 Text Editor, Adobe Reader and the poker game from Poker Stars.

Bartek: What Android devices do you own?

Marcio: Sony Experia E15a (2.1-update1) and Motorola Razor i XT890 (Android 4.1.2). I'm planning to buy a Samsung Galaxy S3.

Bartek: Why do you need another one?

Marcio: I had some complaints from users saying some games were not running smoothly on their devices. I usually try to solve all issues as soon as possible and this device is the one that is giving me the most trouble.

Bartek: That explains much. What Android blogs/sites do you read regularly?


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

Marcio: Right now I'm writing an application that will help stock market newbies by calculating emoluments, taxes and fees and by saying how much money one gained or lost by buying/selling stocks on the Brazilian stock exchange market (Bovespa). In case of a good number of users I'll port it to other platforms.I'm also thinking about apps that will require users to be online to use them. My experience with this kind of apps was good and I think they deserve more attention. I'm considering turning the stock app in just an interface to access my webservices so users would need to be online to use it. The advantages are great: any device will be able to run it because all calculations will be done on the server.

Bartek: Are you working on it alone or are you outsourcing it?

Marcio: I'm working alone. Up to now I've made 45% of the application. My tendinites is what holds my progress. In the past I released a spreadsheet that made these calculus for 2 brokerage companies and it had a lot of downloads, so I'm hoping it will be a success, but who knows?

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

Marcio: Good question. I wish I had a good marketing strategy. To develop an app is an achievement, but it means nothing if people don't know about your app. And it's getting harder and harder to get discovered on Google Play. My advice: try to create a virtuous circle, in other words get in contact with other developers that are interested im making a group to spread to the world about apps and that are willing to help you by testing your apps on their devices. The more developers participating the better.

Bartek: How do you find such a group?

Marcio: I find them on Twitter, Facebook, Google+ and on forums. I contact them privately and I make an offer: we review, tweet, blog, write facebook posts and so on about each other applications. Some don't want to participate, some just want you to help them but they refuse to help you. That's part of life, but the ones that are really engaged in the idea are the ones that you establish a long term relationship with.

Bartek: That's a great tip - thanks. Where can people find you on the Internet?

Marcio: My blog: blog.plicatibu.com
Twitter: @plicatibu
my site: plicatibu.com

Bartek: Thank you for the interview and good luck with your ideas.

Monday, November 4, 2013

Blobby Volley for Android - Progress Report 2

Last week I worked for about 12h on my Blobby Volley clone. As I'd predicted earlier, I didn't have as much time as the previous week, but still, I'm quite content with the results. Take a look at the image below.


Here's the list of recent changes:

  • I refactored the existing code, so it's more structured and legible.
  • I read some AndEngine Tutorials to better understand the game programming techniques.
  • I changed the size of the controls - they don't overlap the net any more and it's more difficult to jump unintentionally.
  • I fixed some bugs related to counting points and detecting who should serve - now both things should work correctly.
  • I added player names and points - both use a custom font.
  • I changed the movement mechanism - the blobs don't get stuck in a shaky state when you keep your finger in one spot and they move more smoothly.
  • I adjusted the physics constants, so that the game is more dynamic (although I'm still not quite content with it).
  • I started using TexturePacker to easily prepare and load all my sprites. You can go see a short video on Vimeo, explaining in a nutshell what it's capable of. I'm still on the trial period and I'm a bit worried what will happen when it expires (it doesn't say anywhere). Apparently some features get disabled, but I have no idea which ones... Anyway, here's what my texture looks like now.


Next, I want to do the following:
  • Add a simple splash screen, a menu screen and an options screen, to see how those things work.
  • Adjust the physics some more, to make the gameplay more fun. I noticed, that in the original game the ball doesn't just bounce off the blobs, but it behaves as if they were hitting it. It also never moves as fast as my ball, so I guess I'll have to limit it as well. I might decide to use PhysicsEditor, but I'm not sure about it yet, since it's a paid tool.
  • Enable choosing the controls' side, i.e. placing the movement control on the right and the jump control on the left, if needed.
  • Add variable height jumping, so that when you press the jump button longer, the blob jumps higher.
  • Find out if I can use graphics and sounds from the original PC game without violating the licencse.
  • Learn how to animate the blobs while they jump and walk.
  • Implement some simplistic AI to make the game more enjoyable.

I hope you like the game so far. If you're curious what's going to happen in the next seven days, come back during the weekend and find out.

If you have any constructive remarks or want to give me advice, feel free to use the comments section. I read and appreciate every single comment you leave.