Heroic Fisticuffs!

Here's a place where I talk about games, applications, websites, and other things that I make for fun. Mostly roguelikes. And pirates. And robots. Since my domain is hard to spell you probably came here on purpose.

Finally!! I Beat Brogue


After 2 months of obsession intense focus, I finally beat brogue. (Not so coincidentally only two days after Andrew Doull managed a win.)

Brogue is by far my favorite roguelike, and in the running for favorite "game" overall these days. The current version (1.6.4) really hits the sweet spot in terms of difficulty, and showing you "cool stuff" in the game. Basically that means that you are always just barely getting farther than you have before, and always seeing something cool and new, which in turn drives you forward.

After a particularly grueling pair of almost-wins, my actual victory game turned out to be (mostly) a breeze. I spent the first 12 levels with no weapon but the starting dagger, and no pet.

This was pretty embarassing...
On level 13 I found:
  1. A sword
  2. A captive ogre
  3. A +3 Ring of Awareness
  4. A cage zoo
I (ab)used my wand of beckoning that I had been carrying around to free a dar priestess and a troll. Now I was set. The ogre didn't last long, but the dar priestess survived, and learned flight. I had been waiting for a good moment to use my wand of plenty that I had been carrying around all game, and then I had 2 flying dar priestesses. The troll later turned invisible which is surprisingly NOT useful when you have other pets that cannot see it... with little no regret I polymorphed the troll into a toad and left him to wander the dungeon.

About level 18 or 19 I found a golem. Between the golem and the two priestesses I basically had the perfect tank-healer-dps combination. After I (we?) plowed through two tentacled Horrors in a row, I knew I had a lock on victory... assuming I didn't do anything stupid!'

For the rest of the game it was just a matter of aggressively destroying any discord-casting enemies (Lich, dar battlemage, pixie) and letting my pets do the rest. Eventually I found a war pike and was able to deal some decent damage of my own. Tentacled Horrors, Dragons, and Golems all fell quite easily. Revenants and Liches are much easier to kill when one of your allies can cast negate. The staff of turret destruction tunneling, which I had attained on level 1 or 2, was incredibly helpful in getting through the rest of the levels quickly and safely.

The rest of the game went something like this
A couple of other things I learned along the way:
  • Plate armor really is worth it. I never knew!
  • Some pets are not worth rescuing (dar battlemage, salamander)
  • Centaurs are easily foiled by doors
  • A staff of tunneling is surprisingly useful
  • You don't have to pick up every key!
  • Sometimes it is OK to just take the stairs without exploring every last room...
My thanks to Pender for creating such an amazing game. Now I can relax and return to my regularly scheduled development work!

Adventures in UI Design

Traditional roguelike games are restricted in what they can display graphically. Restrictions are part of what make roguelikes great (this is definitely true for the original rogue), but graphics no longer have to be one of them. While troubleshooting the firing logic for robocaptain I found myself stuck in a "traditional" mode of thinking.

In the original 7DRL version of the game, firing took two steps: 'f' to confirm target, and 'f' again to fire. Alternatively, once 'f' was pressed the first time, the player could hit 'g' to cycle between targets. This is mostly fine, but can be improved. While I mostly play with the mouse, I want the keyboard controls to be just as good.

The thing that 'unstuck' me was realizing I wasn't limited to conventional roguelike graphical restrictions. The restriction being '1 tile, 1 character'. Why not just add another indicator over top of the existing character?

I came up with a simple 'targeting' overlay that constantly tracks the closest (or last hit) enemy. This targeting overlay can be cycled at any time by hitting 'g'. Hitting 'f' will automatically shoot at the currently targeted enemy.

This kind of 'passive tracking' saves the player an extra keystroke, since most of the time you are shooting the only/closest enemy. The rest of the time you can use 'g' to cycle between targets just as before. The game will remember the last enemy you shot at and always keep them as the default target.

Don't look down...

Work on robocaptain continues. My goal is to transform it from 7DRL into a "lunch break" roguelike. Which is a phrase I just made up after listening to the first 20 minutes or so of roguelike radio (who I noticed has a slick logo now!).

Somewhere between coffee break and a full roguelike. Shooting for 30 or 40 minutes of playtime to finish the game. Maybe less.

In the meantime here is some proof of progress! Anyone reading this interested in alpha/beta testing, drop me a line.

Still working on some less-aggressive color schemes, but for now it is easier for me to design things this way.

Roguelike Radio

Oh right, I was on the most recent episode of the roguelike radio podcast! It was lots of fun and surprisingly easy to get into (especially considering how I usually react to public speaking).

Tired of Caves?

During my first 7DRL the only dungeon generation algorithm I had was a variation of this roguebasin article. For the next two 7DRLs I kept the same algorithm, but only because I ran out of time to make a new one. For GnomeSquad, this wasn't as much of an issue, since caves fit the theme of a bunch of Gnomes adventuring deep underneath a mountain.

For RoboCaptain, this was more of a problem. I knew I wanted the player to control a murderous robot, but what the hell would one be doing in a cave? (Secret rebel human lair under a mountain of course)

Not that these things matter very much, but I want to be sure I am not unprepared for my next game (whatever that is...), so I have been working on dungeon generation. I have read and re-read Andrew Doull's series of articles on dungeon generation in Unangband, and want to put some of those ideas to work.

This is what it looks like so far:

The blue rooms represent a 'region', which correspond roughly to Andrew's room types construct. These could be a special area of the level, or an area that a certain monster hangs out in, or nothing (or anything!). I'm trying to build a system that can handle this kind of thing from the ground up, without getting bogged down too deep in trying to build the "perfect" dungeon.

