VR in 2014 = Mobile Games in 2002?

The first VRLA Meetup last week was awesome.  The performance capture studio at Digital Domain in Marina Del Rey hosted a series of impressive demos as well as live presentations on the current state and future of VR applications.  The venue could only hold 100 people, but 300 registered.  Mobs of interested VR consumers, developers, and producers had to be turned away at the door.

VRLA winding down. (Photo via John Root)

VRLA winding down. (Photo via John Root)

After this event, it struck me that VR in 2014 is reminiscent of mobile in the early 2000s.  Back in 2002 I attended the first GDC Mobile Gaming Summit.  It was at a jam-packed lecture hall in San Jose where presenters demoed the latest in technology and gave their thoughts on where the industry was heading.

At that point, mobile phone hardware was clunky and primitive.  Most phones were still sporting 80×50 monochrome screens with maybe 100k of RAM available for programs to run.  Even if you were ‘lucky’ enough to have one of these devices, it was nearly impossible to figure out how to download games.

In 2002 almost nobody knew how to monetize mobile games.  The hardware could barely run games anyway.  Yet, these people knew it was going to be a big deal.  The room was filled with excitement and anything could happen.

Since then, mobile gaming has created a huge new audience for games that has disrupted the traditional game industry, forcing a shift in how console games are designed and delivered.  Now mobile gaming is obvious, but back in 2002 there were many naysayers–despite the fact that in Japan iMode had been successfully delivering mobile games since the late ‘90s.

To me, VR in its current state feels the same way.  The hardware is huge and clumsy.  There is some precedent for VR applications stretching way back to the 1990s with Virtuality and Battletech Centers.  And there’s a lot of consumer interest–evidenced by all the successful VR and AR hardware kickstarters in addition to the attendance of VRLA this month.

The top question on everyone’s mind is “how do I make money in VR?”  This was the same question asked by many about mobile in 2002.  Back then, the path was more obvious.  Qualcomm’s BREW and Japan’s iMode already had established billing models for mobile content.  Right now, it’s unknown who will pay for VR experiences and what form they will take. A lot of this is a hardware question. Nobody really knows what the iPhone of wearable gaming will be like–but when it arrives, it will be revolutionary.

These definitely are uncertain and exciting times for this new medium–which makes it much more fun to develop for than established platforms.

From Bits to Atoms: Creating A Game In The Physical World

Some of you may recall last year’s post about 3D printing and my general disappointment with consumer-grade additive manufacturing technology. This was the start of my year-long quest to turn bits into atoms. Since that time there has been much progress in the technology and I’ve learned a lot about manufacturing. But first, a little about why I’m doing this, and my new project titled: Ether Drift.

Ether Drift AR App

A little over a year ago, I met a small team of developers who had a jaw-dropping trailer for a property they tried to get funded as a AAA console game. After failing to get the game off the ground it was mothballed until I accidentally saw their video one fateful afternoon.

With the incredible success of wargaming miniatures and miniature-based board game campaigns on Kickstarter, I thought one way to launch this awesome concept would be to turn the existing game assets into figurines. These toys would work with an augmented reality app that introduces the world and the characters as well as light gameplay elements. This would be a way to gauge interest in the property before going ahead with a full game production.

A lot of this was based on my erroneous assumption that I could just 3D print game models and ship them as toys. I really knew nothing about manufacturing. Vague memories of Ed Fries’ 3D printing service that made figurines out of World of Warcraft avatars guided my first steps.

3D printers are great prototyping tools. Still, printing the existing game model took over 20 hours and cost hundreds of dollars in materials and machine time. Plus, 3D prints are fragile and require a lot of hand-finishing to smooth out. When manufacturing in quantity, you need to go back to old-school molding.

You can 3D print just about any shape, but molding and casting has strict limitations. You have to minimize undercut by breaking the model up into smaller pieces that can be molded and assembled. The game model I printed out was way too complicated to be broken down into a manageable set of parts.

Most of these little bits on the back and underside would have to be individual molded parts to be re-assembled later--An expensive process!

Most of these little bits on the back and underside would have to be individual molded parts to be re-assembled later–An expensive process!

So I scrapped the idea of using an existing game property. Instead, I developed an entirely new production process. I now create new characters from scratch that are designed to be molded. This starts as a high detail 3D model that is printed out in parts that molds are made from. Then, I have that 3D model turned into something that can be textured and rigged for Unity3D. There are some sacrifices made in character design since the more pieces there are, the more expensive it is to manufacture. Same goes for the painting process–the more detailed the game texture is, the more costly it becomes to duplicate in paint on a plastic toy.

