Cavalry and Infantry

Infantry and Calvary

Cavalry may win a battle, but infantry are needed to win a war! The fate of the gaming space hangs in the balance and in the end, there will be winners and losers. I had a talk with Emeka Okoye about the future of gaming in West Africa and he passionately spoke about how the war would be decided on the mobile phone.

As you all know I love developing games for the web. For me the integration of content, development and tools on a single platform is particularly exciting. However, by the end of this year, I would have a decision to make on if I will be starting a game studio.

Don’t get me wrong! Technically I have what it takes to build a world-class game studio. The problem is the environment the industry finds itself in need of a repeatable and scalable business model. Commiting oneself to the onslaught of the coming years with no startup capital and without a guarantee of victory is either an act of faith or a form of insanity. However being a creative person, I believe it must come from within. So for the rest of the year, I will be searching my soul for if I want to build a game studio.

From my conversation with Emeka Okoye I sort of realized that by commiting to the web, I had effectively wiped out the mainstream which typically use mobile phones. In Africa, today, the two most popular phone brands are Nokia and Samsung both supporting the J2ME and Android platforms respectively.

Last year, I got frustrated with the Java programming language and swore off it! I took a lot of courage to close a door on 3 years of development in a programming language. At that time the mother company of the Java programming language Oracle had a lawsuit with Google which was against the spirit with which Java was built. That said the trends in the industry shows that Oracle has acknowledged the threat to it.

Now in the gaming space, web game development offers the freedom to toy around with game ideas in a platform that offers stability. However, the downside of web gaming in Africa is latency. Our internet connectivity is horrible! By developing games for the web only, I commit myself to a single point of failure which from an engineering perspective is a recipe for disaster.

So developing for the web means taking care of the cavalry. However occupation of territory happens due to the infantry. A small history lesson the city of Ibadan in Nigeria developed because of the occupation of the infantry stationed there by the leader of the Oyo Empire. Though the Oyo Empire  had a great calvary force, occupation was done by its infantry.

Same thing will happen with the games we develop. We can get noise (sorry I mean engagement) by developing for the web, but at the end of the day occupation will be with infantry. In tech speak: Flash and HTML5 will be how we get attention to what we do but at the end of the day if we make the decision to be relevant on our own continent, the Java programming language  will be where the occupation forces will have to be concentrated.

Tool Selection

Tools

Hello Everyone! I am happy to be back this week. Last week was really crazy so I missed a post. However, today is my 34th post on this blog and I am glad to be here! Next week will be Game Developer’s Conference and the West African gaming elder Eyram Tawia will be making a presentation. Now let no man ask him if they can enter his traveling bag because that place is already booked by me.

This week I will be looking at the tool selection criteria that I use when deciding on a tool. As a product developer, good tools should enable you get the job done and not overwhelm you. Before choosing a tool, I am honest with myself. The first question I ask myself is my level of skill. If a tool is higher than my level of skill, I will not use it. An example of this is CakePHP. While I feel is it a great PHP framework, I also feel that it is not for an intermediate developer working without a mentor to guide the learning process. So, at the end of my search for a PHP framework, I chose CodeIgniter. Now in 2 years time, my level of skill will improve. Will I then switch to CakePHP, only time will tell. So without much ado, here is my tool selection criteria.

Popularity and Community
How much buy-in a tool has from people is important. No matter how good a tool is, it does not have a future if no one hears about it. Ask Lotus Note what happened! In its day it was a vastly superior tool to Microsoft Excel. Compare that to Java in its glory days. I learnt Java because of its popularity. Back in the day, there was almost a super-cool status to being a Java programmer. In fact the hype around it made it seem like the cure for everything from world peace to HIV/AIDS and Cancer. Now did it live up to the hype? You be the judge but even to this day when I tell people that I am a programmer, the first language they mention is Java. It also had a vibrant community around it. I say had because nowadays I am no longer sure. There is a law in the corporate realm that whenever a technology giant touches an open source project, the community tends to be slaughtered at the altar of profits. When Oracle took over Sun Microsystems, this law came into effect. But it isn’t all doom and gloom. The Netbeans IDE now has support for HTML5 and for all my hatred for Oracle and what they did with the Java language, Netbeans 7.3 is a great IDE for HTML5 and PHP. What is really cool about it even if you have sworn off Java (Like I did last year) is that you can download just the modules that will enable you work with HTML5 and PHP.

Documentation and Examples
No matter how great a tool is, if the documentation reads like greek, no developer will touch it. Good tools have great documentation! A classic example of this is XCode by Apple. Now I had to do research on developing for iDevices once upon a life time and I was suprised at the level of details of the documentation. Examples also matter! I was trying to create a chart for a particular project. Using Raphael was becoming cubersome so I decided to go in search of another JavaScript Library. In the course of searching, I found Highcharts. Not only did it meet the documentation criteria, the examples on pie chart creation are in my opinion the best among all the charting libraries I researched.

