My first look at iOS vs Android vs Microsoft

Welcome back. I’ve been hard at work on my new game, but more on that when I have something more to tell.

The story continues with Stray Cat, the first game that I managed to get through the submission process and onto the App Stores. It’s available for both iOS (iTunes) and Android (Google Play and Amazon)

Android: A story of Ice Cream Sandwiches, Jellybeans and KitKat’s

Initially I had pinned my (Android) hopes on the Amazon App Store but to date have yet to see any movement whatsoever on it. So is it alive, does it have a heartbeat? Maybe I’m missing the plot but I think it’s a dead rubber. I’ve stopped checking on it altogether, in fact I’m considering just pulling the game off the Amazon store altogether.

So Amazon isn’t the way to go and Google Play doesn’t pay to South Africa, so revenue is pretty much non-existent there. The only form of revenue to be made from Google Play is advertising. In the end, I added AdMob advertising into the Android version and released one for free on Google Play. This was a problem for me, as it meant I had gone back on my ideals of not releasing add supported games.

I spent lots of time pondering on it and spoke to friends and asked questions and in the end, I realized that I can live by my ideals or I can try to make things work. It turns out that being adaptable remains the one thing true to an indie developer. I also realized that people are not keen on spending any money whatsoever on a game they know nothing about, made by someone they known nothing about. Of course, I had done fairly little in terms of advertising at this point, but I’ll share my advertising findings in another post.

The final moment of irritation was that we’ve tested a lot on a Samsung GT-I9500 and I know for a fact it works. Yet I have people contacting me saying it doesn’t work at all on that exact model. I also found that things that generally worked rather easily on iOS always took a tweak or two more on Android. I can’t help but see flashbacks of the nightmare that was developing for Nokia’s Symbian OS.

You might not remember, but if you wanted some game to run on your Nokia, you had to choose the exact version that was specifically made for your exact phone model. The same game had various versions for various phones and if you picked the wrong one it wouldn’t work. I’ve not had any similar issues on Apple’s iOS. Things just generally seem to work. Also, Apple just has the recipe right in terms of hardware which just seems to perform much better than even the top of the range Galaxy Tabs. I’ve not collected an extensive set of data on it, but certainly on our tests on frame-rate and processing rates at least it seems to hold true.

Apple, yes just Apple

This hasn’t put me off Android, but combined with the very poor download stats compared to iOS’s pretty low total, I’m not going to focus as much on Android for the time being. If I made games full-time, I would still focus just as much on Android as iOS but since I have to split my time, it’s Apple first. So my plan is to make the games for iOS, then to migrate them to other platforms afterward, rather than doing it all at the same time.

Microsoft, still in version 3.11, alpha.

Bring on the Microsoft store and in true form, what just works on the other App Stores is a complete headache here. If you are lucky enough to figure out how to navigate what I can only describe as the worst program flow ever, then you are probably going to realize that just after you’ve paid your subscription fee that you’ve done it to the wrong store. You paid the Windows store instead of the App store. Of course that’s what you meant to do, right?

Enter the App Store and Windows Store confusion. Yes my friends, lets cross brand, cross name and ultimately confuse the crap out of everyone. Once you are in, you’ve sorted out your payment mess, you create your application profile and then you are stuck. You notice that you can’t do anything until Microsoft Verifies you. HUH? 7 Days of waiting for, erm, nothing to happen. Apparently, they didn’t need to verify me? WHAT? I’m confused.

On the next step I learnt that I need to configure the BETA testers using a box that I couldn’t use because it’s all greyed out. So, after much searching and struggling with horrible KB articles that seem to be a circular reference to themselves and mention just about every Microsoft product under the sun, I figured out that there is no good reason why I can’t simply delete and recreate my app. Oh yeah, you guessed it, in true Microsoft “reboot” it style, I could progress to the next stage with the newly created app profile. a Few weeks wasted. I have lots of spare time, right?

Microsoft, promoting the use of aspirin worldwide.

Hold on to your horses, that’s not it yet either. So I get that there is a need for things like content ratings and PEGI and so on, but by comparison, Apple asked a few questions about my game and rated it accordingly. So did Amazon, so did Google Play. No my friends, not Microsoft. They provide you with a list of all the approvals you need from all the Countries to accomplish the same thing and even though their vastly confusing KB articles stated that I don’t need to complete all those forms, the fact is you need to spend a serious amount of time to do what the mainline app stores do for you.

