Jump to content

TROGBlog

  • entries
    47
  • comments
    219
  • views
    125,210

Hunt the Wumpus v0.08


TROGDOR

2,102 views

htw08qt7.png

Death awaits you all, with nasty sharp pointy teeth!

 

 

Features:

htw08.asm 08/05/06

- Added Death by Wumpus cut scene.

- Added death detection (walking into rooms with pits or the Wumpus.)

 

To Do:

- Expand Wumpus clues so they appear in all rooms that are within 1 or 2 rooms of the Wumpus.

- Add death detection (walking into room with Wumpus or Pit)

- Add the ability to shoot your arrow at the Wumpus, so you can actually win the game.

- Add death music and victory music.

- Add cut scenes for Wumpus death, Pit death, arrow shooting, and victory.

- Add title screen and music.

- Add check to prevent player from starting in a hazard room.

 

Known Issues:

- There is still one scanline of unwanted black lines at the top of the screen that I haven't cleared out yet, but the rest of the lines are gone.

- Most of the scanline bounce has been cleaned up. There are still a couple frames in the death scene that are not 262 scanlines.

- There are artifacts in the teeth of the death scene that need to be cleaned up.

9 Comments


Recommended Comments

I like this game. There are places it needs a little more polish, but I really like the "dungeon exploring" feel, and the fact that the maps are generated fresh each time.

 

I have occasionally run into the dentes frendentes video screen totally unexpectedly; I wonder whether it was a bug in the game's markers or a bug in my thinking. Too bad there's no way to show the random seed for a board to allow recreating it, though perhaps it would be possible (at least during debug) to add a means to replay the current game.

Link to comment

Thanks for the feedback guys. :lol:

 

Supercat, you are correct that the game needs more polish. I've got a new game progress meter in the upper right corner of my blog, and 63% is probably a generous assessment of this game. There are still plenty of things to add, especially given that I haven't even used up 2K of an intended 4K cart.

 

As for running into the Wumpus unexpectedly, I could see that happening at the beginning of the game, but as long as you start in a blank room (i.e. a clueless room), you should be able to use logic to predict when you are at risk of getting killed. I've played hundreds of test games, and I haven't run into an instance yet where the markers didn't match the hazard placement.

 

It is possible to use the Stella debugger to seed a game. Using the same 4 binary numbers in the random number generator will create the same game every time. The number that is in Rand1 through Rand4 just before pressing the reset button will consistently define the resulting map. Currently, I don't seed the random number generator, so the first game is always the same. In fact, if you play four games, and then reload the ROM, and play 4 more games, you'll notice that those 4 games are the same. I'll fix this by occasionally popping a bit out of the generator, and planting a time-based seed when the reset switch is pressed, so that every game will be completely random.

 

I also intend to add another feature such that after you are killed, or win, all the tiles of the maze will be exposed, and you can use the joystick to cycle through the 4 screens to see the maze that you just lost or won.

 

Note that currently death by either the pits or the Wumpus will take you to the Wumpus death scene. At some point in the future I'll add a different cut scene for the pit death.

 

Cignus ustus cantat?

Link to comment
Cignus ustus cantat?

 

Indeed. "I see gnashing teeth" seemed a good description of that screen, don't you think? Out of curiosity, did you recognize the reference without having to google it?

 

I've seen the game occasionally "visit" a room at the top of the screen when my player was near the bottom. I wonder if a spurious "visit" to a Wumpus or cave room might be deadly.

 

