Re: Towards less atomic moves in a roguelike
- From: Ray Dillinger <bear@xxxxxxxxx>
- Date: Sun, 04 Jun 2006 08:55:32 -0700
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
.
- Follow-Ups:
- Re: Towards less atomic moves in a roguelike
- From: JSwing
- Re: Towards less atomic moves in a roguelike
- References:
- Re: Towards less atomic moves in a roguelike
- From: JSwing
- Re: Towards less atomic moves in a roguelike
- Prev by Date: Re: content scripts, mainly map scripts, questions
- Next by Date: Re: Towards less atomic moves in a roguelike
- Previous by thread: Re: Towards less atomic moves in a roguelike
- Next by thread: Re: Towards less atomic moves in a roguelike
- Index(es):
Relevant Pages
|