DevCon5: HTML5 GoTA versus Unity

Hello everyone,

Yesterday I traveled to DevCon5 in New York City to discuss building games in HTML5. TMCnet puts on DevCon5 as a way for different web companies to discuss moving from HTML4 to HTML5, and discussing their tips and tricks on how to make it work. I was representing our game, Game of Thrones Ascent (GoTA), as part of the HTML5 group. GoTA was written in HTML5 with a Javascript and Ruby backend, using MySQL as our database layer, so I spoke to the efficiencies and inefficiencies of using HTML5 as a game development language. Elliott Mitchell, one of the organizers of the Boston Unity Group, was there to represent Unity as a game design tool, and John Myers was there to discuss working in Native code on his latest game, Codename Cyngus. Moderating the discussion was Monty Sharma, Director at Mass DiGI.

The four of us met up in New Haven and took the train in, so we had a chance to discuss our different methodologies and experiences before we got on the panel. We all travel in the same circles up here in Boston, but we come from radically different perspectives. I come from the traditional world of AAA game design and publishing, having only recently jumped into indie studios. Elliott has been working with indie studios from the start, and the same with John. Monty comes from an Enterprise background and now focuses on game education.

The first question Monty wanted us to answer was about the ease of development on HTML5. One of the best things about HTML5 is that so much of the syntax and elements have permeated the tech industry. HTML5 has been talked to death by the W3 and other organizations, so most of what you’ll want to do is documented or commented on somewhere on Stack Overflow. Even coding newbies can pick up the simpler elements like <head>, <footer>, <body>, <h1> to <h6>, <strong>, and <embed>. Using the Canvas is easy as well, since UI element placement uses relatively simple pixel coordinates for their location. The fact that no plugins are required to build a HTML5 game is great for players who balk at installing additional software.

Of course, HTML5 has its own platform issues. GoTA is built around Chrome, so people who still use IE8, IE9, or mobile browsers (with the exception of Android 3.0 Chrome and later) may see degraded or even completely stopped performance, since those browsers support HTML5 imperfectly. HTML5 also brings your code to the masses, since anyone can inspect elements and HTML to determine what your JSON queries look like. Since JSON is such a readable language, you have to watch out for players manipulating those queries in a way you did not expect.

The four of us agreed that HTML5 beats out Unity for 2D gaming – for now. We carefully pointed out that this didn’t mean that HTML5 or Unity were the best at 2D gaming: if you use a tool like NGUI with Unity, or use dedicated game developing software, you may see better performance. However, if you’re going for 3D graphics and interaction, Unity is the frontrunner.

One of HTML5’s mantras is, “Build once, and deploy anywhere.” The four of us dug into that, talking about just how accurate that was. For HTML5, you certainly can view and play our game on practically any modern tablet and modern browser. There are, however, a lot of Javascript and Ruby calls being done in GoTA’s background, along with animation and effects. All of this can tax the tablet’s hardware, and tablet browser players may see poorer performance than we had hoped.

The watchword of the conference seemed to be “hybridization,” using a combination of Native code and HTML5 to get the snappy performance that players are used to. Some developers find they can use HTML5 code with some combination of Native code to see great performance. Elliott’s counter-point was that Unity exports with perfect performance across platforms, from web browsers to mobile, without needing any code conversion. The downside, of course, is that you need to take advantage of the App Stores, while GoTA can be played on your device’s web browser. As tablets become more powerful, HTML5 performance on them will increase as well. It’s not unthinkable that GoTA will run smoothly on a tablet as their hardware specs improve.

Ultimately the choice of which platform to use comes down to what you want your game to do. If it is a relatively uncomplicated application, then HTML5 may be fine. If your game involves few complicated animations and limited scripting, a HTML5 implementation could work for you. You’ll have the benefit of a flexible language, a broad talent pool to choose from, and the ability to make changes and see them reflected in real time. Those are pretty powerful efficiencies for game development. If, on the other hand, you want to build a 3D game or take advantage of better performance, going Native or using Unity makes a lot of sense. For GoTA, we’re keeping performance in mind as we move forward, and we’ll keep seeing how HTML5 works for us as a game engine. It is not yet clear that, for complex online games, HTML5 will be on par with the game engines that cater specifically to game development.

Overall, it was an interesting talk.  All four of us enjoyed discussing the pros and cons of our approaches, and plenty of the attendees asked interesting and difficult questions. The debate between Unity, HTML5, and other frameworks like Flash will continue as each continues evolving.