And the verdict is?

If Apple was my primary store and Google Play was my secondary store, then Microsoft would be somewhere between I’m bored, it’s 3am and I can’t sleep and I’ve already finished my book so “hey, lets see if I can make some progress with Microsoft” and well, nothing really. I can’t imagine anything I’d rather want to waste my time on. Skip, at least until I have much, much, much more time available!

So that meant the end of my initial App store experience. I had created and launched my Game and now people would start to download it.

Until we meet here again, in a few days perhaps?

If you play it, it must show

Welcome back. Get yourself a cup of coffee to accompany you through my video journey. I had coffee at every step so it makes sense that you have one too, don’t you think?

I had a bit of trouble with my intro video, my logo and just a general  dislike of being disorganized or feeling like I’ve hacked at something. Apart from the issue where all my graphics are drawn pixel by pixel, I had another problem. I wanted to be able to use graphical overlays and background motion video and so on.

If you will, imagine the clouds moving by in the background while the “Start Game” button is showing.

There is no way to play video in all the lovely ways you would expect in Monogame without running into cross platform issues. I’m not referring to playing a movie and sitting back to watch it, that’s easy. I want picture in picture, I want multiple video’s to overlay each other, speed up and slow down at my command, that sort of thing.

Suffice to say that each mobile platform has some way to play a video and each way comes with pro’s and cons. For iOS for example, it means downloading third party projects and figuring out what they did or integrate their libraries and then hope and pray you don’t have sloppy stitch-together problems when you want to do the same for Android.

I don’t like this idea, it feels awkwardly hacked together and makes me feel like I’m losing my touch. I’m a programmer, not a Lego builder, even though I love Lego. After lots of prodding and pondering I decided to do it myself, in a way that exactly the same thing works on all the platforms I am currently testing on, so Windows, iOS and Android then.

Using some magic, with a few tear drops, a feather from a bird-that-became-cat-prey, a stare from my wife and one bucket load of elbow grease, I made my own video format. I call it “the vid”.  The format is pretty cool yet simple. I spent some time on “tooling” so now I can convert any other video format to “the vid”. So that means I can take an MP4 or an MKV or AVI and I can turn it into a vid that will work on Windows, iOS and Android. I can also re-size the video in the process, making it bigger or smaller and reduce quality if I need to.

It is worth saying that I am only talking video here, I don’t care about audio since I’m not making movies, I make games. My “vid” format allows me to do all the programmer thingies that I want to do, such as triggering an event when something is on screen or me being able to specify exactly where on the screen the video should display, the frame rate and so on. They also support alpha channel transparency so I can overlay them with ease.

The files are nice and small-ish (for video) so I should be able to make it all work within the size constraints that allows users to download over 3G instead of WiFi.

Lastly,  I can buffer my video straight from the disk, so I don’t have to load the entire video into memory in one go. This is important as on the lower-end of the scale devices have less memory. Talking about memory, playing the video doesn’t mess up my memory usage either. I keep it pretty steady with no leakage that, err, I can detect at this point. I’ll investigate further on that.

In all, this was fun. Maybe I explained this well enough that it’s not too technical, I hope you could follow. I could show you a video but that’s not really the point. A video is a video, it’s how I made it that is interesting, right?

Hello World

a While ago I was feeling the pressure at work and needed to let off a bit of steam. I had been working hard and I just felt that the time was right to do something different. This is easier said than done as I don’t take breaks often and like most of you I suspect I don’t reward myself enough. I have been working real hard at not forcing things, to take things as they come and to see where the road takes me. So this was an opportunity to do something different.

I didn’t have anything coming up at work so I took 3 weeks off, just like that. I don’t know who was more surprised  me or my boss. Now, when I say that I certainly couldn’t afford to go on holiday I really mean it. Budgets are tight these days, but it didn’t matter to me as my wife had just started a new job couldn’t go away even she we wanted to. I’d stay home and do my thing.

The basic plan

I planned on spending my 3 weeks working on atStumps, a cricket game I have been working on since, well forever I suppose. My wife wouldn’t be shocked if I spent all my time on it as that’s what I’ve been doing for years. The roots of the game goes as far back as my mIRC scripting days as a youngster, before I knew any proper programming languages but I suppose the most concrete starting point for the current version of the game started in 2007 sometime.

