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.

Version 0.55 - Tutorials and More

I’ve put the latest version (0.55) of Warning Call here.

The bulk of my time has been spent building a tutorial level. It’s not done yet, but it’s accessible from the start menu. More to come here – I’ve never written a tutorial before so it’s an interesting challenge. All of the feedback I’ve gotten from the kind devs on r/roguelikedev has been helpful in seeing the game in a different light.

Major changes from the last version include:

  • Removed Targetbots (t) from the first level
  • Fixed bug where Empowering and Ammo-generating nanites would not allow power usages if you had zero charges.
  • Enforcing same hotkey press for powers & confirming target. This makes it easy to double-tap a hotkey when targeting quickly. This also allows you to return the Axe using the same key that you threw it with. (pro-tip: you can have more than 1 Axe power installed at once!)
  • Made sure Warp Beacons cannot be trapped behind impassable terrain
  • Gridbots (x) no longer get stuck in the wall when they explode out of a Xenobot (X)
  • Put the Power menu as the first line of the footer
  • Added the SEED # to the header (mostly for help in bug reporting, but eventually for game-sharing)
  • Spread out the guaranteed powers on the first level – the starting room was way too cluttered
  • Fixed mysterious game-crashing bug with ’empty’ nanites spawning on the ground in deeper levels
Feel free to post comments, bugs, and feedback below, or on the reddit link above. Or e-mail me: todd AT (this domain).

Latest Version of Warning Call (aka Hardpointe) online

The latest version (0.5) of Warning Call is here. (I changed the name from Hardpointe, but the game is the same). If you have commentary leave it on reddit here.

A full list of changes since the last playable version is below. Thanks, and enjoy!

From 0.5:

  • On-screen radial menu replaces ‘ambiguous input’ menu:
    • Makes it simple to double-tap space to wait when standing on wreckage
    • Can no longer escape out of radial menu
  • Interface updates:
    • Warp Beacons and Airlocks are highlighted when not in view
    • Significantly expanded HELP content
    • Better item and power descriptions all around
    • Cycle between enemies while targeting with ‘e’
    • Inventory is sorted more usefully
    • Power install menu has better shortcuts (allows player to quickly tap SPACE + # to install a power into a given slot)
    • Grenande targeting shows area of effect
  • 3 new nanotech types (found as items and on the grid): 
    • Recharging nanotech (temporarily makes all power uses ‘free’)
    • Reloading nanotech (temporarily makes all weapon uses ‘free’)
    • Strengthening nanotech (temporarily adds the HULK effect and +1 melee damage)
  • New enemies:
    • Gridbot (1-hp enemies that always appear in pairs)
    • Xenobot (explodes into gridbots when destroyed)
    • Megadrone (constructs mini-drones out of nearby scrap)
    • Protectobot (casts shields onto nearby allies)
    • Interdictor (able to see cloaked targets and use a displacement field to cancel PHASEWALK and CLOAK effects)
  • Ability to ‘sacrifice’ Warp Crystals to double SCORE
  • Enemies take damage when falling through chasms
  • Different icon for weapon powers vs. ability-based powers
  • Better distribution of grenades, powers, and nanotech items 
  • More wreckage distributed across levels
  • HACK effect is now temporary, and scales with power level
  • PHASEWALK is now more liberal when calculating if a ranged attack goes through you and hits a nearby enemy

From 0.35 and 0.4:

  • Power level is now tied to how long (or far) powers last 
  • Lowered the base duration of most power effects (but they now scale with level)
  • Warp beacon menu improved and text made more helpful
  • new HULK power that temporarily adds +1 to melee attacks