I also put some decent effort into the display code (seen above). This is only for my own personal testing. This added a slight overhead to the actual dungeon generation code, but I am trying to take a page from Bret Victor's book and invest in some great and easy visualization features, to make my life easier. I'm not saying I will end up with anything nearly as slick as his tools, but so far they are a nice step up from the usual crude text file dumps.

The actual code is in python but serves output as JSON, since my next game will run in JavaScript, I think this will vastly increase my flexibility. Maybe if it ends up being good enough I can share it as a web service, or at least as a cool visualization tool online. (Although the "market" for a) JavaScript roguelikes that b) don't want to use their own dungeon algorithms is probably zero)

What's Next for RoboCaptain?

I've had the most fun working on this game than any other game project I've done in the last 5 years or so. I think I will just keep going with it for now and see where it takes me.

Just as a teaser, the screenshot above is some semi-working alpha code for the next version (0.3 or 0.4). I originally intended to have the Cloak and Jetpack systems in there as secondary systems. Eventually I decided that the Cloak was so much fun as a mechanic that it got promoted. But I ran out of time to add the Jetpack... which I think all good games should have.

We'll also see how many of these original ideas I can get in eventually.

RoboCaptain (2012 7DRL) - Update

Fixed a few semi-critical bugs (no power regeneration during exploration)
Added some 'easter egg' names for certain 'hero-class' enemies. :)

You can play both versions (original 7DRL and "7DRL+") here:

RoboCaptain (2012 7DRL) Prototype

I put up a playable prototype here:

It's not a true "game" yet, but there is lots of "gameplay". Only one (randomly generated) level, but I like the AI a lot. marines will keep their distance and apes will run right up and maul you.

For now the controls are: 
Movement - WASD
Rest / Pickup - SPACE
Cycle system - Q
Cloak/Uncloak - C
Shoot - Click
Melee Attack - Just bump into stuff, roguelike style

Q will cycle which sub-system is being charged. If you don't want to charge anything, leave it on Power. 

Clicking on stuff in the inventory after you pick it up will use it (fuel cells), or equip it (rockets, melee weapons)

I think that's it for now? I'm still on the fence about the cloaking.. it was not in my original design but I had an "invisible mode" for debugging and it was so much fun that I just made it part of the game, replacing the "engines" sub-system.

Obviously not finished but if you want to mess around with it I always love first impressions. The control system will probably change to numpad soon, so that you can move diagonally. I'll also probably add a keyboard-only way to shoot stuff so you dont HAVE to use both keyboard and mouse.


RoboCaptain (2012 7DRL) - Day 3

Game looks mostly the same but the AI is beyond my expectations. At this point, the marines will try to stay away from you, just inside their firing range. This makes the Marine Commander (green m shown here) especially difficult since he can shoot farther than me. You will need to equip rockets, which have farther range, to take him out. Or manage to corner him.

I am really enjoying the power-management mechanic, even in these simple one-level play-throughs I find myself ducking behind corners and trying to recharge my shields. At this point nothing is very balanced but I'll try to have a playable version up somewhere tomorrow morning.

(BTW in this shot I am about to die if that marine takes more than 1 rocket)

RoboCaptain (2012 7DRL) - Day 2

A lot of progress under the hood, but the level (just one so far, no stairs-code) looks the same. Player can pick up rockets and use them against enemies.

Biggest item of the day was AI. I changed the bad guys from monkeys to marines and via the Incredible Power of Dijkstra Maps, they will try to keep you in range of their weapons without getting too close. Other enemies can path-find intelligently now instead of the terrible x/y-diff method.

Of course, they don't actually SHOOT anything yet, but it's a start! Trying to decide if I have time to draw actual projectiles.. the engine I am working with isn't really designed for it but it would certainly make the game more fun.

RoboCaptain (2012 7DRL) - Day 1

I started late Saturday afternoon, got to this point by Sunday. I feel pretty good so far! (The basic engine I already had but I ripped out a lot of the guts)

What is RoboCaptain? The short version:
A tactical shooting-based roguelike with a powerful systems-management sub-game ala the old LucasArts X-Wing/TIE Fighter games.

I like my roguelikes to look like roguelikes so expect mostly-traditional look & feel; nothing crazy except for the power mechanic.

As for why there are monkies... they are leftover from the pirate game I was making they are escaped from the (evil) human science labs!!

Official rec.games.roguelike.dev post here.

7DRL 2012

I'm doing the 7-Day Roguelike Challenge again, started yesterday and will have a finished roguelike game by the end of Saturday the 17th.

There is also a Google+ page which has been quite fun.

Andrew Doull over on ASCII Dreams has a great post with all sorts of useful other links.

Neptune's Pride

I recently hosted a game of Neptune's Pride, a persistent "slow time" online strategy game where you win primarily by backstabbing making friends. The majority of the players game from the comments section of a lovely blog I read called Electron Dance. From there things got... interesting.

A month after the dust has settled, at least two of the players are posting their diaries.. I can't wait to read about what an ass I was in the third person! LiberalEurope (ug.. the hated Yellow Empire... so much hatred) is posting here, and Shaun (CitiesInDust) is posting here.

Go on, read about how terrible I was. I'll wait...

I quite rather like blogger, actually!

I realize this seems silly considering the number of people that read either blog is somewhere in the single digit range, but I think I will switch back to blogger after a short-lived tumblr experience.

I'll see what I can do about moving over the Grogue and 'and what army' devblog posts. Until then... expect some GRogue updates soon and tons and tons of 2012 7DRL reviews later in March.