Monday, August 11, 2014

Resource Management

Managing your resources is one of the core gameplay elements of most Roguelikes. Resource management in major Roguelikes typically involves keeping a close eye on one's hit points, spell/mana points, ammo, scrolls, and potions. Both of my previous games have featured very limited resource management and I think this is one of their major flaws. Thus, in WWRL, I'm working on creating more interesting and valuable resources.

In Dead Man Walking the only real resource to manage were hit points. However, thanks to a combination of passive regeneration and the willpower system, players could just simply retreat from most fights and the one resource solved itself. That was an interesting system, but overall flawed because it never really imposed a permanent cost on the player. Resource management in Dead Man Walking was very transient, its impact could only be felt for maybe 20 turns.

In AndroidLovesKitty I tried to make resource management slightly more interesting. There is no willpower and no passive health regeneration, so damage has a lasting impact. Unfortunately, AndroidLovesKitty was very generous in giving out health packs and it was very possible to avoid ~90-95% of all damage in the game. Both of those are arguably acceptable, but not when its the only real resource the player has to manage in the game. There was also the bombs "resource", but the player had 99 bombs for every level. The limitation was only really put in to prevent the player from blowing up every wall of every floor - it does not function as a resource nor was it really meant to.

In WWRL I'm trying to find a nice balance of both games plus adding in more resources overall. There are currently five core resources in the game: hit points, stamina points, money, bombs, and arrows. Hit points currently function pretty similarly to how they work in AndroidLovesKitty: no passive regeneration, health packs, and the player can avoid most damage with clever positioning. Stamina is a new resource for WWRL that is deliberately meant to be transient - the player can easily spend an entire pool of Stamina and regenerate it back in ~20 turns. Stamina is required to attack and the cost goes up as the distance between the player and the target increases (think of it as a cost for lunging). 

Money will primarily be used at randomly discovered merchants that will sell bombs, arrows, miscellaneous things, and a variety of equipment. Bombs function as they do in AndroidLovesKitty - they can be used as a burst of high damage and as a way to destroy walls. Unlike in AndroidLovesKitty, bombs are actually quite rare and the player starts with few of them. Arrows (along with a bow) give the player an attack option if the foe is out of melee range. Because of the game's focus on positioning and melee arrows are incredibly valuable as they can simplify dangerous situations. Arrows are, deservedly, quite rare - players should not expect to be able to play as a fully ranged character.

The goal of resource management in WWRL is to reward the player for being adaptive and create unique situations for each playthrough. Consider the hypothetical player that has been playing quite well in melee until recently - they encountered a dangerous enemy they weren't prepared for and are now one hit from death. However, thanks to this player's melee ability and a bit of fortune, they have a considerable number of bombs available. If the player now adapts to the situation, they should be able to recover their run by defeating the next several foes with bombs while searching for health packs. Thus, the resource management in WWRL will allow for tense situations to arise and also allow for crafty players to defuse those same situations.


Saturday, August 9, 2014

New Project & Weapons

Over on my twitter I've been teasing at a new Roguelike project I'm working on. It seems appropriate to also announce it here on the blog and discuss some the ideas going into the game. I plan on writing a couple of these posts to go over the design of the new game (temporarily named "WWRL").

For this post I'm going to go over some of the new weapon designs that are going into WWRL. Each weapon in WWRL is meant to provide a distinctive style of play and feel genuinely different.

  • Swords: the most basic weapon type. Functions identically to how most weapons work in Dead Man Walking (i.e., 1-tile range, no area-of-effect, no special effects).
  • Spears: similar to the sword, but with an extra tile of range.
  • Flails: Now things start to get a little more interesting. Hits up to 5 tiles around the player, excluding the three "behind" the player (based on the direction they swing).
  • Axes: Abandons the traditional bump to attack and instead attacks enemies as the player moves.
I'm still working out some ideas related to weaponry (movesets, ranged weapons), but the above four are solidified as far as design goes and just need testing. In the next post I'll go over the scope of WWRL and what my goal with it is.


Sunday, March 23, 2014

AndroidLovesKitty 1.0d


One more update brought on by reviews. There is a bug in 1.0c that causes the game to crash when the Vizier is defeated. He is the boss of the Hatching Chambers. The issue occurs because the game tries to create his special boss item at a position that does not exist. It was an easy bug to fix and I'm not sure how it made it through playtesting, but it has been fixed either way.

You can download it here (for Windows).

I encourage anyone playing through casually to download 1.0d instead of 1.0c. This bug fix is the only change. However, fair warning: it was definitely created outside of the 7DRL period. Reviewers will need to use their own discretion on which version is more "pure". Personally I would suggest 1.0d, but that's not my decision and it is worth mentioning that several reviews have already been created under 1.0c.

Minor (unrelated) administrative note: @Star Wars download links have been removed from the sidebar to reduce clutter. @Star Wars has not received an update in over a year and is a very incomplete experience (compared to Dead Man Walking & AndroidLovesKitty), but it is an important part of my forray into roguelike development. For that reason I'll be leaving the files in my public dropbox and anyone interested can peruse the blog for direct links.


AndroidLovesKitty Source [7DRL]


I was looking over some of the early reviews for AndroidLovesKitty and one of the reviewers pointed out the lack of source code. This was not a deliberate decision on my behalf - I have a history of providing source code and had every intention of doing so with AndroidLovesKitty. I just forgot in the midst of hammering out last minute bug fixes and the like.

Here's a download link to the "devkit".

This is basically just the environment I personally used while working on the game. You will likely need to acquire your own versions of Python and Libtcod. I use Python 2.7 and Libtcod 1.5.0.

The "hook" script can be used in conjunction with py2exe to create an .exe of the source.