We're working on getting a simple paint job that matches the in-game texture.

We’re working on getting a simple paint job that matches the in-game texture.

So, what is Ether Drift? In short: it’s Skylanders for nerds. I love the concept of Skylanders–but, grown adult geeks like toys too. The first version of this project features a limited set of figures and an augmented reality companion app.

The app uses augmented reality trading cards packed with each figure to display your toy in real-time 3D as well as allowing you to use your characters with a simple card battle game. I’m using Qualcomm’s Vuforia for this feature–the gold standard in AR.

The app lets you add characters to your collection via a unique code on the card. These characters will be available in the eventual Ether Drift game, as well as others. I’ve secured a deal to have these characters available in at least one other game.

If you are building a new IP today, it’s extremely important to think about your physical goods strategy. Smart indies have already figured this out. The workflow I created for physical to digital can be applied to any IP, but planning it in advance can make the process much simpler.

In essence, I’m financing the development of a new IP by selling individual assets as toys while it is being built. For me, it’s also a throwback to the days before everything was licensed from movies or comic books and toy store shelves were stocked with all kinds of crazy stuff. Will it work? We’ll see next month! I am planning a Kickstarter for the first series in mid-March. Stay Tuned to the Ether Drift site, Facebook page, or Twitter account. Selling atoms instead of bits is totally new ground for me. I’m open to all feedback on the project, as well as people who want to collaborate.

How to survive the mobile gaming apocalypse

I was listening to the latest Walled Garden podcast and towards the end they stopped just short of stating what many developers I talk to have been saying–mobile gaming is dead.

Ok, not actually dead. After all, mobile gaming revenue is higher than it’s ever been, and mobile consumption of everything is eating the planet. However, mobile gaming is completely dead as a business model for independent developers and undercapitalized startups.

IAP has become so dominant that there’s really only one somewhat reproducible way to make money in the AppStore: make a hamster wheel f2p game in a handful of established genres and spend tens of thousands of dollars a day on user acquisition to drive traffic to it. Despite many bold experiments, the charts increasingly bear this out.

Republique

This means that some companies with top charting mobile games aren’t actually making a profit as UA costs can eat up most of the revenue. Surely this will produce a shakeout and consolidation in 2014. This is similar to what happened to Facebook games circa 2010 causing a mass exodus to mobile.

Now that mobile is dead, where should you escape to? There are several options.

PC

The PC, and more specifically Steam, remains the platform of choice for those who actually want to charge money for content. There’s a large market for premium games and Steam has loosened their gate with the advent of Greenlight. Some prominent developers have been abandoning mobile for PC with their new projects. Despite PC sales declining in the face of tablets, it makes sense. This is where the paying customers are.

Consoles

A lot has been written here about the impending demise of consoles, but Sony and Microsoft managed to change up their business model and product strategy enough to have early success with both the PS4 and XBOX One. One of the big changes has been the thawing of the gated ecosystem and allowing independent developers to self-publish. Oh yeah, and on the Wii U also.

Next generation console owners are starved for content. There will be many independent successes over the next few years before the channel becomes completely saturated.

VR

On one hand VR is merely a peripheral for existing games, on the other it’s part of an entirely new category of wearable computing and an emerging platform. Oculus Rift is the clear leader with a huge round of investment and development kits widespread. However a glut of VR headsets is on the horizon.

Oculus is building an ecosystem out of their device, but VR content can be distributed through any PC gaming channel. Although, supporting every single headset may be a nightmare for developers–isn’t it time for some kind of standard VR API?

Board games

Board games are a cottage industry yet a hot category on Kickstarter. As an example, Sandy Peteresen’s Cuthulu World Combat iOS game Kickstarter failed miserably, but when re-pitched as a board game, it blew past its funding goal. Going from digital to physical presents a lot of new challenges for developers, but does have a dedicated fan base of paying customers. Plus, you can’t pirate a board game!

Facebook / Web

Facebook games ‘died’ in 2010, but are ironically becoming an increasingly common alternative platform for mobile developers. Especially if you have a working web client already, why not put it on Facebook? The problem is the audience is decidedly non-hardcore. Facebook games can still make some money, but for a very specific audience. However, for hardcore games, the open web still remains a viable place to find an audience of paying gamers. Kongregate proves this.

