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]