Playful Red Pandas

I've been accepted in Google Summer of Code 2014 as a student working with Mozilla.

My project (that can be seen here) is about creating game samples, an ebook and some reusable libraries to aid game developers working with Firefox OS.

My mentor is Soledad Penadés who is fantastic and builds awesome stuff at Mozilla. Check out her creations at 5013. I am pretty happy with this match because I will learn tons of stuff. :-)

Why games?

Games count for 50% of the app usage on mobile devices. Let that sink for a bit... Of all app categories, games count for half of the usage and all the other types of app share the remaining fifty percent. Games are so important that many developers distinguish between games and non-games application as being from different realms. No one places spreadsheets app and project management apps in different realms but people think of games as something so broad, so large, that it deserves its own category.

If games are so important for mobile platforms then it makes sense that we have great tools and documentation to aid new developers in becoming game developers. The fact is that even though we do have lots of documentation, it is all spread multiple MDN pages and wiki links and personal blogs. We lack a comprehensive collection of knowledge that can be easily followed, understood and shared by new developers.

If a game developer wants to learn something about Firefox OS itself then he can just browse MDN Game Development Zone for the information he needs. New developers that want to become game developers have no easy path to follow.

To solve this we're going to build a set of resources that when used together will teach new developers how to develop 2D casual games for Firefox OS.

Lets see what we're going to build...

The book

During last year Google Summer of Code I've released the first book about Firefox OS — Quick Guide For Firefox OS App Development — and it became really popular and was translated into some languages.

This book proved to be a really useful tool in the hands of new developers that were coming to our beloved platform and I am pretty proud of it.

Based on my previous experience I though we needed a similar book but focused on Game Development. This new book will work like a hero journey guiding the reader from zero to publishing a game in the Firefox Marketplace.

Some content can be adapted from the previous book but since the workflow of game development is different than then one for building a business application I will probably work from scratch.

We'll cover topics such as game design and asset management that are crucial to a good game. Another important part will be that after the reader has the game working on Firefox OS we'll show him how to make sure the game work on Tablets and Desktop as well.

Even though our focus is Firefox OS, our book and sample game will work multiplatform for this is one of the unique qualities and advantages of the web. By leveraging this we'll prove to the readers that the web platform is a great deployment option for their creations and that they should take it seriously.

The sample game used in the book

After talking with my mentor we decided to build a game not unlike to arkanoid. The game will consist of a paddle like player that will bounce something on the screen and this something will destroy stuff until enough stuff is destroyed so that the user advances to the next level. We'll also place enough twists in the game so that it feel fresh.

This game will allow us to:

  • Explore different game designs and parameters by experimenting with different physics models and rules.
  • Experiment with different input methods as we move from touch based interfaces to keyboards and gamepads.
  • Engage in different atmospheres as we switch game assets to create a kid oriented game or branded game for some company.
  • Do all above while still being easily understood because this game mechanic is close to universal.

To build this game we're not going to create our own game engine. The engine building business is a hard one. Getting something running is not difficult but getting something running with performance, flexibility and security is beyond what 100 pages can cover.

Since our focus is to build a game and not an engine, we're going to adopt an engine and use it to teach universal concepts that can be applied to other engines or by someone creating their own stuff. Our chosen engine is called Phaser and it is awesome.

Why Phaser

First reason: Phaser is really awesome!

That being said there are good reasons why we're using a framework for this project. We're trying to teach game development and not how to program your own game engine. Instead of solving trivia such as how to blit sprites faster to the canvas we want to focus on game ideas and game design. To do so we concluded that it was better to pick a well known and well used open source framework as our tool of choice and teach the "universal" aspects of building a game. This way it doesn't matter if in your own work you decide to use something else or create your own, the content of the book will still be relevant.

Also by focusing on Phaser we offer the awesome Phaser community an opportunity to see how we're revolutionizing the mobile landscape with our web based operating system. One of my objective is to attract more game developers from the Phaser community into the Firefox OS ecosystem.

So we introduce Firefox OS developers to this fantastic game development framework and we offer the Phaser community a new deployment option for their creations. Both groups are happy and empower each other.

Of course in your own creations you will use whatever you think is best. Most developers will choose a framework and stick to it or build their own and then debug it forever.

You can check Phaser homepage for more information.

Our deliverables

Our objective it to create resources for game developers and we're focusing on people who are just beginning on their gamedev path. Our deliverables are:

I also plan to contribute back to the open source projects we use. If we create any new code for Phaser or any other library we'll send pull requests to the original project.

Where to follow our progress

This blog is where I will document the Summer of Code progress. Our code and book will be pushed to firefoxos-gamedev Github Organization Account.

My Twitter account is @soapdog and my personal Github account is soapdog

I hope you all like our project and I am always looking for feedback (and pull requests).