Friday, March 22, 2013

What Happens When You Complete "A Man and His Droid"

My dreams last night were weird. It's kind of a jumbly haze now, or perhaps a hazy jumble, but the main thing is that it's hard to express clearly what happened.

I think I was driving in a car with Randall Munroe and we were trying to get to the top of an extremely tall parking structure. For some reason, it was necessary to collect a variety of different species of octopuses on the way, and in fact, I think collecting these cephalopods and organizing them in some important fashion was somehow the means by which we were travelling up the structure. Frustratingly, they were bigger than regular octopuses, and they were angry and mean and hostile to us and kept trying to attack our vehicle. And to make matters worse, Randall and I couldn't agree on the order in which the many monstrous mollusks should be gathered. It was a losing arrangement from the get-go.

And then at some point I think we gathered enough of the eight-leggers to be awarded a private concert given by Robert Fripp. Unexpectedly, he was a stop-motion animated clay Fripp. And he had five torsos. And rainbow colored hair. And his hair was in the form of large bundles of wheat.

So that was fairly normal, but otherwise, I seem to recall that my dreams were weird last night. I just can't really remember any of the weird parts.

Saturday, March 16, 2013

7DRL Challenge 2013: Uushuvud (End of Day Five)

A rough Windows only version of Uushuvud is complete. You can download it here. I hope, I hope, I hope that it will run on your machine.

In Uushuvud, you have mysteriously been transported into another world called Uushuvud, where your head has mysteriously been transformed into an '@' symbol. You must attempt to survive long enough to find out what's going on and how you might be able to get your head back to normal and get home.


Keypad/Arrow Keys: Move or attack adjacent enemies
P: Pick up items
R: Read books
H: Use health potion (restores 20 HP)
T: Use teleport potion (randomly teleports you somewhere within a ~60 cell x ~60 cell square area around your current location)
E: Use explode potion (hits all enemies within 5 cells of your location with fire)
X: End level (only valid in "end-of-level" temple (a big room with a small room inside with a lighter floor color))

Q: Quit (no confirmation dialog at all; this will immediately close the program)

Known issues:

  • Swords appear as black squares. I haven't been able to figure out why.
  • When you die, the program instantly closes. There is no "You died! Sorry!" screen or anything.
  • The enemies get stuck on rocks and walls easily.
  • The game is a little hard. This is a feature, not a bug. It's a roguelike.
  • "Tablespoons" is misspelled in the partial apple pie recipe. You might say this is an issue so minor that a point on a "known issues" list isn't warranted, but think again! The pies come out tasting weird. Does this sound unimportant to you?
  • Don't accidentally press 'Q'. You will lose your progress.
  • Pick up every potion in a level before travelling to the next one. This is especially true on early levels where the situation isn't very dangerous. You will need those potions later.
  • The number printed before weapons and armor is the level of the item, not a quantity. I know it looks weird, but whatever...
  • If you pick up a weapon or armor, you will discard your current weapon or armor. It is gone forever, so don't pick up equipment that's worse than what you already have.
  • Try to avoid using explode potions on single enemies. The ability to attack multiple nearby enemies at once is valuable. Try to lure them together.
  • The enemies get stuck on rocks and walls easily. You can use this fact to help you escape when running low on HP and potions.
  • Beware of Gaums.
  • Spears and axes are generally the best weapons, followed by swords and maces, then clubs, and finally daggers. However, when choosing which weapon to use, also consider the weapon's level. A 12 Dagger is better than a 1 Spear.
  • Armor from worst to best: Leather, Iron, Steel, Tempered Steel, Perfect Steel
  • Seriously, beware of Gaums. They are mean.
  • When you level up, your HP increases and is restored to its maximum. Watch your EXP and consider whether health potions might be saved until after you level up.
  • For that matter, keep an eye on your HP at all times.
  • Have I mentioned to beware of Gaums?
  • Good luck!

Friday, March 15, 2013

7DRL Challenge 2013: Uushuvud (Halfway through Day Five)

Things are coming together. Still not quite there yet, but it's looking good!

I'm going to be out of town for the weekend, so today is the last day that I can really work on this. That means if I succeed, this will be a 5DRL! If not, then oh well.

I think I can manage it!!!

Thursday, March 14, 2013

7DRL Challenge 2013: Uushuvud (Day Four)

There's actually not a lot left to do. Running into bugs now though, so I'm going to keep this entry very short.

7DRL Challenge 2013: Uushuvud (Day Three)

No screenshot today, but there will be probably be one tomorrow. You'll have to be patient. :P

My efforts for day three progressed smoothly. I spent a little time tweaking the level generation, but I kept this to a minimum and focused this time only on fixing real problems with it. Aside from that, I got my item and creature data into a much better state than it was in at the end of day two.

If I release the source code at the end of all this, then some might notice that I am hard coding all my data into tables compiled directly into the program and wonder why I'm doing this. The answer is twofold.

First, I'm used to programming for embedded systems with no file I/O at all.

Second, I'm trying to manage my time wisely. For this project, this means not mucking around with file I/O routines. It's a small game. There's no real need to have my data stored in external files. And there's not going to be any save/restore feature. You have to get through the game in a single go. So there's no file I/O, and I can spend my time working on other stuff.

Last time I tried a 7DRL, I got so carried away with level generation that I think I spent three or four days just on that. There wasn't enough time for everything else, and the game slipped past the seven day mark, and then the fourteen day mark, and now it's more like seven months.

I guess level generation is kind of my thing. I've already spent more time on it for Uushuvud than I had originally intended, but I just really wanted it to be good, even though it's a 7DRL project. That means, first and foremost: No unreachable areas.

My algorithm right now could theoretically produce unreachable areas, but I'm pretty sure it's about 1:10000 for that to happen, and probably like 1:80000 for an unreachable area with important stuff in it (the exit, the player's starting point, etc.). If I make another small change I'm planning that'll take me four seconds, it'll be more like 1:204800000, not really a concern. I'm tempted to write a quick check function that verifies a level has no unreachable areas before showing it to the player, but I really just want to get on with other stuff. Maybe if there's time at the end of development...

Wednesday, March 13, 2013

7DRL Challenge 2013: Uushuvud (Day Two)

Everything is white right now, but it will soon be in multiple colors. I spent my first two days mostly developing the level generation for Uushuvud. It is now working to an extent that I consider acceptable. Aside from that, I spent a great deal of time working on the history of the game world and the relatively simple plot that will be present in the game. These are basically finished now. I can focus completely on programming at this point.

I have the beginnings of a data organization scheme for items and creatures, and I think my efforts for today will be focused on fleshing these out and possibly integrating them with the level data, getting items and monsters placed in the game world. If I have time, I'll try to get some basic monster and player movement in place, but we'll see how that goes.

Definitely on track to have this finished by Sunday!

Tuesday, March 12, 2013