Re: Towards less atomic moves in a roguelike



JSwing wrote:
Gerry Quinn <gerryq@xxxxxxxxxxxxxxxxxxx> wrote:

Of course this works fine in party-based CRPGs, and you can have longer steps than 5 units.

My only comment is to keep the maximum number of steps fairly limited. It's tempting to add in bonuses that increase the number of steps the player can take, but it can lead to things like this:

Turn 1: there's an orc in the way
#######
#.....###
#.@.o.-..
#.....###
#######

Turn 2: the player has bypassed the orc and locked the door behind him, and the orc is clueless.
#######
#.....###
#...o.+@.
#.....###
#######

This happens in situations where the speed of the @ is much greater
than the speed of the o in games with a speed system anyway, from
the o's point of view.

I think one solution is to use the message_notify methods generally,
to at least have something to key on for the o's AI routines. Oh...
message_notify is a set of routines I use to control sending messages.
Originally to the player character, but after looking at this I may
let everybody receive them. Basically, message_notify gives a
priority and a message to another monster (or to all monsters in a
small area). If the monster has a message priority setting less
than or equal to the message priority, then the message goes into a
buffer and gets sent to the creature's AI routine (in the player's
case it gets displayed on the screen) the next time that creature
has a turn.

Up to now I'd been setting all the monster message priority settings
to -1 (highest priority message, used for things like dywypi, etc,
is 0, so their message buffers stay empty), but looking at the above
situation, the distinction in how it gets handled if the slow one
is the player character and if the slow one is a monster means
that's distinctly unfair to monsters.

If the message priority setting is high enough, a player character
facing a turbo-tortoise in the above situation would get notifications
as a monster moved into squares within 5 squares of the player and
notifications as doors in that range were opened and closed.

"The turbo-tortoise moves to the square northwest of you."
"The turbo-tortoise moves to the square north of you."
"The turbo-tortoise moves to the square northeast of you."
"The turbo-tortoise moves into the doorway 2 squares east of you."
"The turbo-tortoise moves to the square 3 squares east of you."
"The door 2 squares east of you closes."

Maybe I should implement a message about meta-actions like
passing through a door, too, so the character could get that
without getting all the individual movement messages. But
anyway, even when facing something with ten times his speed,
the player wouldn't be utterly clueless about what was going
on, unless he'd set his message priority setting low to avoid
being bothered by "too many messages." And that would be his
own fault. (But ergh: the message blizzard in a complicated
combat situation with dozens of enemies...)

It's really easy to set things so that messages get passed to the
monster's AI routines. It will be much harder though to write
monster AI routines that do something meaningful with them. Hmmm.
Maybe there should be "last observed position" messages for every
monster that was in sight on the previous turn.

Bear


.



Relevant Pages

  • Re: Animating monster moves?
    ... forcing a few milliseconds between each consecutive move a monster ... time the player moves the monster appears to teleport a short distance ... Basically what I'm considering doing is adding a screen refresh ... visible squares and then redisplay those squares individually. ...
    (rec.games.roguelike.development)
  • Mikes Adventure Game - Mini FAQ - Traps, Food, Potions, Scrolls, Experience Levels, Objects,
    ... Mike's Adventure Game - Mini FAQ - Traps, Food, Potions, Scrolls, ... Experience Levels, Objects, Treasure ... Making the player a more effective ... until a monster steps on it when the monster is ...
    (rec.games.roguelike.development)
  • Re: YANI: IRC #nethack ideas collection #18
    ... The problem with that comes when the player is to offer it, ... If the player's killed one of that monster ... down to monster species (like dragon, lizard, poultry, humanoid/human, ... armor to my pet Archon without having to wait a year for them to drop ...
    (rec.games.roguelike.nethack)
  • Unangband Dungeon Generation - Part Seven
    ... there are two ways that a player can be affected by monster attacks. ... I wanted to add the ability to define trap ... A water source could be the waves washing around a water ...
    (rec.games.roguelike.development)
  • Re: On AI - The best systems
    ... and if expending the item is estimated to be more ... useful to the monster than moving/attacking/fleeing normally, ... but from the viewpoint of the player it is a very powerful ... holding down the fire button of a wand isn't "going ...
    (rec.games.roguelike.development)