The personal website of @erikwittern

Gravity Quest - Introduction and technology choice

August 27th 2014

Introduction

In early 2014, having some spare time at hand, I set out to develop a mobile game as a side project. The result is the game "Gravity Quest", which is available for iPhone on the Apple App store and for which I have created the small Gravity Quest's website.

In this series of articles I want to provide some insights into creating that game using the Phaser framework. Gravity Quest was my first attempt to game development, so I learned by doing. Thus, these articles are not, and cannot, be meant to state indisputable 'rights' or even best practices in game development - neither with Phaser nor in general. Rather, I intend to provide some insights into the challenges I faced. I would be happy to see my attempts to address these challenges as starting points of fruitful discussions. Furthermore, I want to share the many helpful resources I discovered.

This series will (likely) comprise the following parts:

The articles cover a broad spectrum of topics, from conceptual considerations to technical, Phaser-related details. The attempt here is to draw a holistic picture, including the various aspect one faces when (solely) creating a game. If you are interested only in certain aspects, you might find some of the many links to external resources useful. I will provide a list of links at the end of every article.

I will cover the technology choice part within this article and the other parts in following articles.

Technology choice

When I decided to try out game development, I was immediately drawn to HTML 5 frameworks. I already knew some JavaScript and was intrigued by the prospect to run or even distribute the resulting game on different platforms and devices.

Among the many HTML5 game frameworks (see for example: HTML 5 Game Engines - Find Which is Right for You), I quickly settled for Phaser. There is extensive material available about why it is useful to rely on Phaser, for example this nice video: Build Games with JavaScript and Phaser. The following aspects attracted me to Phaser in particular:

  • Phaser's main developer, Richard Davey (Richard Davey's Twitter profile), regularly corresponds with Phaser developers on the official support site, Phaser - HTML 5 Game Devs Forum and frequently pushes updates to Phaser's Github repository. Such commitment is great and reassured me that Phaser, despite being quite young, was not a 'dead end'. After all, I was not keen to get invested in a framework that would cease existence soon after.
  • Phaser promised to be easy to learn. I find the basic setup of Phaser games, comprising the functions preload, create, and update, particularly easy to grasp.
  • Lots of official Phaser examples are available, as well as some helpful examples at the Game Mechanic Explorer.
  • The community seemed to me thriving. Especially the many discussions at Phaser - HTML 5 Game Devs Forum ensured me that I would find support when in need and could also distribute and discuss ideas.
  • Various helpful tutorials using Phaser exist, like the ones at lessmilk.com or by codevinsky.com.
  • Lastly (I am just being honest here), I prefer the way Phaser presents itself on phaser.io to the way other frameworks do. This aspect may seem trivial, but the care that went into the professional looking, fun presentation appeals to me and suggests these characteristics might also hold for the framework itself.

Being set on Phaser, I initially played around with it. I implemented few rough prototypes of game ideas, which eventually resulted in the gameplay for Gravity Quest, as I discuss in the next article about gameplay design and implementation. The code for the demos supporting this article are available at this GitHub repository.

Resources linked in this article: