Building a game engine
A couple of weeks later I’m in Melbourne. I’m excited about the potential of my crappy proof of concept and I’m eager to show it to my old housemate, a lecturer of game design at a Uni in Melbourne. His initial reaction to the overall idea was positive. Having a lot of experience in making games, he asked if I knew about using tile sheets to construct game worlds. As hard as it might be for an indie developer to comprehend, I actually didn’t given my two hours of experience in the “games industry”. This was a good starting point. He showed me a game called Browser Quest, which was also html5 game developed by Mozilla to demonstrate the use of WebSockets. The best thing about this game is that the code was available on GitHub and it was exactly what I needed to get going.
Once I returned to Ireland I cloned the repo, removed all the server side code (as this was going to work locally on a phone) and stripped all the modules down to their bare bones. I wanted to write the thing from scratch but the existing software design seemed sensible to me so I left the file names there for reference. Other experienced indie developers may probably call me crazy for rolling my own game engine when there are so many good frameworks already out there, but this was a good learning experience for me and the mistakes I made had taught me a lot.
I wanted to take a pretty Agile approach to developing the game. I wasn’t using card walls at the beginning, but it wasn’t as necessary seeing as I was the only one that needed visibility. I basically had a notebook/bible (I’ll talk about this more in a future blog) where I was tracking a list of tasks in order of importance, each of which was scored in terms of difficulty in order to track my expected to progress down the line.
I’ll briefly discuss the technical implementation in next post, but after about 2-3 weeks of researching/coding I had a very basic game engine which could display entities in the game world via configurable json, a player that moved around using swipe gestures (and some drift physics) and collision detection between the player and the other entities. Now I just needed some shiny things to populate my game world. Now to a sprite artist the following might be a bit of a weird workflow, and it’s justification to how much I was winging it as I went along…
I sketched some rough characters in my notebook, took a photo of it and inked the rest of it using my laptop. Here’s a gif of what it looked like, it’s very rough around the edges but I thought the hand-drawn nature had a nice charm to it. This was my first tangible build running using my engine, and a bit of a milestone. Next, I’ll talk about the technical implementation.