What needs to change in mobile?

The supremacy of f2p and the very few options for user acquisition make the momentum towards free and the companies with enough money to compete in the mobile UA wars insurmountable. Apple could make some changes to the App Store to help support premium games and other alternative business models, however there really isn’t any incentive to do so–Either way, Apple sells phones. It’s difficult to foresee anything but the continuing dominance of f2p and mega-publishers on mobile in 2014. If you have a ton of cash and resources, solving this problem is hard, and thus very lucrative. For the rest of us, plan your strategy accordingly.

Game Developers: Don’t Compete, Disrupt.

In the old boxed retail model of games, publishers often waited for an “off year” to capture a hit title’s audience. For instance, a publisher would release a competing open world game the year after a Grand Theft Auto installment to monetize GTA fans who are looking for a similar experience. This successful strategy spawned many hit original properties despite its “fast follow” basis.

Today’s hit games such as League of Legends are constantly updated services and thus never have an “off year.” As discussed in a previous post, we’re in a winner-take-all game economy. Top games consume all of the time and money of their players.

It’s exceedingly expensive to go toe-to-toe with a leading game-as-a-service. Not only do you have to compete with the top game’s deluge of content and social network, but you must overcome the switching cost users bear to move to a new game. A player could have thousands of dollars invested in his League of Legends character. Now you want him to start all over on your new, unproven MOBA?

Competition is possible, but only with deep pockets. The only company posing a distant threat to League of Legends is Valve with DOTA2. Not only have they made an excellent game, but are lavishing massive development and marketing budgets to compete with the frontrunner.

What can you do if you’re not among the most financially successful developers in the world? Don’t compete, disrupt.

READ THIS BOOK.

As described in my bible, Clayton Christensen’s Innovator’s Dilemma, disruptive innovation typically arrives in a form that’s lower quality than the established player, but cheaper or more convenient to use for a low-end customer.

This low end customer is not as profitable, and thus not very interesting to big companies. The disruptive product’s quality improves steadily. By the time the threat is noticed by the incumbent, it’s too late. The disruptive competitor is attracting the old guard’s high-end customers.

A modern example might be what the tablet did to the netbook and is now apparently doing to notebooks.

How does one develop a game disruptive to the established players? Is it even possible to do so? After all, there are flaws when you apply the low-end disruption theory to consumer products. Let’s look at few vectors of disruption and how they may work in games.

Cost

World of Warcraft’s plunging subscriber numbers may be showing that Blizzard has fallen victim to Innovator’s Dilemma in the form of free2play competition.

F2p originally meant lower quality, lower commitment, and (supposedly) cheaper-to-play MMOs. Now, all major releases from Western companies inevitably become f2p. The quality bar has risen to where it’s possible to match or surpass the incumbent combined with a dramatically different business model.

Convenience

How about making a game more convenient to access? One way developers are trying is by bringing established PC f2p genres to mobile. The idea is that by making a MOBA simple to play on a tablet, it’s possible to capture a segment of the desktop customer. This ignores the fact that tablet-owning hardcore LoL players are still looking for an experience uniquely crafted for mobile–Not simply a long-session MOBA plopped into an iPad.

The problem when applying business model advice to the games industry is that most are based around solving a problem. The only problem games (and entertainment in general) may solve is boredom. When you aren’t solving a problem or “pain point”, you are selling based on other emotional qualities such a branding or user experience.

Lessons can be applied–but perhaps not literally. Which is fine. Slavishly following any business model or development methodology ends up in the creation of a process cult.

Facebook: The Next Generation Game Publisher

Upon the eve of Casual Connect one of the big announcements was Facebook becoming a mobile games publisher. Much like how the launch of Facebook’s mobile ad network went largely unnoticed only to become a huge deal later, I suspect we may see this move in a similar light in the near future.

View from the podium before my Casual Connect event.

View from the podium before my Casual Connect event.

A social network like Facebook directly publishing apps isn’t without precedent. Facebook took their lead from Asian mobile social networks like Japan’s LINE and Korea’s Kakao Talk. Both extended their messaging services to include mobile games that use their respective social network for viral reach in ways similar to the bad old days of Farmville spam.

Both LINE and Kakao Talk have been able to send games to the top of the charts in their native countries netting big revenue. With increasing adoption of messaging applications in the West, this trend may continue here.

