Version 0.6 is fresh off the press!

I wanted to take a break from some of the nitty-gritty mechanics I had been working on to take some time and make some basic things more enjoyable. I’ve fixed a whole mess of bugs, made several UI/UX improvements so things are easier/clearer, and perhaps most excitingly, added a class selection screen.

There are five “classes” or “archetypes” you can play as:

  • Brick

    A tough hero who is hard to hurt and hurts hard. A high-defense, melee-focused hero who can fly.

  • Energy Projector

    You tend to fly around, loose bolts of lightning from your fingertips, and glow in the dark. A ranged-focused hero with low defenses.

  • Martial Artist

    What you lack in super-powers you make up for with super-moves. Martial artists tend to be hard to hit, and focus on physical melee and ranged attacks.

  • Mentalist

    The voices in your head are real, but the spiders you see crawling all over your flesh…are probably not. Mentalists can use powers that are not affected by normal defenses and that often do not need line-of-sight.

  • Vigilante

    Vengeance and Justice are the same, and the only important thing is that they are final. These ‘heroes’ don’t have powers, they have guns and Kevlar, and intend to get the job done by any means necessary.

Hopefully these will be fun choices for the player to move around the city fighting crime.

On a technical note, there have been several big refactors implemented in this patch that will hopefully make future development a bit easier. A pattern I’ve been trying to replicate in a lot of places is instead of directly trying to calculate a thing like, targets under the cursor, or visible entities, to get that information by raising an event on the relevant entity and then processing the results of the raised event. For example, I completely refactored how visible things are fetched and then rendered in this way; previously, I had just been looping over the tiles on the screen, and then with a big ugly if/else chain, checked to see if there were items or entities on every tile. Any change to whether or not an entity or an item were visible would have to get an additional if/else block on the screen object render method; gross! So now, I just raise the 'getVisibleEntities/Items' event on the player, and get back an array of what they can see based on the mixins they have and powers they’ve bought. Much more modular! It should be noted that this pattern is not my own, but is talked at length about by a lot of other game devs, but most noticibly for me, by the creators of the Caves of Qud (potentially my favorite roguelike). They have several talks at IRDC over the years that are really fascinating and helpful to watch, so please check them out!

What’s Next

The next version will be a sort of “content” patch where I am going to try to add more building types, and more event types, so that our hero can do more than stop the occasional mugging and bank robbery (however noble it is to do those things). This may require more (read: will definitely require) work on the AI system. I’m going to try to stay away from special cases as much as possible and work only with what I have right now. This may not be possible. But I will try my darndest.

The finish line is in sight for this project. I want to tie a little bow on it as fast as possible and move on to the next thing. This will certainly not be my last roguelike, but I feel an urgency to finish this before it dies. Wish me luck.

Till next time!