I remember sitting on the train on the way home, when an email alert popped up, a local company had launched an AI challenge. Now for the initiated this is rather simple: create an ‘computer player’ for whatever game they specify and then your ‘computer player’ (or AI) competes against those of other programmers. This was it. Something that I could spend some time on and I had 3 weeks to have fun with it! I was so intrigued by this email that I missed my stop and had to get off a station later and wait for a return train. I was going to enter this competition. This was the perfect Friday, the start of my holiday.

My first working game

To test my A.I, I figured I needed to create the game, so that I could play against it. The competition was for a ‘Battle City’ type clone, so I created an engine that could play the game and a front end that could draw the world. This caught the attention of my kids, who wanted to play the game.

Now this is where pride overrides anything else. I’m a TCP/IP specialist, and it had just so happened that I had finished my low-latency TCP/IP library the day before. The challenge was on to make the game work multi-player.

By the end of the weekend, we were all playing my version of ‘Battle City’ on the local network and my kids almost enjoyed my map editor more than the game itself. This was a problem to me, as my son would be on my brother-in-law’s computer and my daughter would be on mine. We were effectively sidelined on our own PC’s!

To Xbox, or not to Xbox. Do or do not, there is no try

Then it hit me, I have an Xbox. Surely I must be able to run my game on the Xbox! If you’re still reading at this point, I guess this is where you start grinning because that has to be tough, right? Turns out that porting my ‘Battle City’ to XNA Game Studio was easy as pie. Before I knew it, my game was ready for the Xbox. But, err, the Xbox was not ready for the game.

You see, Microsoft has made it such that you can run your XNA games on your Xbox, but in order to do so, you need to install Microsoft XNA Game Studio connect on the Xbox. If you’re in the US or Europe I suppose this is a 10 second event for you, BUT, for us in South Africa, this turned into a mission of several days! See, we’re not allowed to install XNA Game Studio connect! In fact, we can’t even find it on our Xbox Market Place! It’s not available for our region!

This was strange to me, just this past April I attended Microsoft TechED in Durban. The theme was ‘Africa Rising’. So Africa is rising, but not allowed to do what is common place in the rest of the world. So how exactly should Africa rise? But this is a topic for another discussion, back on track I go.

So, it turns out, that if you are a student, you can register on Microsoft Dreamspark and then, using that registration, you can register on Xbox live and then, once you jump through all the hoops you can link the two accounts and then, after 3 days of debugging, scratching your head, giving up, trying again, giving up again, trying again, you get the picture right? Eventually, once you’re properly frustrated and can’t figure out what else to try, magically things will work and you can install XNA Game Studio Connect on your Xbox. Luckily for me, my brother-in-law is a student. From that point on, it was 10 minutes and we were running the game on the Xbox.

The standing ovation

Now if you have kids, you’ll know that look on Christmas morning when they open their presents, that awe and amazement that you can almost feel in the air. Got the picture? Right!, So showing your game off to your kids while running it on your Xbox is nothing like that. I kid you not, “oh ok” better explains their facial expressions. But I was proud. This was the best waste of 3 days I’ve ever had. It was promptly followed by whatsapp’s to friends and colleagues showing my ‘Battle City’ off on the Xbox. I didn’t get any standing ovations, but still, this was a moment to remember. It felt like I had just defeated Microsoft. Why should this be so difficult to do?

By that night, I had my computer back and could continue working, while the kids played on the Xbox. I had a long chat with my wife as it was bothering me that I had spent all this effort and I could do nothing with it. If you haven’t figured it out by now, the Microsoft Indie program is not available to South Africans, so even if I were to use this new found freedom to create something and install it on my Xbox, I can’t publish it!

Enter monogame. With monogame, you can run your XNA game on iOS and Android! Now this had me excited. Years ago, I dabbled a little with Objective-C and registered as an Apple developer to see what the fuss was about. But, being a C# guy I didn’t want to re-learn things just so that I could use it on Apple. What’s more, I couldn’t use any of my current expertise so I let it go. With Monogame, I could leverage of my skills and do something for both iOS and Android!

This was the beginning of my journey. Hello World, I see you.

[2013/08/20: I added some headings based on feedback from friend & colleague Sean Hederman]