In the boxed software era you had few options other than to go through a publisher for distribution. Publishers had guaranteed shelf space at national retailers. Now that software doesn’t exist in boxes, there’s no need for shelves. As we’ve discussed before, users are the new shelf space.

Mobile publishers like GREE and DeNA pride themselves on having a huge audience to advertise games to. This usually involves blowing lots of money buying users through ads–many of which show up on Facebook. Pretty much this is the only service mobile publishers provide.

If user acquisition is all a mobile game publisher does, why not cut out the middleman?

Facebook can acquire users much cheaper than GREE or DeNA–they own the network. In fact, this is a major reason why GREE and DeNA make so much money in Japan. Especially in the feature phone era, they operated mobile social networks they also published their own games on.

Perhaps Facebook did the math and figured out that a cut of an app’s revenue in exchange for premium placement of ads is a profitable exchange. Instead of having an audience of 30-40 million users as DeNA’s mobage network does, Facebook has over 800 million mobile users.

In the past, Facebook has proven they can make a game popular–at least for a short time. It’s up for the game developer to create a game that lasts. Given the Chaotic Evil alignment of modern game publishers, I’d much rather make this deal with Facebook* than with one of them.

* Oh, I’d take this deal with Twitter too. They’ve been able to get Vine to the top of the App Store charts all year. Imagine what they could do if they published mobile games!

Paymium: Walking Away From Free2Play

Many small mobile game developers I talk with are considering abandoning pure Free2Play in favor of paid apps with in-app-purchases–AKA “paymium”. A great example of this is on the latest Walled Garden podcast featuring Plague Inc. creator, James Vaughan.

At first, Plague Inc. was a simple premium app. After quickly building a rabid following, he added purchasable items that can otherwise be earned in-game. This has been an extremely successful business model for Plague, Inc. and many other top games from the likes of Rovio and Halfbrick.

James’ sound reasoning for his use of Paymium is that he dislikes games purely designed around IAP and thus made a game he wanted to play. Making small games is a very personal process. If you don’t like what you’re making it’s not going to be good.

Another reason developers are considering this approach is that the top free download charts on iOS are completely bought and sold. If you look at any game in the top 10 free downloads, it’s safe to assume that spot is paid for with heavy advertising spends along with other somewhat underhanded tactics. The latter may get you bounced from the App Store, but it doesn’t stop most publishers from finding a way.

The paid charts are theoretically more honest. Because you have to tack on the price of the app along with whatever you pay for guaranteed downloads, paid chart manipulation is more expensive. Yet, this may still be common considering how large advertising budgets are for the top mobile games.

A great new paymium example is Contra: Evolution, a clever mobile remake of Konami’s NES classic from PunchBox. The game costs 99 cents on iPhone and $2.99 on iPad. Both versions feature a plethora of in-app-purchases.

Contra has been floating around the top of the paid charts for a while–although still scraping the bottom of the top grossing. This illustrates the depressing reality of premium apps. Even a top 5 paid download barely registers on the grossing charts. Yet, any indie developer would kill for the type of revenue Contra is making.

What did Contra do right? The following is a bunch of hand-wavey, rear-view-mirror driving. It could all be true. Or the game’s success could purely be fictional and entirely paid for by outrageous ad spends and thus this entire article is nonsense. Anyway…

First, there’s the brand. Brands generally aren’t worth much in mobile. If you look at the top apps, the overwhelming majority are original IPs. Yet, Contra has strong awareness among retro gaming enthusiasts. Some brands matter in mobile.

Secondly, the game is good. Over a decade since the last reboot, PunchBox went to the origins of the series with a remake of a classic that is competitive with current mobile games. As we’ve seen in Predictably Irrational, it’s extremely difficult for a paid product to compete against free at any quality level. PunchBox pulled it off

Finally, people who have paid for your app are already invested. Theoretically, they are more likely to spend again. Contra’s unimpressive top grossing rank may not actually prove this out. However, mega-hits like Angry Birds and Jetpack Joyride have used paymium to great success. Contra’s low grossing rank may be due to poor monetization design instead of a flawed model.

A few years ago I would have laughed if you suggested launching a premium app. Now I’m not so sure. The new rule is, there is no rule about monetization. F2P isn’t one size fits all–but, how do you actually find what does fit?

Feeling Ripped Off in Ravensword

