Chaosforge Forum

DoomRL => Requests For Features => Topic started by: Dervis on October 26, 2007, 03:54

Title: Intuition
Post by: Dervis on October 26, 2007, 03:54
In my opinion Intuition is about knowing where are the safe/dangerous parts of the map, and as it is now it's being used to shoot monsters out of sight. So I suggest redesigning intuition(3) in the following way to make it less exploitable:

1 - Remove the Eagle Eye prerequisite for melee and shotty guys to be able to get it if they want.
2 - Instead of showing red dots all the time, i'd suggest making it show all the monsters in the map but only on certain times, namely on map entry and whenever you gain xp.

This way you'd remove the control from people having knowledge of where monsters are all the time and would reward doomish players on a killing spree.
Shouldn't be hard to code either imo, you just have to stick it on the routine you use for xp.
Title: Re: Intuition
Post by: 007bistromath on October 26, 2007, 06:54
I like the goal, but would accomplish it in a different way. A door that has Something Bad behind it gets colored red. Ideally, this shouldn't be just any monster. You don't care if there's a grunt in there. But you might care if there are four grunts, a sergeant, and an imp, or a pair of cacos. So, Something Bad is defined as a monster or group of monsters which constitute some high percentage of your current XP.
Title: Re: Intuition
Post by: Potman on October 26, 2007, 09:49
Or how about putting dots on the edge of your vision range, that'd show the general direction and power of an enemy? Like, if there's a green dot on your right, it means that there's a weak enemy or two on your right, while a yellow one would mean many weak or a couple of more stronger enemies. Red dot would either mean many moderate-strength foes or a single very powerful one, and purple would be many powerful enemies.
Title: Re: Intuition
Post by: Zeb on October 26, 2007, 15:21
Or how about putting dots on the edge of your vision range, that'd show the general direction and power of an enemy? Like, if there's a green dot on your right, it means that there's a weak enemy or two on your right, while a yellow one would mean many weak or a couple of more stronger enemies. Red dot would either mean many moderate-strength foes or a single very powerful one, and purple would be many powerful enemies.

I actually brought up something like this back when everyone was talking about how to nerf Int(3), and I still think it would be a good idea. One change I'd make is to also make the dots dependent on how close to the group of monsters you are. For example, if you're all the way on the right side of the map, and a group of Arachnatrons are all the way on the left, it wouldn't make sense to show a purple dot right away. May if they're within one viewing range of the edge of your viewing range, it'd be the correct priority (in this case, purple) and if they were withing two viewing ranges they'd be red, and anywhere else would be yellow. Lesser threats would use the same system, with red-yellow-green for red threats and yellow-green-nonappearing for yellow threats for instance. That way, you'd be better able to gauge the path of least resistance. (or if you're in a fighting mood, the path of most resistance.)

Also, to make up for not knowing exact locations, I'd have stairs show up with Int(3). There's no way a master DooM player wouldn't know where the exits are, and that would make it a useful trait for builds that would be having to run away a lot.
Title: Re: Intuition
Post by: Const on October 26, 2007, 16:05

2 - Instead of showing red dots all the time, i'd suggest making it show all the monsters in the map but only on certain times, namely on map entry and whenever you gain xp.

This way you'd remove the control from people having knowledge of where monsters are all the time and would reward doomish players on a killing spree.
Shouldn't be hard to code either imo, you just have to stick it on the routine you use for xp.

Not so easy. Drawing an output is quite different routine. And it's hard to connect them. And what can be meaning of that Intuition? It's hard to remember, where enemies was, and not very helpful - enemies are moving.

A door that has Something Bad behind it gets colored red.

Also hard to realize. How program can to know, is the enemy behind a door or not?
And some levels haven't doors.

Or how about putting dots on the edge of your vision range, that'd show the general direction and power of an enemy? Like, if there's a green dot on your right, it means that there's a weak enemy or two on your right, while a yellow one would mean many weak or a couple of more stronger enemies. Red dot would either mean many moderate-strength foes or a single very powerful one, and purple would be many powerful enemies.

But how the program can distinguish some single monsters from a group? And direction of which monster in group program must show?
And about monster strength - it's very subjective. IMHO, it's better and easier to show monster type.
Title: Re: Intuition
Post by: BDR on October 26, 2007, 18:34
For my idea on how the determination of threats with Int 3 should be handled, I think that these presumptions are likely correct:

