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?

Mind the gap

If you recall, I received a mail from a Xamarin “Customer Success Engineer” and he asked me if I needed any help, among other things. In my reply to him I explained my obstacles in releasing and I asked if he was aware of any other indie’s who had similar limitations based on locale. His reply stumped me, not because he answered any of my questions, in fact he answered none of them. His reply stumped me because he offered me a better deal on Xamarin than the one advertised on their website.

So, as I said in the beginning, I’m not over thinking anything and I’m just going where the road takes me. He probably could have answered my questions but where would the challenge be if you had all the answers to begin with, right? As far as the road and the journey took me, cash in hand was my biggest concern with what I’m doing and here he was offering to lower that burden just enough for me to actually do it.

Behind every man

I went backwards and forwards considering it and eventually my wife convinced me to take a chance, to practise what I preach so to speak. She assured me that we’d be fine and that there’s no reason why I can’t be as successful as I want to be.

I took the bait, on good faith mind you. Good faith that I would be able to port my game idea to iOS, it would run and I could sell it. I purchased Xamarin for Business. Yes, stop rolling your eyes at me young reader. I told you before, play to your strengths. Michael Jordan was a far better basketball player than a baseball player! My strengths are fairly tightly coupled to the Windows Operating system. What’s more, I work for a blue chip during my work hours and I use Windows there so it would flow more naturally if I go home and continue to use Windows.

Not only did my wife support me to buy Xamarin, she understood that I needed a Mac. Now any guy would feel his heart skip a beat at this point. Most of the time statements like “boys will be boys” and “boys and their toys” are thrown around like it is more common than the common cold. I’m lucky that my wife doesn’t do that. Not only that, but here she was encouraging me to get a Mac, so that it can stand there and look pretty and be my build server.

I’m on a spending spree

I made a few phone calls and finally settled on a price. I was as apprehensive as can be, but I did it. I bought a 13″ MacBook Pro with Retina display. The small one, not the big one. I figured that when I could afford it I could throw parallels on there and I could do Windows development like it should be done, on a Mac 🙂

I wanted to throw the Mac keyboard away. It was frustrating typing without a dedicated home, end, page up, page down or delete button. Over time though, I started getting used to it but for the most part, my Mac was a shiny little build server in the corner of my office. Pretty to look at and a gateway to iOS.

I haven’t mentioned registering as an Apple developer, because it was the easiest part of all. Since I was one in 2007, all I had to do was renew.

And we’re off…

That’s right folks. I was working on the final product. I could code it on Windows, build it on my Mac and test it on my iPhone or iPad. Things were going great. I had an occasional hiccup, but it was mostly due to integration between the PC and the Mac and followed a logical pattern, so it was easy to work around once I understood it.

But what about Android?

I had a little niggle at the back of my head and it was called Android. Xamarin offered me the same deal on iOS and Android. What if I could release on Android too? So I waited a while, thinking about it. Mulling it over properly. When a friend of mine registered on the Windows app store and Amazon to test if the same limitations applied, I made my decision.

Thanks to John I now knew I could sell through Amazon’s App store as well as the Windows App store. Before my window of opportunity elapsed I needed to buy Xamarin business for Android too. Make no mistake, the offer had an end-of-life so I had to make up my mind quickly.

So, in the same month I went from not being able to afford to go on holiday, to buying an Mac, Registering as an Apple developer and buying both Xamarin’s iOS and Android editions. I also bought a few supporting utilities and a bunch of sounds. This was getting really expensive really quickly.

My bank loved me. So much so that I’m filling in loan forms as we speak, but that’s a different story and one for another day. Hold thumbs though, will you?

This was EPIC

This was not the end of my discovery or redefinition of what I do. It was merely the beginning. I started off with a set of walls surrounding me, cutting me off from doing what I thought I could do and I’ve surpassed them. Sure, I’ve not released a single game or made a dollar but at least I could release one. Someone might just buy it and like it. Who knows. I am under no illusions that this might very well be a one way street in which I’m to gain very little, but there’s no rule that defines it to be so. This is life my friends, we’re all along for the ride.

Where am I now?

Well, I’m glad you asked. The last few weeks have been very, VERY long. I’ve hardly slept, I’ve hardly done anything but work. This isn’t totally abnormal for me, but I did more than the usual. I can assure you that having a full time, demanding job and then creating something like Zombie Apocalypse at night is no easy feat. I had to cut myself off from most of my friends and skip out on many fun times simply because I had to work after hours, every hour. Every weekend, every minute. If you are considering doing this and are not willing to part with your social life, head my warning: DON’T DO IT.

But I did it for myself and obviously, I did it for you, the gamer.

During this time I’ve learned that the most difficult thing for me was the graphics. I drew almost 2,500 sprites in Microsoft Paint, pixel by pixel. Yes, you read that, I drew it all in paint. Remember, I’m not an artist, I’m a programmer. I could easily have done it some other way, but how would I have made sure that all my graphics seem to “fit” together. That the colour schemes are the same, that the tile sizes work etc etc? In the end, I found it easier to just draw it all from scratch. It paid off I think, the cartoon-like look I went for is kind of fun and quirky.

If I can one day afford to hire a graphic artist I will. This meant that I had to spend a substantial amount of time drawing graphics. Time that could have been much better served writing code, expanding the game concepts or well, just making it more fun.

I made a purposeful and active decision not to do everything that I have planned. I have a wall filled with sticky’s and ideas that could make the game lots and lots more fun, but at this rate I need to get it into your hands so that YOU can tell me what you want and what you think. If you don’t like it, then I’ll move on to the next idea. If you like it, I’ll keep refining it. To me, this is the minimum viable product. I would love to give you more in the first go, but that’s not possible right now. Anything I do rolls into another idea and another idea. To implement these ideas I need time, support and money. I have none of those. So bear with me, this is our journey as much as it is mine.

I mentioned that I purchased some sounds for the game. Initially I used sounds that were in the creative commons domain and I have to say, there were some good quality sounds that I replaced by ones that I now own the rights to use. I still don’t know what I’m going to do about game music.

The game, well it’s almost done. Last night I added a sword and grenades so that you could have a little more options when you kill those pesky Zombies! I have a large town map and you can enter into any building you like. Buildings are a safe zone, where Zombie’s won’t go. This gives you a chance to recover your health and to change gear. Also, you can stand on the roof of certain buildings and throw grenades on the zombies below.

Watch this space, I’ll be submitting to Apple VERY soon.

In game samples while testing various weapons

In game samples while testing various weapons