If you’ve read my previous review of the Ouya, you may be familiar with my strange obsession with Ravensword: Shadowlands. It’s a hilariously inept Skyrim clone for phones, tablets, and the Ouya. The game seems like they went down the list of Skyrim features and implemented a bare bones version of each one. From horseback riding to guild systems, they all exist–but are laughably basic. Still, I must have dumped over 15 hours into this saga, exploring its ambitious yet flawed world.

One interesting element of Ravensword is the business model. It’s essentially premium, with an up-front cost to buy the game once the demo period is over. However, at any time you can buy gold, experience, gems, health restores, and talent points with real money. It’s probably the first single player RPG I’ve seen with such a business model.

Early in the game I hit a difficulty brick wall. Monsters were way too strong and there seemed to be no way to grind for gold or XP. I decided to make a one-time purchase of 5,000 gold pieces for $5. I then bought the finest equipment the shops in South Aven had to offer and ventured out into the wilderness, tearing through monsters that were previously kicking my ass.

Maybe 10 minutes after making this purchase, I found a chest containing a sword better than the one I spent the equivalent of 2 real-world dollars on. I felt ripped off. It’s the in-game equivalent of buying the latest iPhone a few days before they announce a new model.

This made me constantly suspicious of the game. Every time I hit a tough point, I thought about if it was some kind of game design sales funnel to get me to spend money. If there was any kind of competent story to be immersed in, it probably would have taken me out of the game, too.

As I stated in my Kotaku piece earlier this year, f2p game designs are still too primitive to carry a single player campaign. Ravensword is a prime example. I salute the developer for making a stab at merging a single player narrative with f2p economies. Yet, scattering purchases throughout a quest makes you second guess every design choice to the point of completely breaking any sense of immersion. Issues like this make me think it’s impossible to reconcile the design principles of f2p monetization and an epic single player experience. Yet, Ravensword is only the tip of the iceberg. Hopefully we’ll see some stronger attempts at this problem soon.

Displaying Maps in Unity3D

There have been a few recent examples of real-world maps displayed in Unity3D apps. The first one I noticed was the playfield in the infamous Halo 4 iPhone app that came out late last year. For unknown reasons, I was really into this game for a few months. I hung around my local 7-11 scanning bags of Doritos so much that I thought I was going to get arrested for shoplifting. Eventually this obsession led to me wanting to duplicate the map display used in the game. Here’s how I did it.

Google Maps Plug-In

Naturally the first place I looked was the Asset Store. It turns out there is a free Google Maps plug-in available. The only catch is that it requires UniWeb to work. UniWeb lets you call REST APIs and generally have more control over HTTP requests than Unity’s own WWW class allows. It can be a necessity if you’re using REST API calls but it restricts your code stripping options. This will bump up your binary size.

This asset’s sample scene works flawlessly. It downloads a map from the Google Static Map API and textures it on a cube. The code is clean and well documented, featuring the ability to request paths and markers to be added to the static map. Most attributes can be tweaked through the inspector–such as map resolution, location, etc.

I made a lot of changes to this package. I really wish it was open source. Free code assets really should be in most cases. I will try to isolate my changes into another C# file and post a Gist.

The first change I made was to add support for themed Static Maps. If you look at this wizard, you can see that there are a lot of styling options. This appears to be the same technique used in the Halo 4 app because with the right set of options you can get something that looks really close. Supporting styling in Unity3D is just a simple act of appending the style parameters to the end of the URL used by the Google Maps plug-in.

Displaying Markers in 3D

The next thing I wanted to do is display the markers as 3D objects on top of the map instead of having them inside the texture itself. This requires 3 steps:

  1. Determine where the markers are in pixel coordinates in the static map texture.
  2. Calculate the UV coordinate of the pixel coordinate.
  3. Calculate the world coordinate of the texel the UV coordinate resides at.

Step 1 can be tricky. You have to project the latitude and longitude of the marker with the Mercator projection Google Maps uses to get the pixel coordinate. Luckily, this guy already did it in PHP to create image maps from static maps. I adapted this code to C# and it works perfectly. You can grab the Google Maps utility functions here. (All this great free code on the net is making me lazy–but I digress)

Step 2 is easy. This code snippet does the trick. The only catch is that you have to flip the V so that it matches with how Unity uses UV coordinates.

