Choosing a Game Development Framework

Lately I’ve had an idea for a game that I just can’t get out of my head.  Combined with the recent unveiling of the Nintendo Web Framework I’m compelled to make an attempt to get a demo of the game running on the Wii U.  At a recent presentation from Unite ’13, Nintendo touted how easy game development is for the Wii U using JavaScript and HTML5.  I’ve always wanted to explore the limitations of HD gaming within the browser so this is the perfect opportunity to test Nintendo’s claims.

Our weakness as developers is that when we have an idea we just want to code.  I don’t want to plan or design, I want to get something up and running and see the fruits of my labor as soon as possible.  As much as I love technology, some times I’m so compelled to code that I don’t even want to vet the best framework for the job.  Sometimes I’ll just grab what I’m most familiar with and start working.  With game development, that is difficult to do.

I wrote a previous post about the pitfalls of game development in JavaScript where I mentioned not reinventing the wheel.  I see so many horror stories of indie developers spending all of their time on an engine and not ever making a game.  I suggested a couple of frameworks in that post, but now that I’ve completed a more extensive vetting process I’d like to share some insight on the decisions that I made.

2D vs. 3D

If you are planning on making a 3D game, you should look no further than Unity.  You can quickly get prototypes of your game running by relying on Unity as a backbone.  There are a number of resources already available that you can take advantage of for development.  These include 3D models, plugins and tutorials for your project.

If you insist against Unity, CryEngine, Unreal Engine and the Source Engine are other options, but aren’t exactly targeted to indie developers.

I was dead set on making a 2D game; many aspects of my game rely on it.  Making a true 2D game in Unity is just not possible.  You can create a game with a fixed camera that limits movement to two dimensions but ultimately the assets and game will run 3D.  My inexperience with 3D game development had me a bit nervous going that route.

Web, Mobile or dare I say it…consoles?

I mention above that I already had some interest in the Nintendo Web Framework as a potential target, so the decision to make the game using JavaScript and HTML5 was practically made for me.  However, that wouldn’t make for a very interesting post now would it?

If I wanted to make a game for mobile platforms and perhaps PC/Mac/Linux, my previous experience would lead me to look toward cocos2d.  I have previously worked with cocos2d-iphone and found it easy to work with.  cocos2d-x is essentially the cross platform version of cocos2d, which has support for those and many other platforms.

Whittling It Down

A quick Google search turns up many JavaScript game development frameworks.  How do you decide which one to use?  I ended up filtering out options based on features that I saw as valuable to me.  This is obviously a subjective process, so your criteria may lead you to a different result than mine.

First, I needed something free and open source if possible.  I would hardly even consider myself an indie developer and I really can’t see myself financially contributing to a pet project like this.  Second, I’d prefer a framework that can work out of the box with standard tools such as Tiled for tile based map creation.

At this point I had narrowed my decision down to two options: cocos2d-html5 and melonJS.  It is going to sound odd based on my recommendation of cocos2d above, but after working with both options I eventually settled on using melonJS.  cocos2d has its applications but for lightweight, simple JavaScript game development it is my opinion that melonJS is the best framework out there.

Thanks to the great documentation, I had a simple platformer up and running using the melonJS boilerplate project within an hour of getting started.  I have yet to thoroughly stress test, but I’ve had no hiccups running the game at 720p within Chrome.

Why did I turn away from cocos2d-html5?  After some exploration it just didn’t seem like the best way to go for a lightweight JavaScript game.  Ultimately, cocos2d-html5 is meant for cross platform games between the web and iPhone, and the API reflects that.  I wanted something built for JavaScript from the ground up.

Have you been working with a framework that you really like?  Leave a comment to let me know.

From the Bookmarks Bar – July 12, 2013

I’m going to give something new a shot here.  From the Bookmarks Bar is a weekly round-up of interesting software development related links from around the web.  In general, it’s just a collection of things that I think you may find interesting.  Without further ado, here some favorites From the Bookmarks Bar for this week:

New Programming Jargon

We’ve all run into these issues from time to time.  This article reads like a book of the best programming related jokes.  Smurf Naming Convention is my favorite.

Raspberry Pi Powered Microwave

Disappointed by the lack of features on your microwave?  Why not overhaul it by integrating a Raspberry Pi?

The Visitor Pattern Explained

Many developers have only a brief understanding of the visitor pattern even after using it.  This is a detailed and practical example of the usage and practices of the visitor pattern.

How to Modify Bootstrap Simply and Effectively

Here is a collection of some great Bootstrap mods as well as some tools to easily modify Bootstrap to your tastes.  Want to make your Bootstrap based site look like Facebook or Metro in Windows?  An add-on can make it happen.

Super Mario Bros. 3 Match Game in Javascript

This is a fun one.  A developer has built a slick recreation of the match game from Super Mario Bros. 3, written entirely in JavaScript.  The project is well segmented and structured and is a good example for those looking to learn modern JS.  Source code is available here:  https://github.com/callmehiphop/mario-cards

That’s it for this week.  I’ll be experimenting with From the Bookmarks Bar over the next couple of weeks.  Feel free to leave a comment and let me know what you think.  Thanks for reading!

Microsoft’s Xbox One DRM: How It Could Have Been Done

