A Randomly Generated Level using this solution.

Roguelikes are all the rage in the indie game scene right now, and I know that myself and others have a plethora of great ideas they want to add to the genre. But one of the key tenets of the genre, randomly generated levels, can be tough to wrap your head around. My engine of choice is Game Maker Studio 2, and it especially lacks the features needed to make this a painless process. Good news though! I tackled it for you. Follow this guide and you’ll have a rudimentary level generation system up and running in no time.

Link’s Awakening, but worse.
Link’s Awakening, but worse.
I’m entirely too proud of this.

First things first, this is going to be much easier to follow if you read my previous story about creating a basic game engine with Javascript using the Canvas tag. We’ll be using a lot of code from it to speed this whole process up.

Against my better judgement I’ve forged ahead and started creating a camera system using the drawImage() function built into the context rendering system that HTML5 uses. I’ve restructured a few things to improve the engine, most importantly the array that contained our instances of entities is now an object with unique keys for each object…

This took hours of research.

In 2020 if you hear the phrase “Game Engine” you likely imagine Unreal or Unity, or even GameMaker Studio if you have some class. You probably don’t think Vanilla Javascript. For good reason, JS was never meant to do this. With the advent of HTML5 you can do a whole lot more. We’re going to painstakingly, and with much complaining, implement a basic loop that will allow for basic game logic and animation.

The first thing we need to implement is a clock. Games rely on a constantly looping program to activate different function calls and achieve motion. …

If you’re anything like me you were obsessed with Pokémon in the late 90s and early 00s. You could name all the original 151, how they evolved, what their types were and what the best moves for them were. You probably didn’t take it as far me and try to develop a Pokémon clone on the TI-84 though.

Being the intrepid (and wildly distracted) youth I was I set about trying to replicate the magical Pokémon experience on the venerable TI-84 from the back of my algebra class all in TI-Basic. …

I’ve been doing some light work on a top down shooter game and simultaneously going through my first week at Flatiron school. We’re currently working through Object Relationships and I got hit with a bit of a lightning rod about how to work a problem with an AI system I was working on.

My goal for the system eventually is pretty simple to explain but difficult to implement. I want enemies that move a bit like a squad. They can flank the player, take cover, charge the player, cower in fear, run away. A number of squad based activities.


Will Avery

Student at Flatiron School, Chicago. Former musician, current nerd, former dork.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store