Step 3 is also tricky. However, someone with much better math skills than I wrote a JavaScript method to compute the world coordinate from a UV coordinate. It searches through each triangle in the mesh and sees if the UV coordinate is contained inside it. If so, it then calculates the resultant world coordinate. The key to using this is to put the static map on a plane (the default scene in the plug-in uses a cube) and use the C# version of this function I wrote here.

3D objects floating over marker locations on a Google Static Map.

3D objects floating over marker locations on a Google Static Map.

Here’s the end result–in this case it’s a display for the Donut Dazzler prototype. 3D donuts are floating over real-world donut shops and cupcakes over cupcake bakeries. I got the locations from the Foursquare API. This is quite easy to do using UniWeb.

Slippy Maps

The aforementioned technique works great if you just want a static map to display stuff around the user’s current location. What if you want to be able to scroll around and see more map tiles, just like Google Maps when you move around with your mouse? This is called a Slippy Map. Slippy Maps are much more elaborate–they require dynamically downloading map tiles and stitching them together as the user moves around the world.

Thankfully Jonathan Derrough wrote an amazing free Slippy Map implementation for Unity3D. It really is fantastic. It displays markers in 3D and pulls map tiles from multiple sources–including OpenStreetMap and Bing/VirtualEarth. It doesn’t use Google Maps because of possible TOS violations.

I couldn’t find a way to style map tiles like Google Static Maps can. So the end result was impressive but kind of ugly. It is possible with OpenStreetMap to run your own tile server and run a custom renderer to draw styled tiles. I suspect that’s how Rescue Rush styles their OpenStreetMap tiles–unless they are doing some image processing on the client.

Either Or

For my prototype I ended up using Google Static Maps because Slippy Maps were overkill. Also, pulling tiles down from the servers seemed much slower than grabbing a single static map. I suppose I could add some tile caching, but in the end static maps worked fine for my purposes.

Keep in mind that Google Maps has some pretty fierce API usage costs. If your app goes viral, you will likely be on the hook for a huge bill. Which is why it might be worth figuring out how to style free OpenStreetMap tiles.

Unity3D 4 Pet Peeves

I’ve been updating my older apps to use the newly released Unity3D 4 engine, as well as starting an entirely new project. I haven’t used many of Unity3D 4’s new features yet, but I figured this is as good a time as any to list a few of my pet peeves with Unity3D 4 as I did with Unity3D 3 a few years back.

It’s time Unity3D had a package manager.

Unity3D plug-ins and assets purchased from the Asset Store are invaluable. It’s becoming the most important feature that makes Unity3D the superior choice. However, managing projects with multiple plug-ins is can be a nightmare. A lot of this is how Unity3D handles file deletions.

If you click the “update” button to overwrite an existing plug-in with the latest version from the Asset Store, it may wreak havoc upon your entire project. Unity3D’s file hashing system will sometimes fail to overwrite files with the same name, even if you are importing a newer one. You’ll end up with a mess of old and new plug-in files causing chaos and mayhem. The only way to prevent this is to manually find delete all the old plug-in files before updating with the latest version.

Not to mention the fact that native plug-ins either require you to manually setup your own XCode project with external libraries or have their own proprietary scripts that edit your XCode project. Unity3D should provide an API and package manager that lets plug-ins forcibly delete and update their own files as well as modify settings in the XCode project Unity3D generates.

Let me import files with arbitrary extensions.

A minor annoyance is how Unity3D will only accept files with specific extensions in your project. If you want a custom binary data file you HAVE to give it the txt extension. It’s the only way you can drag the file in to the project. Unity3D should allow you to import files with any extension you want, but provide a method in the AssetPostprocessor API to be called when an unknown file extension is detected.

Where’s the GUI?

Come on now. It’s 2013. The new GUI has been “coming soon” for years. Unity hired the NGUI guy, which leads me to believe the mythical Unity3D 4 GUI is merely the stuff of legends and fantasies. I like NGUI but I’m really looking forward to an official solution from Unity. Although I’m not looking forward to re-writing all my GUIs once it arrives. Let’s just get it over with. Bring it on.

Monodevelop sucks.

My god. Monodevelop sucks. Lots of people use other text editors for code, but you still can’t avoid touching Monodevelop when it comes to debugging on OSX. I’m sure it can be whipped into shape with a minor overhaul, but it’s been awful for so long perhaps this is unlikely. Aside from the crashes and interface weirdness, how much human productivity has been destroyed waiting for Monodevelop to reload the solution every time so much as a single file has been moved to a different folder?

