Log in

crashRun: the roguelike
01 February 2009 @ 02:17 pm
I'm spending a bit of time cleaning up ugly and smelly code before moving on to new features. I'm not going crazy with it, but I figure I may was well do a bunch at the start of a development cycle, so any errors I create are caught as I go. I'm talking moving some functions to more sensible locations, cleaning up places where I used camelCase, deleting a few functions that are no longer used.

My tentative feature list for 0.4.0:

  • configurable key commands (Val asked for it)
  • universal Use command (so you can "use" ammo, for instance instead of needing the reload command)
  • monsters that won't necessarily be awake, active and hunting the player from the get-go. This allows some options for stealth. Need to design how noise will wake-up monsters (explosions, gun shots, eetc.)
  • some tweaks to dumb decisions I may early in the game.
  • EMP devices and effects (both on robots and the player's equipment)
  • a few different kinds of beam and laser weapons
  • tranq guns and tasers
  • machine guns and ammo
  • Instant coffee
  • a few other pieces of equipment and a couple new uses for existing items
  • Ghosts-in-shell (dead characters may show up as monsters in cyberspace)
  • A trap or two for meatspace
  • varied character backgrounds, which will affect your starting skills
  • Character will have two hands. You'll need to weild both your gun and your melee weapon (or flashlight if you want to use it) Maybe have duct tape that allows you to tape flashlight to your gun?
  • A chance to shop and pick your equipment before you're sent into the game. Will keep a quick-play option for players who don't want that kind of detail.
  • The next two levels of the complex.

I'm sure there will be stuff that I think of while I work but that's what I'm thinking of right now.

Release date? Who know! April or May?
crashRun: the roguelike
31 January 2009 @ 11:33 am
Alrighty! I've squashed as many bugs as I feel like squashing! I'm releasing 0.3.0 with its fancy-pants new cyberspace!

crashRun: the roguelike
30 January 2009 @ 10:40 am
I spent most of last night testing (ie., playing) crashRun and around 11:00 or 11:30 found a bug. Well, I'd seen it before but I thought it was just a display glitch. Occasionally, in cyberspace, the player was getting attacked by a monster he couldn't see. I thought the monster was simply not being drawn when he should have been (although there may also be the occasional glitch in regards to that), but I decided to investigate when the situation came up and it turned out two monsters were occupying the same square.

I checked all of the code for monster movement and such and nothing looked amiss. Each square in the game has an object associated with it that tracks who is the current occupant and the stack of items on it, so before someone moves onto the square, I check to see if it's occupied.

All that code looked fine, and after much source-diving and gnashing of teeth, I figured out the problem.

When the player enters cyberspace, I was picking a random location for him. But I was only randomly selecting a floor square, not checking if it was occupied.

So...sometimes I would randomly pick a sqr that had a monster in it, and when the player entered cyberspace I was doing something like:

square.occupant = player

So the player was now the designated occupant of that square. If there was a monster there previously, the monster would still exist in the level and could still act. So the bug occurred in configurations like so:

The initial monsters for the level have been generated, and after that the player's starting location was picked. In the buggy case, the player was put on top of one of the monsters (say, the k):

Then, the player moves one square to the left. The movement code first sets the occupant of the player's current location to empty, then sets the occupant of the player's destination to the player. So the k still exists in the queue of monsters and can still act, but he's not an occupant of any square, and the second x can now move onto the player's old location:

And now the k and the x are attacking the player. But only the x can be seen on screen.

The fix, of course, was to pick a starting square that is unoccupied, and not just a floor.
crashRun: the roguelike
29 January 2009 @ 05:06 pm
Last night I implemented the last of the features I wanted for 0.3.0! What's left testing, mostly. While I was at it, I actually found a several year old bug in the pick-up item code. If you were picking up three (or more) items and you only had room in your inventory for one, you'd end up with ghost items on the floor that would cause the game to crash if you tried to pick them up. It worked fine if you were only picking up one too many.

Guess which corner case I'd never tested before...

I need to update the help file and tweak a few descriptions in game.

Beyond that, it's just some bookkeeping -- packaging the files, updated the website.

I'm not happy with how I'm handling software (software are the items you can run in cyberspace) and the ID game (you find files encrypted) but it's okay for now. This is supposed to be the basic concept of how cyberspace will operate and it doesn't have to be perfect yet.

crashRun 0.4.0 will be the MORE STUFF edition. I plan to add a bunch of new items and monsters and the next area of the dungeon to explore. Monsters will not all active and out to get the player when the level is generated. They might be inactive until the player draws attention to himself (makes a loud noise, fails a stealth check, etc.). This way you won't be swarmed when you enter a new level and different playing styles will be possible. You can be a sneaky-sneak, or go in guns blazing.

I also want to vary your starting background (at the moment, you always start as a two-bit high school dropout), and an optional for more detailed character creation. You'll be able to more customize your skills and buy equipment before starting. I'll leave in the current character creation as a "Start quick game" option.
crashRun: the roguelike
14 January 2009 @ 12:56 pm
Well once again there was a several month break in development. I didn't even start anything during the Christmas break, I waited until after.

But I think I'm back on the horse and working here and there over the past week or so, I've implemented a few new features. As I've said before, 0.3.0 will be the version that introduces the cyberspace part of the game.

When I left off, I had the cyberspace levels generating, entering/exiting and a few monsters.

Since then, I implemented training nodes -- there are places in cyberspace where you can get boosts to skills and stats, a la downloading software in the Matrix, or micro-softs in Neuromancer.

Your equipment in cyberspace is the software you have running, so ice-breaking software is your 'weapon', firewalls are your 'armour'. I'm not 100% satisfied with this, and it may just be a placeholder (although I have no ideas was to replace it with). As an in-game joke, the player starts off with Norton Anti-virus running and won't initially be skilled enough to stop it and equip something else. I know, I have a weird sense of humour.

I had code for traps in the game engine from as far back as Wa, but never had any traps (aside from bombs the player set). But I created a 'logic bomb' that severs the player's connection to the 'net and kicks them out. This of course necessitated a search command so the player can check for traps, and a way to disarm them. (Once I had that, I started getting ideas for meatspace traps, but I'll save their implementation for later. I want to concentrate of cyberspace for 0.3.0)

The next thing I want to implement is a passive search so that an observant player might notice traps without having to search for them. Perhaps there can be a 'search engine' software that can enhance the passive search.

After *that*, I want to add a few more monsters to cyberspace, one or two other things and after a bunch of testing I should be ready to release 0.3.0. I'm not going to name a date, but over the next 2 or 3 weeks would be nice.
crashRun: the roguelike
17 June 2008 @ 10:52 am
I've been finding myself a bit too busy to do much work on crashRun recently. I haven't totally stalled, but the past couple of weeks I've only been putting in maybe 2-3 hours a week, instead of the 10 or more I'd like to be doing.

Progress is being made, though, and I think I'll have a release of 0.3.x at the end of the month (mainly because I have a mini-holiday over the last weekend in June! Huzzah!)
crashRun: the roguelike
04 June 2008 @ 02:22 pm
I've been mulling over whether or not to make cyberspace levels persistent or not. At the moment, they do not persist, so you jack in, run around a bit and exit, then go back in, you'll generate a new cyberspace level. Since it's so easy to quit cyberspace (there are safe exit points in the maze and you can force-quit [to some consequences] as well), I didn't want players to abuse the system when they encounter a difficult monster by quitting cyberspace, going back in, beating up the monster, quitting again, etc.

However, non-persistent levels opens the game up to level-scumming (the term for games with non-persistent levels where if you don't like a level, you go up the stairs and back down again to generate a new level). Particularly because I want to add features like training simulators where you can improve your stats or skills. I don't want the player sitting on a relatively easy level and boosting his skills like crazy.

So what to do?

If I persist the levels, I could: (1) Save the rng seed so that each time the player goes back to the level, it is reset. He'll have to do it all over again. (Although this opens up another kind of scumming). Or (2) Save the entire state of the level, so when the player goes back, he's restored to the same state he was in (HP loss, etc.). But then there are a bunch of inconsistencies to deal with. Like, if the player goes up a couple of levels, and then goes back to an old cyberspace level, should he then have the old state?1.

With non-persistent levels, the simplest thing to do is to save and re-use the special features (like training simulators) so that when the player goes back to cyberspace, the maze is reconfigured by the special squares are the same as before.

1 It occurred to me that I could have two entirely separate set of stats for the character, a cyberspace set and a meatspace set, and they would develop separately. So you could advance your virtual self in level at a different rate than your real self. That's sort of a fundamental change to how the game would play, though.

By way of progress report: you can now enter and exit cyberspace and I've implemented cyberspace combat. Also, I stole grid bugs (who stole them from the novelization of the movie Tron) from nethack. I made them act the same as they do in nethack. I moved the stair/lift security inside cyberspace so if you need to enable a disabled staircase, you need to go into cyberspace to do it.
crashRun: the roguelike
01 June 2008 @ 11:08 pm
I've started working on the cyberspace levels. The player can now enter cyberspace through the terminals scattered through the complex. He can't exit out of cyberspace yet, though :P So elevator security access is going to be moved inside the matrix, but security cameras are going to stay out, I think. It seems to reduce the utility of them to have to wander through the maze looking for the cameras. But I might move them in as well. We'll see.

Screenshot of cyberspaceCollapse )

I figure it's going to be a week or two before I can release a 0.3.0 version that includes some of the new cyberspace features.

I'm a bit concerned that by using mazes, crashRun will get the same complaints as the Gehenom mazes in Nethack, but I'm hoping they won't be so bad here. The player will often be going into cyberspace to meet a specific goal like enabling the stairs or such and he's free to quit after them. And he won't have to trudge through maze after maze after maze.
crashRun: the roguelike
30 May 2008 @ 09:36 am
I've been taking it a bit easy since pushing out 0.2.1 on Monday. I fixed a couple of bugs here and there; I think I got the graphic glitch where it was missing squares that should have been drawn. I think it was because of a performance hack I tried very early on: tracking when map squares had actually changed and only drawing the ones that needed to be drawn. But removing that didn't seem to have any percetible impact on game speed to I just removed it entirely. Less complication to worry about. The other was that when a roomba vacuumed up a lit flare, the squares around it were still considered lit up.

Otherwise, I've been jotting down notes on how cyberspace is going to work. I also implemented the maze generator for cyberspace maps. Hopefully over the weekend I'll begin to make some headway into implementation.

Unless a really serious bug is uncovered, I probably won't do another release until 0.3.0, which will feature a decent chunk of the cyberspace functionality. I think I will leave the ability to take over other robots for 0.3.x because I'd like some feedback on the basic elements of cyberspace before making massive changes to the codebase.

I had this idea recently: to allow the player to go shopping before the game, so they can customize their inventory. Want better armour but less other stuff? Sure! You'd prefer to start with a flashlight and some flares, and fewer amphetamines? Alright! That's a little lower on the priority list, but I think it'd be a nice feature for users. I'll probably include an option to just go with the "basic kit" because I find I appreciate how simple it is to whip up a crashRun character and get going.

According to my (possibly sketchy) website statistics, crashRun has been downloaded 40 times. If there is a 10% retention rate, there could be as many as 4 payers worldwide! Five, if you count me. I'm pleased to say it's become my lunchbreak roguelike. It may be a father's love of his creation, but I've been having a lot of fun playing it.
crashRun: the roguelike
26 May 2008 @ 01:37 pm
I published an update to crashRun that fixed the rampant CPU usage problem.

Also included in this version is an examine command ('x') that'll let you look around at the things on screen, and rubber boots! Making crashRun the first roguelike to ever feature rubber boots as an equipable item.

Although I wouldn't be surprised to learn the latter statement was incorrect...