BTW, would it be possible to accommodate a higher skill level with more rooms? It seems like it should be pretty straightforward to store rooms using four bits each (other than the Wumpus and pit rooms, which can be handled by using one byte each to say where they are, there are sixteen room types: four types of TL/BR curves (not explored, upper-explored, lower-explored, or both explored); four types of TR/BL curves (likewise); four types of unexplored rooms (no clue; Wumpus clue; pit clue; both clues); four types of explored rooms (likewise). Packing rooms in this fashion would allow 144 rooms in 72 bytes, plus one byte each for Wumpus and pit locations.

 

If you keep your "Wumpus clue" rules, it should even be possible to accommodate a 16x16 map, though it would be harder. You'd need to have a random-seed generation rule to allow the random seed for each 4x4 screenful of rooms to be derived from the master seed. Then you'd have two bits for each room/space: for hallways it would indicate upper-explored or lower-explored; for rooms they would indicate explored/not and pit-clue or not. The 16x16 grid would thus occupy 64 bytes, plus something for the seed, plus one byte for each pit location, plus five bytes for the Wumpus and Wumpus-clue locations, plus 8 bytes to hold the current screen grid.

 

Maybe I'm thinking too ambitious. Even in its present form the game is surprisingly addictive.

 

Other ideas: give the player one "bridge" spell which can make a pit crossable. The bridge must be deployed in the room/hallway immediately before the pit, and will be wasted if used in the wrong place. Give the player one arrow which will bounce around walls and pass through rooms. To kill the Wumpus the player must shoot from the adjacent hall/room; a ricochet into the Wumpus will awaken him and cause him to move by one room (possibly into the player). Finding and shooting the Wumpus would still be possible, but would be made more difficult especially if the clues didn't update.

Link to comment

Hi Supercat,

Indeed. "I see gnashing teeth" seemed a good description of that screen, don't you think? Out of curiosity, did you recognize the reference without having to google it?
Unfortunately, (sic) I did have to Google it. I'm familiar with Orff's O Fortuna. I studied it in Latin class in college. But we didn't cover the entire text of Carmina Burana. Still, it's very appropriate given the context. :lol:

 

I've seen the game occasionally "visit" a room at the top of the screen when my player was near the bottom. I wonder if a spurious "visit" to a Wumpus or cave room might be deadly.
This is playing version 0.08? A bug similar to this was in older versions, but it should be fixed. I haven't been able to reproduce this bug in the current version. Please provide more details of how this happens if you notice it again.

 

Those are interesting suggestions for difficulty. The odd thing about Hunt the Wumpus is that to make it more difficult, you don't add rooms. Rather, you take them away. Or, more specifically, you raise the ratio of tunnels to rooms. The more twisting tunnels you have, and the fewer rooms you have, the harder it is to predict where an expected room will be.

 

Again referring to the original TI99 game, it used the following variables to define difficulty:

 

EASY MAZE: 32 Caverns

HARD MAZE: 24 Caverns

PRO MAZE: 16 Caverrns

 

The TI99 version used an 8 by 6 maze of tiles, so it only had 48 tiles for all games. Expanding the size of the maze makes the game easier because the more empty rooms you encounter, the easier it is to deduce where the Wumpus is not. The extra rooms essentially become filler. Just extra stuff to explore without much impact on the game.

 

From a more practical perspective, I currently use one byte of RAM per room. I could pack the rooms as you have suggested, but this probably wouldn't be compatible with the kernel, which already has to draw 4 clues, a ball player, and 4 asynchronous playfield bytes every 2 scanlines. The unpacking of data wouldn't fit in those constraints. In a 4LK, I only have 8 cycles that aren't used (out of 76 x 4).

 

Mathematically, it requires a maximum of 23 rooms to cover all the clues. 4 clue rooms for each pit, plus the pit itself = 10 rooms, then another 12 clue rooms for the Wumpus, and one for the Wumpus itself = 13. My difficulty levels, taking into consideration that there are 64 tiles, will be more like:

 

40 caverns, easiest

32 caverns

24 caverns

20 caverns, most difficult

 

The demo version you're currently playing has a 50 percent chance of placing a cavern (vs. a left or right tunnel), so it's essentially the second level of difficulty (32 caverns.)

 

The other difficulty options will be:

 

Guided arrows: Firing an arrow into a tunnel will automatically follow the path of the tunnel to hit the Wumpus.

Non-guided arrows: You must be right next to the Wumpus' lair to hit with your arrow.

 

Bat / no bat: This will use a difficulty switch. As mentioned, I'm not a big fan of the bat, because he can cause random deaths. I prefer to battle the raw logic of the game, where the only thing you have to blame if you die is yourself.

 

1 room Wumpus clues vs. 2 room: Currently, the game places a clue in all rooms that are one room away from the Wumpus. A more difficult version will place a clue in every room that is 1 or 2 rooms away from the Wumpus (this is where I get the 12 clue rooms calcuation above.) This may sound like it would make the game easier, but it actually makes the game much harder, as it requires a lot more exploration before you can deduce the location of the Wumpus.

 

The TI99 version also had "Blindfold" and "Express" modes. Blindfold meant you could only see the room you were currently in. I never played with that option, because it was taxing to retrace my steps many times over to make sure I was remembering the maze correctly. This revisits the tedium of the original text version, which required pencil and paper (or an exceptional memory) to win.

 

The express mode meant that once you walked into a tunnel, you would automatically follow the entire length of the tunnel and end up in the connecting room. This undermines the exploration aspect of the game, and also prevents the non-guided arrows option, which I think is a better challenge. As such, I'll be leaving both these options out of my game.

 

I have considered the possibility of adding 1 rope, similar to your suggestion of bridges. The rope would be placed randomly somewhere in the maze. When you found a rope, it would be added to your inventory. You could then use the rope on one pit room, making it harmless. You would use it on the room in a similar fashion to how you kill the Wumpus. You would select the rope, and then point in the direction of the room to use it on. If the target room is not a pit, you lose the rope and there's no effect. If it is a pit room, the pit hazard is removed, and you can then move through the pit room safely. The main purpose of the rope would be to access the Wumpus in the random chance that his lair is completely isolated between two pits. In this case, the game would be unwinable without the rope option, and an unwinnable situation isn't very fair to the player.

Link to comment

The death sequence looks good! However, there is some PF garbage on the left side of the screen which suggests that your PF write timings are a little off. I find the PF timing diagram to be very useful for fixing bugs like this.

 

Chris

Link to comment
This is playing version 0.08? A bug similar to this was in older versions, but it should be fixed. I haven't been able to reproduce this bug in the current version. Please provide more details of how this happens if you notice it again.

 

It's possible I was just imagining it in the later version or that I got myself confused. I'll keep an eye out for it. Having played the game some more, I've noticed that there can sometimes be 'surprises' with the pit placements. There may be a room with a known pit next to it, and there may be "pit clues" a screen away, and yet those pit clues might in fact all lead to a pit that's right next to the room which is next to the known pit. :lol:

 

- From a more practical perspective, I currently use one byte of RAM per room. I could pack the rooms as you have suggested, but this probably wouldn't be compatible with the kernel, which already has to draw 4 clues, a ball player, and 4 asynchronous playfield bytes every 2 scanlines. The unpacking of data wouldn't fit in those constraints. In a 4LK, I only have 8 cycles that aren't used (out of 76 x 4).

 

- Mathematically, it requires a maximum of 23 rooms to cover all the clues. 4 clue rooms for each pit, plus the pit itself = 10 rooms, then another 12 clue rooms for the Wumpus, and one for the Wumpus itself = 13. My difficulty levels, taking into consideration that there are 64 tiles, will be more like:

 

- If you find yourself tight on RAM, you might consider 'packing' the rooms that aren't currently on screen; when you go from screen to screen, pack the current room and unpack the new one. That would allow the kernel advantages you currently enjoy while saving 16 or 24 bytes (which in 2600 terms could be huge).

 

- Wouldn't there be 16 clue rooms plus the Wumpus room? Four rooms at distance 1, and each of those could have another at distance 2.

 

- Those are interesting suggestions for difficulty. The odd thing about Hunt the Wumpus is that to make it more difficult, you don't add rooms. Rather, you take them away. Or, more specifically, you raise the ratio of tunnels to rooms. The more twisting tunnels you have, and the fewer rooms you have, the harder it is to predict where an expected room will be.

 

- Guided arrows: Firing an arrow into a tunnel will automatically follow the path of the tunnel to hit the Wumpus.

Non-guided arrows: You must be right next to the Wumpus' lair to hit with your arrow.

 

- Bat / no bat: This will use a difficulty switch. As mentioned, I'm not a big fan of the bat, because he can cause random deaths. I prefer to battle the raw logic of the game, where the only thing you have to blame if you die is yourself.

 

- 1 room Wumpus clues vs. 2 room: Currently, the game places a clue in all rooms that are one room away from the Wumpus. A more difficult version will place a clue in every room that is 1 or 2 rooms away from the Wumpus (this is where I get the 12 clue rooms calcuation above.) This may sound like it would make the game easier, but it actually makes the game much harder, as it requires a lot more exploration before you can deduce the location of the Wumpus.

 

- Adding rooms without adding hazards would have the effect of making the game easier. Adding both rooms and hazards, however, may not, depending upon the ratio of rooms to hazards.

 

- Well, sometimes one is faced with a pure guess.

 

- What happens if you fire an arrow incorrectly? I don't aesthetically like having such a non-fatal action end the game, but having the arrow bounce some random distance until the player finds it again might be good. Something players would want to avoid having happen, but not entirely fatal.

 

- Definitely a desirable thing to have as a difficulty-switch option.

 

The express mode meant that once you walked into a tunnel, you would automatically follow the entire length of the tunnel and end up in the connecting room. This undermines the exploration aspect of the game, and also prevents the non-guided arrows option, which I think is a better challenge. As such, I'll be leaving both these options out of my game.

 

There are times when proper play requires walking into a tunnel with the intention of not necessarily walking through to the next room. For example, if a row contains a "green" room, then an unexplored space, and then a "red room", the space between cannot be a pit or the Wumpus. It may, however, contain hallways that lead to one or both. Perhaps it would be useful to have a semi-express option which would allow the player to move quickly among explored passages but manually in unexplored ones. On the other hand, the 'wall hugging' works well enough this probably isn't necessary.

 

I have considered the possibility of adding 1 rope, similar to your suggestion of bridges. The rope would be placed randomly somewhere in the maze. When you found a rope, it would be added to your inventory. You could then use the rope on one pit room, making it harmless. You would use it on the room in a similar fashion to how you kill the Wumpus. You would select the rope, and then point in the direction of the room to use it on. If the target room is not a pit, you lose the rope and there's no effect. If it is a pit room, the pit hazard is removed, and you can then move through the pit room safely. The main purpose of the rope would be to access the Wumpus in the random chance that his lair is completely isolated between two pits. In this case, the game would be unwinable without the rope option, and an unwinnable situation isn't very fair to the player.

 

I would suggest that the game initialization start by picking a random location and then wandering randomly (but not going through traps), dropping the following items in the indicated order (adjust as appropriate when items aren't used)

  • All but one pit (before anything else)
  • The Wumpus (before the arrow)
  • The Arrow (any time after the Wumpus)
  • The last pit (before the rope)
  • The rope (any time after the last pit)
  • The Player (after everything else; only drop in 'clear' room)

If it's not possible to place all items, re-randomize. After placing all items, check to ensure that a reasonable portion of the map is accessible without going through traps. If not, re-randomize.

 

This will always generate a solvable puzzle, though not necessarily one that can be solved through logic alone. It also avoids putting the player on an immediate "guess" (it's really not fair if the player wanders into a pit or the Wumpus before getting any useful clue).

Link to comment

Chris,

 

The PF garbage is actually intentional. The true garbage is coming from the replicated P0 and P1 sprites of the teeth, and the extra PF half-line was a half-assed attempt to compensate the fact that the first line of the teeth start in the middle of the screen. I need to do more research on sprite replication to figure out why the sprites aren't starting clean relative to the left side of the screen.

 

Supercat,

 

Remember that there are 2 pits. It is possible that a single pit clue is referring to two different pits, so even if you figure out where a clue should be pointing, you need to have a good idea where both pits are before you can be absolutely sure.

 

Your suggestion for RAM compression makes sense, but I'm going to stick with an 8x8 grid for now.

 

It would be theoretically 16 clue rooms for the Wumpus, but in practice it would more likely be 12, as some of the clues would overlap in the 2-room-clue scenario. Try drawing out a 16 clue example, and you'll see what I mean.

 

If you misfire your arrow, you die. Hunting Wumpuses is a dangerous line of work. There will be a fictional background story that explains why you only get one shot. The arrow is a magic daemon-slaying arrow, provided by the Frobozz Dungeon Delving Corporation. Those arrows are extremely expensive, and the company is concerned about their bottom line, so you only get one per assignment. If you miss, the fired arrow makes a racket, and the Wumpus is on you in seconds. This may sound harsh, but it's what I'm used to from playing the TI99 version. And it adds a lot more suspense when you do finally decide to take that shot.

 

Thinking more about this, I've come up with another difficulty option, possibly tied to the right difficutly switch. In the advanced position, you don't start with an arrow. You have to search the maze to find the arrow that was fired by the last would-be exterminator, who fired it and missed his mark. :lol:

Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...