Is it time to update Mono?

While we’re at it, Mono recently updated to C# 5.0. I’m not sure if this is a big performance drag or not, but I’d love to see Unity3D’s Mono implementation updated to the latest. There are some C# 5.0 features I’ve been dying to use in Unity3D.

Tough Love

Don’t take it personally, Unity3D is still my engine of choice. This list of annoyances is pretty minor compared to previous ones. Every year, Unity gives me fewer and fewer things to whine about. It seems competing solutions are having trouble keeping up.

Native Code is Dead

Although Android has a larger market share when you count it by pure number of devices and users, iOS still dominates monetization. Research I did earlier this year about apathetic Android users still rings true. However, vast improvements in Android as an OS and Google Play as a way to monetize apps are changing this. Not to mention changes to the new iOS 6 App Store are making app discovery even more difficult on Apple devices. A lot of developers are grumbling about their fortunes on iOS and are looking elsewhere.

Platforms are volatile. Five years ago, Facebook was the ultimate destination for game developers. Now it’s a ghost town. iOS is the hot ticket now, but Android is becoming increasingly competitive. As a developer you need to be prepared to move platforms in an instant. For this reason, native code is dead.

Using a solution such as Unity3D, Flash, or HTML5 allows you to easily move apps from one device to another. Or, from mobile to the Web. Or, from Web to desktop. You get the idea. It’s true that each one of these solutions has tradeoffs in features or performance to accomplish frictionless cross-platform porting. However, most studios can’t afford to double their engineering staff to multiply the amount of platforms they deploy on.

If you’re starting a new project from scratch, you have to consider your cross-platform options:

Unity3D

As one of the (very few) detractors said of my recent GDCO 2012 presentation on Unity3D: “This guy was a bigger Unity fan-boy than the company would have been.” It’s true! I am a self-declared Unity3D zealot. My experience moving between platforms has been incredibly easy. You can check this older post on the process I went through to bring Brick Buddies to Android. Unity3D has issues, but it’s the best solution I’ve found yet.

Corona

I’ve not used Corona myself, but did research it a bit when deciding which platform to hang my hat on. I know other developers who have created very successful apps with it. The major drawbacks are it uses Lua as its scripting language and it still doesn’t allow native code extensions. Yeah, I know I said native was dead–but not totally dead. I occasionally have to write native code plug-ins for Unity3D to access parts of a platform’s API that aren’t abstracted in Unity itself. This is a critical feature. Also, Corona can’t be used on the web or desktop platforms.

Flash

Flash has a tragic branding problem. The declaration of mobile Flash’s death doesn’t mean Flash is dead on mobile. This means the browser plug-in on Android is defunct. Good riddance. Flash made the mobile browsing experience on Android unusable.

Adobe has stepped their game up with Flash’s iOS and Android exporters. The packager allows Flash projects to be exported as apps on the target device. Flash’s CS5 exporter was atrocious, but I’ve seen some impressive work with the latest version. Flash even supports native code extensions. Adobe’s extortionate demands for revenue share mean Flash is out of the running for me if I intend to use their more advanced features. Otherwise, it is a superior option over Corona.

HTML5

For game development, HTML5 is insane. If you really want to give it a shot, there are some relatively performant libraries such as impact.js that might help you out. I don’t recommend it. HTML5 isn’t much of a standard, needing a lot of workarounds for various browsers. Not to mention its horrible performance on mobile browsers. You just can’t win.

For non-game GUI-based apps (like Yelp or Evernote) HTML5 makes a lot of sense. PhoneGap/Cordova makes this possible by providing a framework for running HTML5/CSS/JS based applications inside a mobile web view and packaged as a native app. Coming from a native code background, constructing interfaces in HTML5/CSS seems absolutely insane. Friends don’t let friends write HTML/CSS. It should remain purely the output of tools such as Handheld Designer. HTML/CSS is becoming the Assembly Language of the web–it’s good to know, but hopefully you’ll never have to touch it.

Etc.

There are plenty of other options I haven’t mentioned: Moai, Marmalade, Titanium Studio, UDK, and the list goes on. The important thing is to research your platform independent option and find what’s best for you. For games, I’m biased towards Unity–but other options are just as valid…I guess. Obviously there are applications for which native code will always be the solution. Yet, for the incredible glut of dying console game studios “pivoting to mobile,” this is an increasingly remote option.