1. The program always has the map on hand (nearly full maps are dumped on death, and there's also the Computer Map powerup).
2. The program can tell how far away the enemies are from the player at all times (a little stretch, but a credible one since you can get exact measurements within sight range; why wouldn't this be possible all the time?).

The most general logic, which could apply on any map (even before we discuss power, red doors, groups vs. singles, and such), is that the game looks to see what's around in the range of one normal vision range past the player's natural sight range (8 squares past the player's, which can be increased with Cateye even though the extra range of Intuition cannot be increased by Cateye, which is likely simpler to program than the alternative of allowing Cateye to directly affect Intuition range [and technically we could make it even simpler by making it so the computer assumes the player has no Cateye ever, which probably wouldn't be a huge deal balance-wise]), and upon finding a monster compares it to the axes; if x/y are zero or equal to each other, there's no more work to be done and the computer puts a green light in the relevant cardinal direction, and if not then the numbers of the cardinal directions are compared to the numbers of the enemy, and whichever cardinal direction is closer gets the light, and if both relevant directions are equidistant, then the computer will make the arbitrary preference of the relevant diagonal direction.  Three examples:

1. Player is at 5, 23; Monster is at 17, 23.  Game checks the axes, finds that the monster position relative to the player position is 12, 0 and sticks a green light in the square to the player's right.

2. Player is at 5, 23; Monster is at 17, 25.  Game checks the axes, finds that the relative monster position is 12, -2, figures out that 12, 0 is closer to that than 12, -12, and sticks a green light in the square to the player's right.

3. Player is at 5, 23; Monster is at 17, 29.  Game goes through this up to the point when it finds that 12, -6 is an equal distance between 12, 0 and 12, -12, shrugs its shoulders and sticks a green light in the square to the player's bottom-right.

Of course, I am not a programmer, so I may be missing something crucial, but from what I know of it that seems easy enough to pull off.  The green light is as far as I can tell the only potentially clumsy part of that (either it covers up items, or it necessitates tiles (one copy for no light and one copy with a light), and I only use that because I'm not sure what else would work better for a *basic* rendering of the idea.  The next part of that is to compare monster proximity; that could be done by comparing single relative monster positions to each other (within the detection range of Int 3, obviously).  Monsters within normal sight range (8 tiles as I understand it) of each other are, for the sake of simplicity, considered a part of a group.  This is probably not the best way to do it, and ideally walls/doors would be taken into account, but as I said, I'm not a programmer, so I'm trying to go a bit slowly here.  Also interesting to me is the idea that Intuition 3 can still be considerably useful even if it (and perhaps because it) incidentally overestimates the danger, so it may not be a problem to have this behavior to begin with.  As for determining group strength... well, that seems like a tough case.  Either too much gets into the formula and it becomes crazy convoluted, or not enough gets in and the players disagree.  I'd take armor, damage, health, and experience into account, but that may be too much... not sure how I'd fix that.
Title: Re: Intuition
Post by: 007bistromath on October 26, 2007, 19:57
Counting the number of monsters in a room/area should be trivial. That's not just a blob of spreadsheet cells you're walking across; maps in roguelikes are created by fitting together predefined "pieces" of a dungeon, with the possible exception of cave levels. With this in mind, simply create a function which takes the XP total of all the monsters in each "piece," and colors the entryways to that piece (door or not) accordingly.

PS: I agree that Int3 should show the stairs. If paired with some kind of "threat monitor" concept such as we are toying with in this thread, it would bring some tension to the game by encouraging the player to take calculated risks.
Title: Re: Intuition
Post by: Const on October 27, 2007, 12:47
  Monsters within normal sight range (8 tiles as I understand it) of each other are, for the sake of simplicity, considered a part of a group.

Not so easy.

How about such thing:



                            #......#O.
                            #......#..
                            #......#O.
                            +......#..
                            #...@..+O.
                            #......#..
                            #......#O.
                            #......#..
                            #......#O.
                            #......#..


How your Intuition must show that Cacodemons?

Counting the number of monsters in a room/area should be trivial. That's not just a blob of spreadsheet cells you're walking across; maps in roguelikes are created by fitting together predefined "pieces" of a dungeon, with the possible exception of cave levels. With this in mind, simply create a function which takes the XP total of all the monsters in each "piece," and colors the entryways to that piece (door or not) accordingly.


Entering to room, player can stand before strong monsters from adjacent rooms, if there are some breaches in walls. It's very bad to enter to "safe" room and stand before three AV. False information is worse than no information.
Title: Re: Intuition
Post by: Potman on October 27, 2007, 13:45
Entering to room, player can stand before strong monsters from adjacent rooms, if there are some breaches in walls. It's very bad to enter to "safe" room and stand before three AV. False information is worse than no information.

That'd give its own awesome spicing to the game, don't you think? Never being sure about what awaits you on the other side of the door.
Title: Re: Intuition
Post by: Const on October 27, 2007, 14:46
Never being sure about what awaits you on the other side of the door.

And what can be a sense of the perk, if it gives very unreliable information? It would be better to take another perk, which has undeniable usefulness.

Common part of all proposed intuition*3 in what, that all of them have very questionable usefulness. It's better to cap intuition by 2 level, than to create hard-programmed useless perk.
Title: Re: Intuition
Post by: 007bistromath on October 27, 2007, 16:17
Const: there isn't any reason I can think of that the coloring of a particular zone's entryways shouldn't change when monsters move from one place to another.