Tiny Quest Progress Report: Making a Browser Adventure Game

Programming

Published on September 11, 2018

Several months ago I started working on a game that I hoped would be a rather epic, side-scrolling adventure game, playable for free in the browser. However I quickly realized how in over my head I was. For starters, I was a bit too ambitious with the scope of gameplay as well as the game world itself, and I think an even bigger obstacle was the graphical style I chose, which was a sort of 16-bit pixel art style. Both of these decisions made development of the game crawl far too slowly and I quickly realized I needed to shelve this game for something slightly more manageable if I wanted to finish it in any kind of reasonable timeframe. I intend on eventually finishing that game, however at this time, I have no idea when that will be, or if it will even be a browser game.

With that said, I decided to adapt the world I had created into something a little smaller scale. Being a huge fan of the original Gameboy, in particular some of the RPGs and adventure games on the system (think Zelda, FF Adventure, Pokemon) I figured that going with a gameboy inspired aesthetic, 4 shade greenscale and all, would force me to keep the scope of this game manageable. It also keeps the physics stuff to a minimum since I don't have to worry so much about gravity and making sure jumps feel good.

With that said, here's a brief TL;DR of the game in case this article is too long and you don't want to read it:

  • Free to play in the browser
  • Possible mobile ports eventually
  • OG, greenscale gameboy inspired pixel art
  • Heavily Zelda influenced gameplay including exploration, puzzle solving, realtime hack and slash combat, npcs, towns, bosses and a few special items

Here's a little suntin' suntin' to whet your appetite:

8 Bit Gameboy Town

In terms of the story... I think I'll save most of that for when you play it, and this article is more about the development progress, but the core is that, someone gets kidnapped by some bad people and you have to save them. Original, I know.

The technologies I chose for this game were really a no brainer. I went with Phaser as a game framework since I've used it before and it has a great community. They also have been steadily improving their v.3 release which has some awesome new features. I do most of my development and testing using a yarn / webpack workflow.

In terms of asset creation, I am using Photoshop CC to create the pixel art and Tiled map editor to create the maps. I have also been using a cool little web app called Beepbox to create some retro sounding tunes. It's somewhat limited, but this fits nicely into the overall design philosophy I'm trying to maintain for this game and keeps me from wandering off onto unnecessary tangents.

Now onto game progress so I can set some expectations. First of all... this game is still way more complicated than I had anticipated. My next game needs to be an infinite runner... or a game where you just click on a ball. I just love story and adventure games too much to resist. Here are some notes on specific components and how they are going.

GAME WORLD & EXPLORATION

I would say this is the closest thing I have to completion currently. I can load up maps and dynamically place things like enemies, animated tiles and game events as well as transition from map to map using "portal" objects as well as game events. But a few of the placeable objects still need work. For example I have pushable blocks that sort of work, but not in the way I need them to for my puzzle designs. These pushable objects alone have put me into the frustrating position of likely rewriting some of the player movement logic. I also have explodable "tiles" that don't explode yet (yes, idiot me also wants bombs in this "tiny" game). I also haven't done much with NPCs yet. One thing I did complete however is the ability to dynamically place and remove game tiles (as well as most other game objects) using game events and game switches. Most of my map generation is done by parsing Tiled json map files, however I found that storing certain pieces of map data in another file made things easier in some instances (ie tiles that should be generated conditionally based on game switches).

EVENT SYSTEM

This ate up a lot of time, but I feel like this is pretty important in any adventure or RPG type of game. I've also mostly finished the game event system, however will likely need to write quite a few more methods to handle specific events. Currently the event system can handle things like setting global game switches, launching text and select prompts, "cinematically" controlling the player, npcs, etc and many other things required to push the game's narrative. For the programmers out there, the underlying way I ended up handling my event system was by using javascript promises and Promise.all() so that I could send "bundles" of events to the manager and then react accordingly when everything in that event bundle is finished. There are a few other things going on under the hood; select prompts rely on Phaser's event emitter for example, but my beloved promises are really the backbone of this part of the game.

COMBAT

This is fairly solid on the player side in terms of moving, swinging swords and hitting / killing enemies, but I am now in the trenches of writing enemy AI and I haven't even gotten to bosses yet. I am using a modularized behavior system though so for the most part as I write behaviors I can reuse them, as needed (although I have found some pretty amusing behavior interactions in doing things this way). Hopefully as I write additional enemy classes it will just get quicker, but we shall see...

GRAPHICS / ASSETS

Going with the gameboy aesthetic was an AMAZING idea! When I started my other game I really took for granted how time consuming pixel art is and I think it was by far the biggest bottleneck for that project. I could spend hours on a couple objects sometimes. With the gameboy style aesthetic of this new project, I am blasting through game art and map layouts with a "good enough" mentality. I'll give you another taste of what's in the works, though I will probably save most of the graphics teases for once I can start screen-grabbing actual gameplay. Here is the hall of the forest king mockup:

8 bit gameboy graphics

CURRENT OBSTACLES TO COMPLETION

At the moment, I definitely have some strange bugs in the mix and a steadily growing desire to do some refactoring, but I don't foresee any major obstacles besides the fact that, as usual, I let the scope of this thing get slightly bigger than I probably should of. However at this point I'm far enough in, and i can see a light at the end of the tunnel. So I think if I just keep chipping away and maybe writing the occasional status update, I should be able to finish this thing... and you'll be able to play it! I just need to make sure I fight the urge to put every idea that pops into my head in the game...

So stay tuned for an epic, tiny quest, coming soon!

More Articles