Hello everyone! This post is about a game called Spell, which I am currently developing with some friends. The game is currently in Alpha 0.1.1, hence the title being a version number. Right now, the team consists of two developers, so the graphics are virtually non existent. All of the code is located on Github. This is NOT a tutorial on how to write a game, just a write up on how I made a game.


Here is a brief summary of the history of this project. The code is based on a game I wrote called Zdefense 2, which in turn is loosely based on ZDefense. ZDefense was a game I wrote in the summer of 2014, right before I had started high school. If anyone wants to play it, click here. As you can see, it seems like a final product, but the gameplay was really lacking. You couldn’t move around. All you could do was spam one button, and your score was determined by your upgrades. That is why I wrote ZDefense 2. It, however, never really got off the ground. I felt limited with the original game getting in my way. I didn’t want Zombies anymore.


Then, on Jul 26, 2015, Spell was created. The idea itself was based off of a google doc my friend and I had made back in 2012, with magic and the different elements. At the time, none of us had been developers, so it had been forgotten for the next three years. One day, I was going through my Google Drive, and I saw that document at the very bottom. I realized that I now knew how to develop games. I contacted my friend, he ended up writing the input code, while I worked on the multiplayer support for the game. The game server ran in my house, and development was going great. Then, I noticed that the game was running rather slowly. It would log out my laptop, and drive the CPU up to 100%. So, I decided to rewrite the game using a framework called Pixi.js. This JavaScript framework was created for speed, and used webgl. Unfortunately, school had started, so my friend and I had scant time to devote to the game.


Over winter break, we both met up, and got the webgl rendering working. That was about two weeks ago. Now, the game is under development, and will be released sometime before this summer. We are currently implementing a large amount of the game play. Adding things like levels, and skill points are our current focus. Want to know what technologies we used while making it? Keep reading.

Here are the stacks of technology we are using. First, we are using Javascript. Being a web game, we had to use JS. However, we had to decide between the plethora of rendering options. There was canvas, webgl, css, and a few others. We decided on WebGl, the fastest, after our canvas version started to lag heavily.


For the multiplayer, I originally used Golang, a language created by google. It is ridiculously fast. However, I noticed that the language wasn’t as great as I had initially thought. I wasn’t able to use many of the libraries I was depending on. So, I switched to Node.js. Node.js takes Javascript code, and lets you run in on a server, instead of a browser. You lose a little bit of speed, but the language is a lot easier to work with. The multiplayer is now written in Node.js.


Finally, we are using a few different libraries. Riot.js, for rendering out html, Martmotta, for executing ajax calls, and Pixi.js, for the rendering of the game. These libraries greatly simplify game development, as you can focus on coding the game instead of spending large amounts of time on drawing a box. We have already written roughly 800 lines of code, and that number is going up.

That is all for this post. I will be posting more updates as more and more of the game gets done. Within a month or so, the game will be released for official alpha testing. Keep an eye out for that post if you want to see it in action.