It’s been almost 2 years since the release of the current generation of consoles yet, strangely, it doesn’t really feel like it has. Usually this long after a new console generation the previous one has become a ghost town, long abandoned by developers in favour of the latest and greatest hardware. However here we are 2 years later and games are still be released for the PlayStation3 and Xbox360. This isn’t just isolated to a few small titles either, pretty much every AAA title that has a cross platform release will end up support no less than 5 distinct platforms, 2 of them almost a decade old at this point. I honestly couldn’t fathom why this would be the case, that was until I followed the money.
If you head over to VGChartz’s global weekly chart and have a trawl through previous week’s sales figures you’ll begin to see what I’m talking about. Whilst we don’t have the very latest figures (you’ll have to pay them a rather large fee to get that) it’s clear that the previous generation consoles are still generating massive revenues in terms of game sales. Indeed until the end of March this year the platforms with the most game sales were previous generation consoles. It was only after then that the PS4 managed to stay at the top but it’s always been closely hounded by both the PS3 and Xbox360 for the top position ever since.
Some of the blame for this lies at the feet of the XboxOne which has unfortunately failed to pull as many people across into the current generation as its competitor has. The XboxOne sales have been about half that of PlayStation4 for some time now, a trend that doesn’t seem to be changing any time soon. This also feeds into the trend of the Xbox360 routinely outselling it’s current generation counterpart, only changing when a new release comes out. Considering how close the previous generations were in sales this disparity will continue until the majority of current Xbox360 users make the switch. How long until that happens I couldn’t tell you, but it still seems like a fair way off at this point.
Primarily though it’s due to the unprecedented longevity of the previous generation. Prior to the PS3 and the Xbox360 you could expect a new console generation every 5 years or so, with developers having fully transitioned to the new platform within a year or two afterwards. The previous generation of consoles is well past that point and that means there’s going to be a lot more more inertia in switching away from them. It’s just like what happened with Windows XP and the transition to Vista and beyond, consumers and third parties alike got comfortable with the platform and held onto it for far longer than was healthy. Thankfully the turn around rate doesn’t seem that bad when you compare it to Windows XP vs 7, but it’s still slow enough to mean that the previous generation is here to stay for some time.
The tide is turning however. Every new release sees a new wave of people upgrading their consoles in order to enjoy the latest game. Exclusives too are still proving to be a powerful motivating force for consumers, even critical flops like The Order 1886 being able to boost console sales by 10% or more. It’s going to be a far slower transition than we’re used to, I’d hazard a guess for at least another year of cross platform releases targeting previous generation, but the trends are clear. Hopefully the transition will mean more resources dedicated to actual games rather than cross platform code but I’m not holding my breath in that regard.
The defacto platform of choice for any gamer used to be the Microsoft Windows based PC however the last decade has seen that change to be some form of console. Today, whilst we’re seeing something of a resurgence in the PC market thanks in part to some good releases this year and ageing console hardware, PCs are somewhere on the order take about 5% of the video game market. If we then extrapolate from there using the fact that only about 1~2% of the PC market is Linux (although this number could be higher if restricted to gamers) then you can see why many companies have ignored it for so long, it just doesn’t make financial sense to get into it. However there’s been a few recent announcements that shows there’s an increasing amount of attention being paid to this ultra-niche and that makes for some interesting speculation.
Gaming on Linux has always been an exercise in frustration, usually due to the Windows-centric nature of the gaming industry. Back in the day Linux suffered from a lack of good driver support for modern graphics cards and this made it nearly impossible to get games running on there at an acceptable level. Once that was sorted out (whether you count binary blobs as “sorted” is up to you) there was still the issue that most games were simply not coded for Linux leaving their users with very few options. Many chose to run their games through WINE or Cedega which actually works quite well, especially for popular titles, but many where still left wanting for titles that would run natively. The Humble Indie Bundle has gone a long way to getting developers working on Linux but it’s still something of a poor cousin to the Windows Platform.
Late last year saw Valve open up beta access to Steam on Linux bringing with it some 50 odd titles to the platform. It came as little surprise that they did this considering that they did the same thing with OSX just over 2 years ago which was undoubtedly a success for them. I haven’t really heard much on it since then, mostly because none of my gamer friends run Linux, but there’s evidence to suggest that it’s going pretty well as Valve is making further bets on Linux. As it turns out their upcoming Steam Box will be running some form of Linux under the hood:
Valve’s engineer talked about their labs and that they want to change the “frustrating lack of innovation in the area of computer hardware”. He also mentioned a console launch in 2013 and that it will specifically use Linux and not Windows. Furthermore he said that Valve’s labs will reveal yet another new hardware in 2013, most likely rumored controllers and VR equipment but we can expect some new exciting stuff.
I’ll be honest and say that I really didn’t expect this even with all the bellyaching people have been doing about Windows 8. You see whilst being able to brag about 55 titles being on the platform already that’s only 2% of their current catalogue. You could argue that emulation is good enough now that all the titles could be made available through the use of WINE which is a possibility but Valve doesn’t offer that option with OSX currently so it’s unlikely to happen. Realistically unless the current developers have intentions to do a Linux release now the release of the Steam Box/Steam on Linux isn’t going to be enough to tempt them to do it, especially if they’ve already recovered their costs from PC sales.
That being said all it might take is one industry heavyweight to put their weight behind Linux to start a cascade of others doing the same. As it turns out Blizzard is doing just that with one of their titles slated for a Linux release some time this year. Blizzard has a long history with cross platform releases as they were one of the few companies to do releases for Mac OS decades ago and they’ve stated many times that they have a Linux World of Warcraft client that they’ve shied away from releasing due to support concerns. Releasing an official client for one of their games on Linux will be their way of verifying whether its worth it for them to continue doing so and should it prove successful it could be the shot in the arm that Linux needs to become a viable platform for games developers to target.
Does this mean that I’ll be switching over? Probably not as I’m a Microsoft guy at heart and I know my current platform too well to just drop it for something else (even though I do have a lot of experience with Linux). I’m very interested to see how the Steam Box is going to be positioned as it being Linux changes the idea I had in my head for it and makes Valve’s previous comments about them all the more intriguing. Whilst 2013 might not be a blockbuster year for Linux gaming it is shaping up to be the turning point where it starts to become viable.
One of my most hotly anticipated games for this year, and I know I’m not alone in this, will be Blizzard’s Diablo III. I can remember the days of the original Diablo, forging my way down into the bowels of the abandoned church and almost leaping out of my chair when the butcher growled “Aaaahhh, fresh meat!” when I grew close to him. I then went online, firing up my 33K modem (yes, that’s all I had back then) and hitting up the then fledgling Battle.Net only to be overwhelmed by other players who gifted me with unimaginable loot. I even went as far as to buy the only official expansion, Hellfire, and play that to its fullest revelling in the extended Diablo universe.
Diablo II was a completely different experience, one that was far more social for me than its predecessor. I can remember many LANs dedicated to simply creating new characters and seeing how far we could get with them before we got bored. The captivation was turned up to a whole new level however with many of us running dungeons continuously in order to get that last set item or hoping for that extremely rare drop. The expansion pack served to keep us playing for many years after the games release and I still have friends telling me of how they’ve spun it back up again just for the sheer thrill of it.
Amongst all this is one constant: the torturous strain that we put on our poor computer mice. The Diablo series can be played almost entirely using the mouse thanks to the way the game was designed, although you do still need the keyboard especially at higher difficulties. In that regard it seemed like the Diablo series was destined to PC and PC only forever more. Indeed even though Blizzard had experimented with the wild idea of putting StarCraft on the Nintendo64 they did not attempt the same thing with the Diablo series. That is up until now.
Today there are multiple sources reporting that Diablo III will indeed be coming to consoles. As Kotaku points out the writing has been on the wall for quite some time about this but today is the day when everyone has started to pay attention to the idea. Now I don’t think there’s anything about the Diablo gameplay that would prevent it from being good on a console, as opposed to StarCraft (which would be unplayable, as is any RTS on a console). Indeed the simple interface of Diablo’s past would easily lend itself well to the limited input space of the controller with few UI changes needed. What concerns most people though is the possibility that Diablo III could become consolized, ruining the experience for PC gamers.
Considering that we’re already got a beta version of Diablo III on PC it’s a safe bet that the primary platform will be the PC. Blizzard also has a staunch commitment to not launching games until their done and you can bet that if there were any hints of consolization in one of their flagship titles it’d be picked up in beta testing long before it became a retail product. Diablo III coming to consoles is a sign of the times that PC gaming is still somewhat of a minority and even titles that have their roots firmly in the PC platform still need to consider a cross platform release.
Does this mean I’ll play Diablo III on one of my consoles? I must say that I’m definitely curious but I’ve already put in my pre-order for the collector’s edition of Diablo III on the PC. Due to the tie in with Battle.Net it’s entirely possible that buying it on one platform will gain you access to another via a digital download (something Blizzard has embraced wholeheartedly) and I can definitely see myself trying it out just for comparison. For me though the PC platform will always be my primary means by which I game and I can’t deny my mouse the torturous joy that comes from a good old fashioned Diablo session.
Cross platform development is one of those things that I’ve seen done dozens of times before but rarely do I see anyone get it right. I understand the allure of doing so, heck my most creative forms of procrastination came from experimenting with these ideas, but the fact remains that more often than not they’re going to be a total waste of your time. I do have one exception to this rule however and that comes in the form of the cross-platform game engine Unity. Where other libraries promise compatibility and a wide range of functions Unity actually delivers on these with little compromise. Couple that with their ridiculously good pricing model and awesome dev environment and it’s hard to fault the product. Indeed all the shortcomings I found were, as far as I could tell, limitations of my programming expertise.
For games developers Unity offers the chance to have one code base for all platforms with only minor tweaking required once you want to deploy the project to your chosen platform. This is great because initially you can focus on one platform and then once you’ve verified your product there it doesn’t take much to port it to the new platform. It’s no surprise then that you’ll find many Unity based games in both the Apple and Android app stores. Figuring that Unity was going for all round platform domination I thought it was only a matter of time before I saw that the library would support Windows Phone 7, even though it’s still in its nascent stages.
As it turns out however that won’t be happening:
The Unity engine does not support Windows Phone 7 because of restrictions placed on Microsoft’s mobile, the CEO of Unity Technologies has said.
“But we’re looking at Windows Phone 8 and hopefully it will be easier to work on that system,” he said.
In an interview with Develop, to be published soon, Helgason explained Windows Phone 7 “is a relatively closed system so you can’t run native content, which means we can’t really support it”.
The “closed” nature that David Helgason (CEO of Unity) is referring to is the fact that if you want to put a game on the Windows Phone 7 platform you need to have coded it in either Silverlight or Microsoft’s XNA framework. Unity then approached Microsoft to see if they could get an exemption from this rule (as well as access to some private APIs which would be required for their libraries to work) however Microsoft turned them down. This means that Unity and all the games built on top of it are banned from being released on this platform, save for a full rewrite of the code. In response Unity has turned their sites towards Windows 8 which will be a lot more friendly for them thanks to the WinRT framework.
This feels like a pretty big misstep from Microsoft. Windows Phone 7 hasn’t been gaining any momentum and it’s overall smart phone market share (that includes Windows Mobile devices) has been taking quite the battering dropping to a low of 1.6%. Whilst I won’t go as far to say that Unity would be its saving grace it definitely wouldn’t hurt to have that available as an option for games developers looking to develop for the Windows Phone 7 platform. Indeed since Unity supports coding in C# I’d hazard a guess that there would be quite a few who’d be willing to give it a shot just because it would be easy for them to learn. Heck I know I did.
In reality Windows Phone 7 has a lot of other hurdle to overcome before it can be considered a serious competitor in the market but Microsoft can’t afford to throw away any potential advantage it can get. Not working with Unity only serves to damage the Windows Phone 7 platform as it has demonstrated success on every platform it’s available on. Unity developers then may have to wait for Windows 8 and the corresponding Windows Phone release before they can think about coming across onto Microsoft’s platform but I feel that may be too far off, and the damage has already been done.
The engineer in me loves looking for efficiencies. So when after the first 1.0 version of Lobaco was good enough for me to call it “done” (in the sense that the feature set for it was frozen) I started thinking about the best way in which to tackle the mobile platform which I believe will be the key in achieving the goals I set out for it. I had pretty much resigned myself to go for the iPhone first as it seems to be the best place to target for early adopter types and figured the Android version could come once Lobaco gained some traction. Still the lure of being able to develop the application once and deploy it across multiple handsets in one go made the engineer in me jump up and down with delight, leaving me little choice but to explore my options.
Long time readers will know that my most recent attempt at cross platform development came the way of Sencha and 2 weeks misplaced effort in trying to get it to work. The library itself is quite comprehensive and does a good job of emulating many of the native functions that you’d expect to see on a native iPhone application. However the problem is that performance wise it’s a total dog and would require me to undergo yet another few weeks in building a fundamental base in order to achieve the same level of productivity that I had just gained with the iPhone. Whilst I’ll still have to undergo a similar amount of effort in order to learn how to program for Android I know that the eventual application that comes out of the end of that process will be much better and worth the time invested in it.
However this wasn’t my first foray into the world of cross platform development. Way back in the beginning, long before I actually got a Macbook and Xcode, I started doing preliminary research into cross platform libraries. After getting thoroughly confused with a few code examples in Objective-C a friend suggested that I have a look at the MonoTouch framework which would allow me to leverage my existing C# skills on the iPhone. The problem there wasn’t so much the language as the paradigm I was operating under and whilst using C# might’ve helped to ease me into it without a fundamental understanding of how things work on the iPhone I would’ve gone through just as much trouble in order to use that framework, without the benefits of coding natively. Not to mention being out $100 for the pleasure and still having to buy a Mac device in order to be able to use it.
The problem I find with many cross platform technologies is that they have the unfortunate problem of making compromises when it comes to conflicts between platforms. Sencha, for all its goodness, has decided to look like an iPhone application. This is great, on the iPhone, but for any other device it’s going to be a drastic shift away from the experience the user is expecting. Even cross platform libraries that generate native code will still suffer from destructive compromises because of the different ways in which the major smartphone OSs go about their tasks. Thus you either constrain yourself with limited functionality or you have to cater for those special usage type scenarios, negating the power of the framework you’re using. Cross platform libraries are fantastic in some use cases, but their applicability is really quite limited.
If you’re looking to target multiple platforms I still believe it’s best to go for the native option, even if the development investment will be much higher. Realistically choosing a single platform to begin with isn’t a bad idea with both Android and iPhone (although Android is probably your best bet) being quite viable to test if the market will respond well to an idea. If your idea has legs then you can take the time to invest in some of the other platforms, delivering a much better end user experience. Cross platform technologies might work for some ideas but unless you’re doing nothing above the rudimentary you’re much better served by going native.
6 months ago saw the announcement of Microsoft’s attempt to remain relevant in the smartphone space: Windows Phone 7. At the time I poked fun at it the fact that it was basically Microsoft’s interpretation of what the iPhone would’ve looked like if they made it but realised that the platform had potential. If there’s one thing Microsoft is good at its throwing money at a problem until they eventually get it right, like with the Xbox (are they even making money on the consoles yet?) and Windows Phone 7 seemed to be one of those kinds of problems. One thing that it did have going for it was the fact that a Windows developer like me could code for the device without reskilling too much and that’s where the real power is.
As much fun as it is to learn a new platform it’s still a giant barrier to building an application on a new platform. I haven’t done any development on any mobile clients yet purely because the two major ones I want to target use a language that I’m not familiar with. Sure there are cross platform libraries that might help to ease the learning curve but unfortunately they’ve been hamstrung by Apple’s restrictions and aren’t fully compatible with my IDE of choice, Visual Studio. So for any enterprising developer looking to build a mobile application there’s always an initial hump to get over in order to be an effective developer on the platform. That or you shell out some dollars to get someone else to do it for you, but not everyone can afford that.
If you were just to look at the number of developers working on any platform, whether it was mobile/desktop/web/whatever, the largest group would arguably be those working on Windows. With the number of desktops, laptops and other devices running some form of Windows exceeding 80% of the total computers worldwide the number of developers working on that platform far outnumbers that of any other. Microsoft knows this and whilst anti-trust legislation will prevent them from using their current monopoly on the desktop to leverage into the mobile space that won’t stop them from making it damn attractive for developers to gravitate to the Windows Phone 7 platform.
Now I’ve been a developer for a while, about 6 years as an amateur and maybe half that as being paid to do it as part and parcel of my usual system admin responsibilities. In that time I’ve used my share of environments, languages and platforms and out of the lot the one that I keep coming back to is Visual Studio. Whilst some might hate me for this next comment Microsoft’s tools just make coding things so damned easy to the point where there’s nothing I don’t think I’m a tutorial away from being able to do myself. Microsoft knows this and the past few months have seen them trying to lure their developers over to the mobile space with things like free development environments only seeking to charge you once you’re sign up for their marketplace.
They just don’t stop there either. Microsoft made headlines about a month ago when they gave each and every one of their employees a new WP7 phone. It was however a veiled gift as it came with the instructions that not only should they evangelize them amongst their friends but also develop apps for them in their spare time. With Microsoft having 89,000 employees this is no small number of handsets and whilst not all of them are developers (I’d hazard a guess at 30~40%) there’s still enough of them there to have their numbers brushing up against both the iPhone and Android platforms. That doesn’t even include potential developers outside Microsoft who might just start developing for WP7 if it takes off merely because it would be easy to do so. Realistically if Microsoft can harness the power of their developer base in the same way Apple did with theirs they could really pull themselves around in the mobile space, maybe even turning it into a 3 horse race.
The question is of course whether or not the teaming masses of Windows developers will find any point in developing for the mobile space. It can be argued that many desktop applications, where the vast majority of Windows application developers reside, can’t be transitioned onto a mobile platform in any useful way. Realistically if any developer was looking to tackle the mobile market they would have done so already and consequently have substantial investment in their platform of choice. Still the ease at which WP7 applications can be developed using existing skills and knowledge means that the platform might just become dominate because it brings developers to the mobile space that would have never considered it before. Since it can be argued that Windows Mobile is arguably the same thing as WP7 (just not as sexy) it’s going to take a bit more wooing from Microsoft to draw those reluctant developers over and in the lead up to the first WP7 phone hitting the markets will show them doing just that.
Personally I’m still excited about it. I’ve tried to develop simple applications for Windows Mobile before and it was always a royal pain in the ass. The new Windows Presentation Framework based interface for WP7 means that developing code for them will be that much easier. Additionally the integration with existing code bases will mean that the kinds of functionality that would usually have to be developed for the specific platform can now be leveraged with minor modifications, something that I know will at least have developers playing around with WP7.
And that is what has the potential to make WP7 the dominant player in the mobile space.
Choosing a target platform when you develop an application is a big decision as your choice will influence many design decisions, make certain tasks easier and relegate some things to the realm of the impossible. For those of us with a managerial bent this dilemma is usually solved with a simple cost/benefit analysis, I.E. which of these platforms can net us the greatest revenue for the smallest cost? Usually this comes down to how large a particular user base of a platform is (although that’s not everything, as I’ve pointed out) as that translates into the largest number of potential sales. However the advent of application distribution channels such as the App Store and Xbox LIVE Marketplace has complicated this metric somewhat, especially for those developers making it on their own.
For large development houses the biggest market still appears to be the way that many of them gauge which platform to target first. One of the greatest examples of this is Call of Duty: Modern Warfare 2 as it owes its success to its beginnings on the PC. However the lack of dedicated servers angered the PC crowd who thought that their omission was a travesty against them and that their outrage was enough to sway Infinity Ward to change their minds. However if you took a look at the sales numbers PC copies of the game accounted for a very small percentageof their overall sales putting that platform squarely in the minority. The developers rightly (from a managerial perspective) ignored the complaints as the additional work to develop the requested features would have far outweighed the potential sales that they could have derived. Still they catered to 3 platforms simultaneously as the opportunity cost for cross development for them was low thanks mostly to code portability between the Xbox and PC.
When you switch over to the other end of the spectrum the cost vs benefit analysis takes on a different form. You see in large organisations you have the benefit of being able to hire on people with the various skill sets required to develop a product for a targetted platform. If you’re lashing out on your own you are faced with the choice of either developing for what you know or training yourself up on the platform that you wish to target. Whilst most skilled developers won’t take long to become proficient when you’re looking to generate income every moment you spend not developing product is a sunk cost. Logic then dictates that you stay with what you know first before attempting to branch out into other areas lest you waste a significant amount of time developing a product that doesn’t suit your target platform.
You can see this kind of behaviour quite clearly in the mobile development space with a mere 2.6% of Android and iPhone developers having it both ways:
The answer (approximated in the graphic below) surprised us: of the nearly 55,000 mobile developers in our database over 1,000 (1,412, to be exact) had already publishedapps on both iOS and Android. This represents more than 3% of the published iOS developer population, and nearly 15% of the published Android developer group.
Despite the impressive total, we worried that it would be too easy for the fanboys on both sides of the aisle to dismiss these numbers as a crackpot minority. So we dug a little deeper, using our AppRank methodology to stack rank this cross-platform developer group based on the total volume and quality of coverage they’d received among the leading tech blogs worldwide.
Anecdotally the pattern I’ve seen is that most cross platform applications actually have their roots in a single platform. Take for instance the indy smash hit Braidwhich made its debut on the XBox LIVE platform. Whilst it was initially planned for a Windows release it took quite a while for it to make it to that platform. It has also made it onto the PS3 but not until long after it had proven success on 2 other platforms. My inkling is then that many of these cross platform developers started out as single platformers and as they had success in one they decided it was worth their time to attempt another one. Few, if any at all, would attempt to do more than one platform right from the get go.
So the question remains, is cross platform development actually worth it? For people like me probably not initially. The additional work to create a product for multiple platform not only increases the initial amount of work required it will also increase the on-going maintenance time for each of the individual versions. It seems like the best idea is to write and polish your application on your platform of choice and then, should you find success, begin the process of porting it over. This goes double if you’re looking to make some cash off a platform as the sunk costs of development and reskilling are one of the quickest ways to kill a potential revenue stream before it’s fully realized.