Back! For the time being

I have not touched the code for Warning Call in a few years. However, I have been thinking about it quite a bit. One problem I ran into is that the complexity of the codebase outstripped my ability for quick "jump in / jump out" coding sessions. A lot of this was due to my inexperience with TypeScript when I first started the project. (I also didn't know anything about Promises at the time)

In the years since, I've done one 7-Day Roguelike Challenge entry, but that's about it for large projects.

To make projects like my 7DRL easier, I've been tinkering with some "bare bones" roguelike games using ROT.js and a very small codebase I've coalesced around. Just don't call it an engine.

There is a very lightweight repo called bare bones, which basically gives you the stereotypical "@ on a map" experience, but with a streamlined engine to handle user interface and basic animations in a browser.

The next level up is called basic bones and does a bit more. The point here is to make the most boring game possible – really just a skeleton of a game. But one that makes it easy to extend. It leaves you to fill out the interesting parts, but avoid having to re-engineer things like asynchronous input, gamepad support, menus, targeting interfaces, and a core "game loop" to easily expand events and actions on.

I've spent some time filling out basic bones and have a few more changes left before it is (re)settled:

  1. Start Menu
  2. Gracefully handling animation (nearly done)
  3. Gracefully handle events that trigger other events (same)
  4. Streamline directory structure and *.ts file
  5. Footer bar with auto-update
  6. Basic "examine at" functionality with mouse and gamepad stick support

So far the basics feel really good. By starting with the annoying things that tripped me up in the Warning Call (targeting, animation, complex event-chaining, menus) I can start re-building Warning Call by copying more and more modular chunks into the basic bones.

We'll see!

The Woods - 2022 7DRL Entry

It's time for the annual Seven-Day Roguelike (7DRL) challenge, hosted on I try the challenge nearly every year. The last few years have been tougher to find the time.

This year I have submitted The Woods - which is far from a full game, but at the very least a successful roguelike experiment.

In The Woods, you control a squad of woodsmen protecting their forest against an evil incursion. Here is how to play.

How to Play (Strategy and Concepts)

As the player, you get one action per turn. This can mean moving any of your units, or having any of them perform an action. However, unlike traditional tactical turn-based games, there is no set order. You can move the same unit as many times as you want. So long as they do not get too far away from the other units. "Too far away" is measured both in distance and time (turn count).

Roscoe is getting too far away/ahead of the others

If one unit gets too far away (or far ahead) from the others, they will no longer be able to move or perform actions (unless that move brings them closer to the squad).

Roscoe is in danger of being completely locked
Desmond is completely locked (cannot move)

So keep your squad together. If they get too far apart, you can use the Rally commend to sync back up, as long as (1) they can see each other, and (2) there are no enemies in sight.

You can also have your units follow a leader, using the Follow command. This saves you from having to move them independently if you don't need tactical movement.

Since the woodsmen use bows, they must Reload after every Attack. Make sure you set up your squad in such a way that they are not overrun by enemies - remember you only get 1 turn among your entire squad vs. each enemy getting their own turn.

All units have Stamina, which is used up when they attack. It also serves as a health buffer. When you Rest with no enemies next to you, that squad member will restore 1 unit of Stamina.

Health is limited and cannot currently be restored, so be careful.

Each unit has a special Bullseye attack (which must be reloaded independently). It will kill any enemy with a single shot (multiple-heart enemies show up shortly after the game starts) but at the cost of all of their remaining Stamina.

Right now the game ends when all squad members die. The enemy squads will get tougher and bigger every 50 turns (as measured by the 'Difficulty' level). Enemy squads will constantly spawn as you play. Score is measured by how many enemies you can kill before your squad is wiped out!


WASD or Arrow Keys: Movement (4-directions)

Normal Game

1: Action Menu

2 or SPACE: Rest

3: Switch to Next Unit

4: (reserved for future use)


1: Confirm/Select

2: Cancel/Back

3, RIGHT, D: Next Menu Item

4, RIGHT, A: Previous Menu Item

When Targeting

1 or SPACE: Confirm/Fire

2 or ESCAPE: Cancel

WASD or Arrow Keys: Select Target

New Year New Blog

After changing web hosts, I decided to take the plunge and finally replace my old blogger site. The new blog is powered by Ghost. I managed to (mostly) import all of the old content over.. although there are a few dead image links in the ancient archives.

I have Warning Call back online. HeavyAxe and some of the older ones are up as well. (Check the 'games' link)

Dungeon Dual will require a lot of work to get back online. Might be a good project to revisit for the upcoming 2021 7-day roguelike challenge.

In any case, if you are still reading this blog, hooray! I plan on continuing to develop Warning Call this year and would love some playtesters. Drop me a line: if you're interested.

You are getting ye axe...

So this game is shaping up not in the way I intended (neptune’s pride + nethack + wordfeud) but I am really enjoying the new concept. More on that later.

For now, here is google app engine in action:

 ‘carlosthedwarf’ has created a new game
(playing as the evil horde*)

Other players can see available games and join them
‘joeyblogs’ is going up against our friend carlos.
Don’t ask me what a Mangler is.
So… there you go. Progress! Just in case someone has this blog set up in a dusty corner of their RSS reader. If I had a nickle for every game development blog that stops updating less than half-way through the project I would be a THOUSANDAIRE!
Moral of the story: if you are lurking, say hi! 
* I’m thinking more these guys than these guys.

Why I Love Nethack

My current game is a great example of why I love nethack. I am playing a healer and I have had really horrible luck with pets dying. What I needed was something… more powerful. Something that could eat those pesky shopkeepers and cross-aligned priests so that I can convert their stupid altars. 
Luckily, I found a polymorph trap. Since I don’t yet have magic resistance this was a lucky find (last time I literally stumbled into it and turned into a queen bee for about 600 turns). As I have yet to find a magic whistle, leash, or any way of controlling my pet, I constructed a rather useful fort of boulders…

The greatest part? This was after only my first try.