Rotating Cube

Ember.js is the core of Space Pizzas’ tech stack because it allows me to avoid many of the boring parts of programming in JavaScript. Figuring out how to draw graphics, deal with networking issues, and all the other difficulties involved in developing a game is hard enough such that I didn’t want to also have to deal with the annoyance of maintaining a bunch of boilerplate code just to get my basic development requirements up and running.

For example, because I’m using Ember, I don’t have to worry about building or maintaining Space Pizzas’ asset pipeline, data flow, testing infrastructure, or deployment process. Not having to worry about these concerns has allowed me to focus on the game’s business logic rather than, say, switching my testing framework when my current one has gone out of favor. Once you get used to the freedom of not having to sink time into development tasks orthogonal to your project’s value proposition, it’s hard to go back.

These conveniences are what has kept me developing in Ember the past few years. In fact, I was so excited about Ember’s allowing me to focus on the fun parts of JavaScript programming, I put together a talk for EmberConf 2016 called Build a Game in Ember Starring Your Cat that outlines how I used Ember to develop my first game, Croissant the Pizza Cat. When moving from 2D games to 3D games while working on Space Pizzas, I found that Ember’s best practices were just as valuable, and I put together another talk called WebGL in Ember. The image above is a GIF from the Three.js in Ember app I put together to demonstrate how I used Ember to help draw 3D graphics using Three.js.

Time is often the limiting resource for programming projects, and my game dev projects are no different. For that reason, I’m using Ember to avoid the timesink that comes from the seemingly endless churn and reinvention of JavaScript best practices.