Licensing and Pricing
Yes legal and accounting issues do matter. I personally love FOSS (Free and Open Source Software) but even when deciding to use a product, you must read the license! Highcharts for example is free for non-profit purposes. Now a typical developer will say this is Africa and I will agree. But scaling has a way of catching up with a developer. Once a team gets big enough, it could have a lawsuit on its hands! You can ask Samsung about what Apple did to them. For years the issues where always there but Apple did nothing. Only when they where sure that Samsung was a big enough target did they go after them. Even Microsoft is not exempt from this. In the early days of tech adoption in Nigeria, banks got their software from Computer Village (A place where you can get everything tech in Nigeria). Now this was fake software but there was no stopping the binge that had started! One day when Microsoft was sure that they had found a home on most of the banks servers, they struck! Until that time, most banks did not know that Nigeria had an anti-piracy law. In the end, a lot of money was coughed out and Microsoft‘s dominion was assured in the banking halls of Nigeria.

Easy to Setup
No matter how great a tool is if it isn’t easy to setup, I am not interested! For years, this was my argument with Android. It was always a pain to setup. Now being a spoiled Windows user did not help matters! To illustrate how much of a problem it was, when the Android team finally decided to package Android into a single setup, guess which OS users got the package?

Easy to Use
Here all discussions end! If a tool is not easy to use based on the subjective experience of the user, then nothing else I have written in this post matters. Microsoft is the definitive standard for user accessibility in Africa! I wonder if I would be a programmer by now if I had to learn to from command prompt at the start. Even among all my programming friends this trend emerges. It seems like the guys who learnt Visual Basic (A drag and drop programming environment) first are still programming while those who where introduced into programming with C++ (A command line programming environment) are no longer programmers. Don’t get me wrong, in order to really push the limits of a machine, you must use the command line. The only problem is when you are being introduced to this at the beginning when you are trying to find your feet. In truth all tools have prerequisites for usage and jumping head first into using a tool without knowing its prerequisites is sometimes a recipe for failure. That noted, good programmers also know that the fastest way to learn is via experimentation. If we are too afraid to learn how to use a tool because we are afraid that we might break something, we might as well become project managers.

That’s my piece on tool selection. If you have anything to add do drop a comment in the comments section below. With this post, I hope you also understand why I use WordPress.

Redefining Education

udacityHello Everyone! For the rest of this month, I will be doing product showcases for great products out there. To start with Clay.io started a game development competition. You can find the details here. The deadline for the competition is on the 5th of April.

The face of education is really changing with the web. Today MOOCs are changing the perception of education from the traditional brick and mortar academies. In the past, if you wanted to learn something, you could ask people, do it yourself or go to university.

MOOCs one the other hand are designed for a world where information is everywhere. Its a new way of learning in a networked world.

MOOCs are courses that are open, participatory and distributed. They are like any other course with facilitators, course materials, starting and ending dates. However MOOCs aren’t just schools. Neither are they just online courses. They are a way to participate in a learning experience.

I have tried out a couple of MOOCs in my life. Personally, my favorite is Udacity. I love the way courses are handled. You can pace yourself and study at your own time. Currently, I am offering 3 courses on Udacity they are the How to Build a Startup, HTML5 Game Development and Interactive 3D Graphics. The beautiful thing is that because there is no rush, I can pace myself and eventually finish. Udacity’s competitors include CourseraCodeacademyedX and Venture Lab.

The competitors bring a different flavor to the mix and to each his own! I prefer Udacity because I enjoy learning at my own pace. Yes I crawled out of the the Department of Systems Engineering at the University of Lagos but I love learning.

Love them or hate them, MOOCs will redefine the debate around conventional education. Are they a fad, only time will tell. Let me have your thoughts in the comments area below.

Why I use HTML5 for Game Development

Game Distribution Channels

Hello Everyone! Welcome to a new month! I will be talking about why I use HTML5 for game development this week. Don’t get me wrong I know all the trends say do Mobile but I love having a Web First approach for the following reasons

Freedom

For years XNA was used by developers in creating games for Microsoft. Then one day, support was discontinued. You can read the post here. Wisdom suggests that you do not plan a trip using another person’s car. HTML5 gives you the freedom to create without worrying about whether tools will be affected by the state of a company.

Expressiveness

The web is a truly expressive platform. Check out Tweepmap by Rob Hawkes. This is a live collation of tweets from all over the world. The tools used to build it are out there all for free! I build games using HTML5 because they allow me hack out my ideas and then get down to seeking for feedback from users. The users don’t have to physically meet me. All they have to do is find the blog and post their comments.

Distribution

The starting image represents the various platforms on which we play games. Now the image shows 5 platforms. Imagine having to write at least 5 versions of the same program to deliver for the platforms. So lets look at how we would do it.

  1. Consoles :- This is where games found a home first. Today, in order to build games, you would need to know C++.
  2. Desktop :- Here the range of choices is wide! If you were to try to design for a Mac, then you would need to know Objective C, for PCs, you would choose between C++, Java and C# at the minimum. While for Linux, Java would be your language of choice
  3. Web :- Here the choice would be Flash. Apart from being propeitary software, you would effectively lose the Mobile Market
  4. Mobile :- Here the choices are… Too many to mention. Everyone who is anyone in the Mobile space is building a walled garden.
  5. Facebook :- Like them or hate them, they are a plaform for the distribution of game content

Now imagine a tool that can get you into 4 out of the 5 platforms with minimum code alteration. That tool is HTML5. With it I can reach every distribution platform apart from the console.

So there you have it. My reasons for using HTML5. This post would not be complete without a linking to this article featuring the results of a survey on the global spread of HTML5.

With this post, I say welcome to a new month!