Gravity Quest - Introduction and technology choice
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:
- Introduction and technology choice
- Gameplay design and implementation
- Gameplay implementation: collision detection
- Visuals and sound
- Level design
- Distribution
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:
- Gravity Quest at Apple's App store
- Gravity Quest's website
- Phaser framework - Phaser's official Website
- HTML 5 Game Engines - Find Which is Right for You - a comparison of HTML5 frameworks
- Build Games with JavaScript and Phaser - discusses the advantages of building upon Phaser and illustrates how to build a 'plants vs. zombies' style game
- Richard Davey's Twitter profile - Richard Davey is Phaser's main developer
- Phaser - HTML 5 Game Devs Forum - Phaser's official support site
- Phaser's Github repository
- Phaser examples - official Phaser examples
- Game Mechanic Explorer - a collection of tech demos based on Phaser
- Lessmilk - showcase of various games build with Phaser and some great articles
- Codevinsky.com - contains an extensive article series about creating a flappy bird clone in Phaser
- GitHub repository - complete, commented code of the demo's supporting this article