The reaction of the public to the now former DRM policies of the Xbox One has been confusing to say the least. Microsoft’s announcements of the policies in the PR nightmare that followed the initial reveal of the Xbox One were received about as well as Frankenstein’s monster to a torch-and-pitchfork-armed angry mob. The gaming community argued their points of view all through the weeks leading up to E3 2013, which spanned both sides of the argument, but left the perceived consensus that the public was against the policies of Xbox One. Despite delivering a more core gamer focused media briefing at E3 than they had in past years, Microsoft found themselves overshadowed by the announcement that Sony’s PlayStation 4 would not require an online connection at any time.

At the risk of losing ground to Sony in the upcoming console generation, Microsoft reversed its decisions on the Xbox One DRM. Not just on the 24 hour limitation, but on all of the Xbox One’s new online features. The reaction of the gaming community toward Xbox One’s policies had seemed to change in an instant from anger and alienation to the disappointment and regret that consumers would not be able to take advantage of those features that were beneficial to consumers. I can only imagine that members of the Xbox One team at Microsoft were left stunned by the reaction.

Deciphering the Viewpoint

We can interpret this series of events in a variety of ways. We could assume that the more vocal members of the community were only heard when their side of the argument was at stake. This is probably somewhat likely, but deeming it the sole reason leaves us with having learned nothing. We could also consider the spread of information on the Xbox One policies was not handled well by Microsoft. This is also probably likely, but puts Microsoft in a position of trying to improve its message over its product. I would argue that the truth is actually a combination of these two ideas, with one addition. The possibility is, and stay with me here, that perhaps the gaming community wanted some of the Xbox One’s features, but not all of them.

Could it have been done?

I’ll argue that it could have been done with full acceptance from the public. I’ll even argue that Microsoft could have been the one to do it. I’ve heard the arguments that this generation was the wrong time, and that Microsoft was ahead of itself with these policies. I disagree. Microsoft’s attitude that this was the generation to separate the Xbox One from the competition was not flawed in itself, but rather the execution was at fault. Here’s how I think Microsoft could have gotten the community on its side with Xbox One:

The Example

The Steam community has raved about the potential of using a set top box or console with the service for quite some time now. Steam recently introduced Big Picture mode, a UI designed specifically for use with a television set and controller, all while rumblings of a Steam box have been turning in the rumor mill. Anyone who says that consumers have not wanted a Steam-like experience on a console would have to be in denial. However, it’s no secret that Steam suffered its own growing pains in the beginning. In the design of the Xbox One, Microsoft could have taken advantage of what Valve had learned through the evolution of Steam. With this understood, the Xbox One’s 24 hour check-in is baffling. It is the one policy introduced by Microsoft that seemed to be panned from both sides. Why introduce a problem that the competition has already solved?

Controlling the Message

To the outside consumer looking in, it almost seems as if Microsoft believed that the restrictions involved with the Xbox One would just be glanced over and ignored, like every other Terms of Service agreement. It is also possible that the policies were still being finalized up until the console reveal and were still not well understood even internally at Microsoft. Unfortunately, what Microsoft saw fit to release in an unfinished state, the gaming community saw as a potential deal breaker.

I believe that there are circumstances under which the gaming community would have accepted the policies of Xbox One (with the exception of the 24 hour check-in). Microsoft’s own preparedness to speak to the policies and inform the consumer is one of them. The customer needed to see that Microsoft was taking the changes seriously and understood both sides of the argument. The problem with the message following the Xbox One reveal is that the it seemed to be all restriction with no benefit to the consumer. It wasn’t until nearer to E3 when these benefits, such as the family share plan, were announced and by then the damage had been done. If the benefits to the consumer outweigh the restrictions of the policies, then the community will see them ultimately as a win for them.

An Olive Branch

The ultimate benefit to consumers in an all digital gaming platform is a reduction in the price of games. Since publishers and developers gain the previously lost sales due to used games, they can afford to offer new games at a reduced price. This argument is made in favor of the Xbox One, but seems to be arising from using Steam as an example for the all digital model. The problem is that the digital game sales on Xbox 360 have developed the reputation of maintaining the launch price for games long after other retailers have reduced the price for disc based versions. This begs an important question regarding Steam sales. Does Steam provide reduced pricing because they have competition for digital sales on PC, or because there is no space for used sales?

I believe that had Microsoft made a commitment to Steam-like sales on digital games through Xbox 360 prior to announcing the new policies of Xbox One, the gaming community would have been much more accepting of the lack of trading or used game sales. There is no competition for Microsoft in digital game sales; you can only purchase digital games for Xbox from Xbox Live. Microsoft should have recognized this as a concern for the consumer and offered sales on the current generation as an olive branch.

Conclusion

An argument that continues to be thrown around by those in support of Xbox One’s DRM is that it is not the fault of publishers and developers to want to not lose used game sales to GameStop and other re-sellers. I think it’s important to understand that despite the events surrounding the Xbox One, the gaming community does not hold an opinion against that idea. Gamers want to support the industry and the creators, and we understand that used game sales are ultimately a detriment to that. We can remove used games from the market entirely AND do it with gamer support, but the platform needs to remain as accessible as it is today.

It’s easy to point out all of the ways that the Xbox One announcement went wrong after the fact. It is much more difficult to anticipate these problems ahead of time. These features will be available on consoles sooner than later, probably even in the upcoming generation, despite how things have shaken out so far.

Thanks for reading. Please leave a comment or get in touch with me on Twitter.