Fair warning: reviews for AndroidLovesKitty have been quite positive thus far, but that hardly means I'm a good programmer. It's quite a mess, but I'm happy to try and explain any unclear elements. Feel free to hit me up here on the blog or on twitter.

Also worth mentioning that the source provided corresponds to game version 1.0d. It contains the recently announced bug fix from 1.0d, but is otherwise the proper 7DRL version.


Sunday, March 16, 2014

AndroidLovesKitty 7DRL 1.0c


I've just rolled out the 1.0b (now 1.0c) patch for the 7DRL version of AndroidLovesKitty. It's still within my 7DRL period, so I'm just going to replace the 1.0a link with 1.0c.

Spoilers below (download on the sidebar)
  1. Reduced the speed of Riftwalkers.
  2. Slightly reduced the spawn rate of Hulks.
  3. Added in a counter for bosses defeated at the end of the game.
  4. Slightly reduced the rate at which medkits are generated.
  5. Greatly reduced lag caused by enemies that demolish walls (e.g., Hulks).
  6. Fixed an issue where the game would crash if the player moved onto the stairs on the final floor.

AndroidLovesKitty 7DRL 2014 Release!


My 7DRL for this year is pretty much done. You can get a better idea of what it's like from my previous blog post.

It's a game where you play as an android and your pet cat has been stolen by aliens. Of course, being an android, you can't exactly go fisticuffs with the alien swarm - that'd be against your code of conduct. A convenient loophole is that you can use explosives to send the aliens back to the stars. You can also do other fun things with your bundles of boom, like carve out your own dungeon features or jump around!

If that sounds interesting enough to you, download it here (windows only).

I'm going to release a post-mortem soon, possibly tomorrow (no promises). I may squeeze in a last minute hotfix tomorrow if I discover any issues (I didn't start until Monday, so my conscience won't be too bruised). I may do additional work on it post-7DRL as well, like Dead Man Walking, but that depends entirely on how inspired I am in the coming weeks.

I welcome feedback. Feel free to comment on this blog post or send me a tweet.


Wednesday, March 12, 2014

AndroidLovesKitty 7DRL Preview


The annual 7DRL challenge is underway (and has been for a couple days now) and I'm participating in it. My entry this year is a game that is NOT inspired at all by Bomberman, Star Trek, or Metroid. Indeed, the game has changed titles many times but right now I'm calling it "AndroidLovesKitty".

It's a fairly straightforward game. Anyone who has played Dead Man Walking should feel pretty at home in regards to the aesthetics and certain other features (like dungeon generation). Perhaps the most startling thing is that bumping into enemies is a worthless exercise. You see, the hero in this story is an android and he is barred from engaging in direct physical combat. Thankfully, he's got a nice little loophole in that he can plant explosives. This is helpful when one wishes to defeat an alien horde and rescue a cat.

Here's an example of our beloved hero in a bit of trouble. Thankfully, he's set up a bomb (the orange asterisk) and it's just about to blow up that horrifying alien. Hopefully, at least. Bombs have a limited blast radius (just one tile surrounding them) and so a bit of planning is required in order to setup adequate bombs.

Looks like it worked out for him. Sure, bombs are dangerous and they require a bit more timing than just hacking and slashing, but they do quite a bit of damage. In fact, by design, many enemies in the game will fall down to a single bomb.

One of the goals of the game is to avoid simple, flat items. Each item should provide some level of interactivity. Here the hero has a pair of boots on and is able to get a nice jolt of speed after running in the same direction for a while (thanks, Sil).

What's going on here, you might ask. Good question - our hero has setup a bomb (the 3 below him). Bombs are "animated" in the most basic sense and will automatically switch between the asterisk and the number (which represents how many turns it has left until it explodes) occasionally. Now, with that out of the way, one might ask why our hero has chosen to place a bomb there when the alien (the "h") is clearly more than 3 tiles away. Well, our hero is attempting to bomb jump - a simple enough tactic based on the fact that bombs have immense and predictable knockback. Someone willing to take a little bit of risk can cover a surprising amount of ground with a bomb jump.

Here's the result of the aforementioned bomb jump. It allowed our hero to cross a whopping 8 tiles, although at least part of that is thanks to a different pair of boots: the "high jump boots", in this case. Still, even without fancy jumping boots one can cover a surprising amount of ground with a bomb jump. They can also be used to knock enemies around, which can be a useful tactic against heartier foes. Of course, it can also be used to knock them towards you, which is maybe less ideal.

In this picture our hero has acquired the legendary "hockey stick", a fairly simple tool typically used when playing hockey. A little known fact is that it can also be used to set bombs up to 2 tiles away (typically the player can only set bombs in the tiles immediately adjacent to them). The trade off here is that bombs do slightly less damage, although the upside is likely worth it (at least in this case).

One common downside to bombs is that they tend to cause some structural integrity. Wait, downside? Not so much. Here our intrepid hero has carved out a nice hallway for himself which conveniently connects to what looks to be a fairly large room in the normal dungeon. A watchful reader may note that a substantial number of bombs were spent in making this hallway. Indeed, making full sized rooms will likely not be a common thing. Still, even the most resourceful player will likely seem some use in "wasting" a bomb to blow up a hallway.

So that's the end of my little preview of "AndroidLovesKitty", which should be done by Sunday (at least the 7DRL version). A beta version maybe released on Friday.

The game is based on the framework of Dead Man Walking, which itself was based upon @Star Wars. As one might expect, all of the content is new and all of the gameplay mechanics are new or have been altered substantially.

If you've read this far, I apologize for lying to you in the first paragraph. The game may be partially inspired by Bomberman, Star Trek, and Metroid, amongst other things.