YANI - Bots

Archived from groups: rec.games.roguelike.nethack (More info?)

YANI - NetHack Bots

Whether a NetHack robot is possible comes up every so often
on rgrn.

Someone is currently writing one, too.

My idea is to add a programmable "macro" language.

NetHack players are an ingenious persevering lot.
Otherwise we wouldn't play, much less ascend such a complex,
difficult game.

Even minimal, partial implementations of such a language
would get exploited beyond the writer's wildest dreams.
I'm not kidding. Look what's been done with a paste buffer.

<http://groups.google.gg/groups?q=+%22paste+buffer%22+group:rec.games.roguelike.nethack&hl=en&lr=lang_en&ie=UTF-8&scoring=d&selm=8ZNub.18204%24cX1.16603%40fed1read02&rnum=3>

To start with, the language should permit:
- stop & save when it doesn't know what to do next.
(Something at least one of us human players should
do more often.)
- The human player should be able to take over at any time.
- The bot should be able to output simple messages to aid
in following its actions.
- this will help debugging
- can be used for entertainment
- Can be used in "teacher-bots" running on NetHack servers
for newbies (or oldbies) to watch. It would beat the hell
out of TV. (or watching a new player Valk in a 5x13 used
armor shop on Dlvl 4)

What features to add next will be plain - people will be asking
(screaming) for them:
- my never-hit-with-a-wielded-weapon bot needs to check
what's in its hand!
- How can I do my pacifist bot without being able to chat
with my pets or use a stethoscope.
- Pudding farming! Pudding farming!
- Note that others will be silently exploiting possibilities
you never thought of.



- teacher-bots should run until a certain point
- finish mines
- finish sokoban
- finish mines & sokoban
- the quest level
- etc.
Then another bot would start a new game. There would
always be a bot running at low-level for the education
of newbies (& the bot writer).
(Bot playing speed should be adjustable.)

The NetHack community will write bits & pieces of the bot
as time goes by and features become available. Definitive
subroutines will come into common use: "ioay's got the
best bustling-Minetown bot", "Did you see aniy's Fort Ludious
bot on NAO last night?"

Bots could become part of the annual devnull tournament.
- One server would do (lag shouldn't be a problem).
- nice the bots down to the desired load level. (Rewards
efficiency.)
- if the bots are fast enough, break the bot tournament
down into a ladder. first week 1 set of bots, 2nd
week another, third week the winners of the first two
weeks, etc.
- Bots could still stop and wait for the human to take over.
"I guess Asiondopho's bot still doesn't know what to do
with an altar."
- Bots could be penalized based on percentage of human
turns.


I would find watching a bot entertaining. It shouldn't
suffer from the usual human YASD's
- must type fast syndrome
- Victoria's Secret 2005 is on TV
- I didn't notice I as Ill, Weak, Food-Poisoned, Stunned,
confused, hallucinating, blind, burdened, stressed,
strained, overtaxed, overwhelmed, satiated, over water,
over ice, over lava, over my head, bored, etc.

Unusual methods of dying would (eventually) win(?) the day.
Just set the font down to half size & set putty in a corner
of my monitor screen.


Bot-deaths would be almost as agonizing as human player
DYWYPIs. "About to enter the throne room at Ludious &
it didn't watch that red dragon after it froze the moat."

Being able to record & replay the game easily would be a must.
"Why the deity did it do that? I fixed that bug! There should
have been a message there as well."


Once initial development is done, the big problem is testing
& then debugging found problems. Just as the NetHack community
does this for the DevTeam, it could do it for the macro
language write and the bot writers. "Hey Mot, the language
hangs when zapping myself with a wand of speed monster while
wearing speed boots." "Does Exidor know his bot actually
*prayed* when wearing an uncursed amulet of strangulation,
instead of just removing it?" Not that any human player
would do that last one, oh no.


People that really want new features can add them themselves.
New programs/subroutines should be addable on-the-fly.

specialist bots would dominate early. "My new <role> has
a ring of levitation. Time to code up that "levitating
over Elbereth in the dust" routine. Need to add that
to the bot choices and enhance the ai to know when to
make use of it."

"Hey, knights can jump, can't they!" Watching a decent
knight-bot take advantage of #jumping in the early game
would be an education to all of us.


People that dislike certain parts of the game would no
longer have to beg for changes/removal. Just use the
specialist bot for Sokoban/the Castle tune/%$@#*& mazes
in Gehennom.

It would make the game more fun. have bot-assisted
ascensions marked as such, or don't count them at all.
Like Explore mode. The player would still enjoy them
because, unlike explore mode, insta-death would still
lurk around every corner.

A lot of subroutines would be encoding the data in the
spoilers. They're a lot like bot programs already.


With bot programs, NetHack could become a "beer & pretzels"
game as well as "the game that doesn't care if you win."
Watch a bot game to kill 15 minutes instead of killing your
ascendable pacifist because you just woke up/should have
gone to bed a half-hour ago/have a cold. No more waiting
until you're in tip-top shape to enjoy some Nethack.


Jove
25 answers Last reply
More about yani bots
  1. Archived from groups: rec.games.roguelike.nethack (More info?)

    Jagnj wrote:
    > YANI - NetHack Bots
    [merciless snippage]

    I'm sure it's a good idea, but it's way above my head, although your
    mention of a 'teacherbot' got me thinking.

    How about some kind of interactive tutorial mode? If the RNG could be
    persuaded somehow to reproduce the exact same dungeon and the exact
    same monsters, objects, combat results and everything else for a few
    levels when playing in tutorial mode, you could use it to guide a
    newbie player through the mechanics of the game: There would be a
    print-out and follow set of instructions that walks the character
    turn-by-turn through this pre-determined dungeon, showing how to read
    the map, what all the various commands do, when to use them, and
    perhpas even introduce some of the various stategies that players might
    use.

    "In this tutorial you start the game in a 3x3 room. You'll notice that
    there is a door (plus sign) to the north of your starting position and
    another one to the south. Let's go through the north door. Press 'j' on
    your keyboard until your @ sign is standing next to the door. Now press
    'o'..." and so on.

    Just a thought.
  2. Archived from groups: rec.games.roguelike.nethack (More info?)

    I just want a Sokobot like the Puddbot.
  3. Archived from groups: rec.games.roguelike.nethack (More info?)

    > [ Writing bots ... again ]

    Well, I'm still firm in the belief that if there _really_ should be official
    support for nethack bots then there should be an interface for them. Much like
    tty/Qt ports, make a XML port. Or whatever.
    This is so that bot developers can focus on the actual bot development and not
    on parsing the output.
    And game servers could just remove the XML port if they don't want bots to play
    on their server.
    Parsing the tty port is possible, but tedious.

    Of course, I'm just a turn-coffee-into-code-machine :-)
    If you read my code, you will notice that I have hardly any clue about software
    design.
    So, if someone would stand up as Project Leader/Big Poobah/Royal Asskicker I
    will offer the infrastructure for that kind of task:
    - Subversion repository
    - Mailinglists
    - Wiki/CMS
    So that the effort of doing something of this scale will not be fragmented.

    If you are this (wo)man, step forward now or be silent forever :-)


    Greetings,
    Benjamin
  4. Archived from groups: rec.games.roguelike.nethack (More info?)

    Jagnj <Jagnj@Jagnj.invalid> wrote in
    news:j8op61hsr6nmggcp1fnmv2k3dhieujdjk0@4ax.com:

    > YANI - NetHack Bots

    I think a patch to nethack itself that would be necessary (or at least
    desirable) for debugging pruposes is logging moves/messages.
  5. Archived from groups: rec.games.roguelike.nethack (More info?)

    I'd like to see something like this done, and I'd be willing to help
    out in anyway I can. There is a program somewhere (I lost the link)
    called Rogomatic, or something similar. It was a bot which played
    rogue, and won. It used a learning feature, and stored information
    about its games to be accessed and referenced in future games. Nethack
    is, of course, much more complex than rogue, but a group of dedicated
    people should be able to make some progress at least.
  6. Archived from groups: rec.games.roguelike.nethack (More info?)

    The ultimate bot, imho, would be one that was teachable, ala the
    old Electronic Arts games worms. Basically, it would stop each
    time it encountered a new situation and wait for your input. If it
    then needed no further input (because it encountered subsequent
    situations before) it would continue to run until the next new
    situation popped up.

    Ideally, the current state of the bot could be saved off, and perhaps
    even edited later via a properties file that was being built as it
    recorded each decision.

    AliceA

    Get paid to Google: http://netbux.org/?r=56515
  7. Archived from groups: rec.games.roguelike.nethack (More info?)

    Jagnj wrote:
    > YANI - NetHack Bots

    Okay, every so often this comes up, so let's sit down and talk about
    what you'd need to implement a Nethack bot.

    First: There are two options to writing a Nethack bot:

    1. A client-server sort of thing where a program parses uses the
    information coming from the game and creates its own data structures,
    duplicating what Nethack has told it.

    2. An addition to the source, which could then use Nethack's data
    structures, with additions, to keep track of the game world.

    The first approach is more honest, the second is easier but requires
    the person writing the bot to keep a solid, black line between what the
    bot should know and what he doesn't. I suggested before that the
    second would probably be an order of magnitude easier, but the more I
    think about it, the less certain I am that has to be the case.

    Nethack is a very complicated game, with dozens of special cases that
    would certainly elude a learning AI even after hundreds of games, so
    Rog-O-Matic's monster learning algorithms might not be appropriate
    here. Some, like missile-users, Medusa, and pyrolisks, aren't trivial
    for such a program to pick up on. I'd suggest just using a database of
    known behavior for the monsters.

    Another problem is that Nethack's dungeons aren't as simple as Rogue's.
    Most players pick up on Rogue's 3x3 grid quite rapidly, but Nethack
    has a more chaotic method of room placement, and furthermore has mine
    levels, maze levels, special levels that disobey those rules, the
    horror that is Sokoban, and perhaps the toughest problem of all, the
    Plane of Water, which invalidates several fundamental assumptions about
    the game (it has moving items and traps, and also deformable terrain).
    Add in pushable and blocked boulders, trap doors, drawbridges, diggable
    areas, and so forth, and it should be obvious that this is not a
    trivial problem in automated exploration. (Oh, and don't forget the
    Rogue level itself.)

    There are many special places that the game will have to recognize,
    like the Quest (possibly requiring a special algorithm for each
    character class), Ludios, Medusa and Juilbex, the Castle (no down
    stairs there), the Wizard's Tower (non-linear dungeon exploration, the
    bot has to realize he can't get into the center of those three
    Genhennom levels), Vlad's Tower, then searching out the Vibrating
    Square and getting the Amulet. Each of those things are probably best
    handled by special cases in the code.

    Item IDing is a unique problem all its own. Many wands can be ID'd by
    engraving, there's always price identification too. Gray stones pose
    special problems since just picking up a lodestone is a major problem.

    There are some situations in Nethack that don't come up often, but when
    they do the game needs to be really careful. Like: when there's a dead
    cockatrice on the floor nearby, when hallucinating, when punished, when
    an enemy is carrying a known wand of death, when fighting Medusa (once
    when I was fighting her she escaped downstairs, then fell through a
    hole on the next level -- I shudder to think what a bot would do in
    that situation, it could very easily turn out deadly for it), and of
    course there's fighting Rodney and the riders.

    Hmmm... there's a lot of thought to do here, this isn't meant to be
    comprehensive. I'm starting to see this project as definitely
    possible, even interesting....

    - John H.
  8. Archived from groups: rec.games.roguelike.nethack (More info?)

    dogscoff@eudoramail.com wrote:
    > Jagnj wrote:
    >
    >>YANI - NetHack Bots
    >
    > [merciless snippage]
    >
    > I'm sure it's a good idea, but it's way above my head, although your
    > mention of a 'teacherbot' got me thinking.
    >
    > How about some kind of interactive tutorial mode? If the RNG could be
    > persuaded somehow to reproduce the exact same dungeon and the exact
    > same monsters, objects, combat results and everything else for a few
    > levels when playing in tutorial mode, you could use it to guide a
    > newbie player through the mechanics of the game: There would be a
    > print-out and follow set of instructions that walks the character
    > turn-by-turn through this pre-determined dungeon, showing how to read
    > the map, what all the various commands do, when to use them, and
    > perhpas even introduce some of the various stategies that players might
    > use.
    >
    > "In this tutorial you start the game in a 3x3 room. You'll notice that
    > there is a door (plus sign) to the north of your starting position and
    > another one to the south. Let's go through the north door. Press 'j' on
    > your keyboard until your @ sign is standing next to the door. Now press
    > 'o'..." and so on.
    >
    > Just a thought.
    >

    Yes, I know of a game that has this kind of tutorial: CalcRogue.

    Its tutorial needs a bit of tweaking, though, it told me to wield a
    sword that was cursed when it wasn't supposed to be, then continued on
    to tell me to wield a bow while having a sword welded to my hand...

    --
    ____ (__)
    / \ (oo) -Shadow
    |Moo. > \/
    \____/
  9. Archived from groups: rec.games.roguelike.nethack (More info?)

    I promise, if I ever get some decent bot-development tools working,
    with some sort of sample bot, I'll make them public. This certainly
    includes some of what's been talked about, such as allowing the user
    to watch the bot's actions and take over control at will. Also stuff
    like the ability to set up and save situations in wizmode to try out
    various strategies. It shouldn't even be especially hard, but I've
    been a bit busy lately. Keep that initial "if" in mind.

    On Tue, 26 Apr 2005 10:22:35 -0500, Jove <Jove@Jove.invalid> wrote:

    >On Mon, 25 Apr 2005 18:29:56 +0200, Benjamin Schieder <blindcoder@scavenger.homeip.net> wrote:
    >
    >>> [ Writing bots ... again ]
    >>
    >>Well, I'm still firm in the belief that if there _really_ should be official
    >>support for nethack bots then there should be an interface for them. Much like
    >>tty/Qt ports, make a XML port. Or whatever.
    >>This is so that bot developers can focus on the actual bot development and not
    >>on parsing the output.
    >
    >Looking at it, the BFMI (Brute Force & Massive Ignorance)
    >approach might work. Take snapshot of the screen after
    >each keypress input. Record each snapshot in a plain
    >text file at first for ease of human analysis.
    >
    I think, by "parsing", Benjamin means interpreting the text rather
    than acquiring it. I suppose XML would be useful mostly as a more
    convenient language than English for the game's text messages? At the
    moment I can't think of a lot of structure in the maps that would be
    hard to parse but useful to have. My guess would be that any parsing
    could be done externally; while tricky, an external layer probably
    wouldn't be any worse than trying to add a second stream of meaningful
    XML output at every point where Nethack tries to print something.

    >
    >>So, if someone would stand up as Project Leader/Big Poobah/Royal Asskicker I
    >>will offer the infrastructure for that kind of task:
    >
    >Nononono, more like Get Some Minimal Functionality Working
    >Then Stand Back & Watch What People Do With It.
    >
    Well, the approaches might be pretty compatible if the project leader
    isn't too possessive. The DevTeam basically does both, except for the
    "minimal" part.

    >
    > Some example c code that compiles on WinXP DJGPP that grabs
    >a screen shot & cursor location & allows input back to NetHack
    >would be just what I need.
    >
    This page, which drussell on this newsgroup directed me to, has the
    guts of what you want. See also drussell's post. NetHack uses
    low-level console output.
    http://homepages.tesco.net/~J.deBoynePollard/FGA/capture-console-win32.html

    This page deals with consoles in C, although not so much with reading
    them. Good for sample calls to Windows Console APIs though.
    http://www.adrianxw.dk/SoftwareSite/index.html

    Chris
  10. Archived from groups: rec.games.roguelike.nethack (More info?)

    Chris Maloof wrote:

    > This page, which drussell on this newsgroup directed me to, has the
    > guts of what you want. See also drussell's post. NetHack uses
    > low-level console output.
    >
    http://homepages.tesco.net/~J.deBoynePollard/FGA/capture-console-win32.html

    But it can be done a lot more simply than this. Don't forget that
    Nethack is playable over telnet. Just write a telnet client that plays
    Nethack.

    - John H.
  11. Archived from groups: rec.games.roguelike.nethack (More info?)

    On Wed, 27 Apr 2005 00:06:02 -0400, Chris Maloof <cjmaloof@gmail.com> wrote:

    >I promise, if I ever get some decent bot-development tools working,
    >with some sort of sample bot, I'll make them public. This certainly
    >includes some of what's been talked about, such as allowing the user
    >to watch the bot's actions and take over control at will. Also stuff
    >like the ability to set up and save situations in wizmode to try out
    >various strategies. It shouldn't even be especially hard, but I've
    >been a bit busy lately. Keep that initial "if" in mind.

    >
    >On Tue, 26 Apr 2005 10:22:35 -0500, Jove <Jove@Jove.invalid> wrote:
    >
    >>On Mon, 25 Apr 2005 18:29:56 +0200, Benjamin Schieder <blindcoder@scavenger.homeip.net> wrote:
    >>
    >>>> [ Writing bots ... again ]
    >>>
    >>>Well, I'm still firm in the belief that if there _really_ should be official
    >>>support for nethack bots then there should be an interface for them. Much like
    >>>tty/Qt ports, make a XML port. Or whatever.
    >>>This is so that bot developers can focus on the actual bot development and not
    >>>on parsing the output.
    >>
    >>Looking at it, the BFMI (Brute Force & Massive Ignorance)
    >>approach might work. Take snapshot of the screen after
    >>each keypress input. Record each snapshot in a plain
    >>text file at first for ease of human analysis.
    >>
    >I think, by "parsing", Benjamin means interpreting the text rather
    >than acquiring it. I suppose XML would be useful mostly as a more
    >convenient language than English for the game's text messages? At the
    >moment I can't think of a lot of structure in the maps that would be
    >hard to parse but useful to have. My guess would be that any parsing
    >could be done externally; while tricky, an external layer probably
    >wouldn't be any worse than trying to add a second stream of meaningful
    >XML output at every point where Nethack tries to print something.
    >
    The nice thing about doing it all external to the game would be
    that it could be used for *any* program with a nethack like
    interface.

    It could be a "magic gloves" or "magic keyboard" application.
    You could program/configure it to let you use Nethack/vi direction
    keys in any program.

    It could enforce the rules of the Nethack paranoid patch without having
    to know how to patch or compile.

    It could prevent you from attacking something with a pickaxe you
    were using for digging.

    It could handle the %$@#*& dangling direction prompts in Nethack
    that keep ending me up in the water. (by the by, are these a known
    bug? Please reply in another thread with "dangling direction prompt"
    in the subject. )

    These configuration/macros/subroutines should be storable in plain
    text & enabled on startup or on-the-fly. One person would write a
    paranoid script (intelligent macro? we need a good name for one
    of these) for NetHack. Everyone interested uses/tests/improves it.
    Someone else uses it for an example to write a "not in MY bag of holding
    bigod"

    A general interface tweaker with easily on-the-fly programmable
    intelligent macros. Someone was asking for and enhancement to
    the autoquiver code to prioritize autoquivering based on skills/
    launcher/cursed/enchantment/phase-of-the-moon. Magic Keyboard
    should be able to do that.

    It should be able to do so using a plain text command language
    that doesn't require a programmer to use, just the ability to
    state what you want. i.e. there would be no DWIM command.

    There *would* be something like this:

    IF ( SCREEN LIKE "Do you really want to attack" )
    THEN
    IF ( USER_INPUT LIKE "yes" )
    THEN
    TELL USER "Okay, you asked for it."
    TELL APPLICATION "yes"
    ELSE
    IF ( USER_INPUT IS "y" )
    THEN
    TELL USER "Full word \"yes\" required to attack."
    IF ( USER_INPUT IS "ye" )
    THEN
    TELL USER "Full word \"yes\" required to attack."
    TELL USER "This for your own good."
    ENDIF
    TELL APPLICATION "no"
    ENDIF
    ENDIF

    Try this on for size:

    IF (hitpoints <= 1 )
    THEN
    SWITCH
    CASE ( BackPack() HAS "potion of full healing" )
    TELL USER "Quaff potion of full healing?(y/n)"
    IF ( USER_INPUT NOT "y" )
    THEN
    TELL USER "You fool."
    TELL USER "Well I'm quaffing it anyway."
    TELL USER "Your death wish isn't going to make ME look bad."
    ENDIF
    TELL APPLICATION ESC # Clear out whatever mode that fool user was in
    TELL APPLICATION "q"
    TELL APPLICATION Inventory_Letter("potion of full healing")
    ENDCASE
    CASE ( BackPack() HAS Fast_Engrave_Means() )
    TELL USER "You could try Engraving a quick \"Elbereth\""
    IF ( NOT Melee_Range_Ignores_Elbereth() )
    THEN
    TELL USER "No one in melee range ignores it."
    IF ( Possible_Ranged_Attack() )
    THEN
    TELL USER "You might get hit from a distance."
    IF ( Newbie_Mode() )
    THEN
    TELL USER "(Enemies might throw things at you)"
    ENDIF
    ELSE
    TELL USER "It looks safe."
    ENDIF
    ELSE
    TELL USER "but"
    FOR Monsters_in_Melee_Distance()
    IF ( Monster(Ignores_Elbereth) )
    THEN
    TELL USER $Monster " at " $Monster_Direction "ignores Elbereth"
    ENDIF
    ENDFOR
    ENDIF

    CASE ( (( $Turns - $Last_Prayed_Turn ) >= $Panic_Prayer )
    IF (( $Turns - $Last_Prayed_Turn ) < $Confident_Prayer_Interval )
    THEN
    TELL USER "Pray to $Deity. It's worth a shot."
    ELSE
    TELL USER "You can very probably pray safely."
    ENDIF
    ENDCASE
    CASE ( Bag() HAS "potion of full healing" )
    TELL USER "There's a potion of full healing in your bag.
    IF ( Encumbrance(Burdened_or_Worse()) )
    THEN
    IF ( Can_Abuse_Speed_System() )
    THEN
    TELL USER "You can get that potion of full healing"
    TELL USER " from you bag and quaff it. Probably."
    ENDIF
    ENDCASE
    CASE DEFAULT
    TELL USER "YASFD, you might as well #quit, your score will be higher."
    ENDCASE
    ENDIF
    ENDIF

    My big point (from the start) is: give the users a way to encode
    *what they already know* into the interface.
    They'll stun you.

    (What do you want to apply? unicorn horn
    You feel more steady.)


    Look at the Internet Movie database. All they did was let interested
    people put in movie information.

    >>
    >>>So, if someone would stand up as Project Leader/Big Poobah/Royal Asskicker I
    >>>will offer the infrastructure for that kind of task:
    >>
    >>Nononono, more like Get Some Minimal Functionality Working
    >>Then Stand Back & Watch What People Do With It.
    >>
    >Well, the approaches might be pretty compatible if the project leader
    >isn't too possessive. The DevTeam basically does both, except for the
    >"minimal" part.

    Let users encode their own information and hopefully this won't
    matter.

    If the project leader doesn't want people to prevent
    themselves from putting bags of holding into their bags of
    holding, what can s/he do?

    (Notice that the travel command won't move onto a known trap.
    Should that be disabled? Maybe there should be a 1% chance
    of stepping on it anyway. The Super Star Trek transporter
    fails 2% of the time with an instadeath ;-)

    Same thing about using a pickaxe to dig then suddenly breaking
    "you never hit with a wielded weapon" conduct. That can be
    fixed in the interface. Not fixing it is like setting a land
    mine on someone's doorstep every morning then telling them
    about it. When they step on it, and eventually they will,
    saying "They knew better" won't be a defense.)


    >
    >>
    >> Some example c code that compiles on WinXP DJGPP that grabs
    >>a screen shot & cursor location & allows input back to NetHack
    >>would be just what I need.
    >>
    >This page, which drussell on this newsgroup directed me to, has the
    >guts of what you want. See also drussell's post. NetHack uses
    >low-level console output.
    >http://homepages.tesco.net/~J.deBoynePollard/FGA/capture-console-win32.html
    >
    >This page deals with consoles in C, although not so much with reading
    >them. Good for sample calls to Windows Console APIs though.
    >http://www.adrianxw.dk/SoftwareSite/index.html
    >
    >Chris
    Going to look at that right now.

    Jove
  12. Archived from groups: rec.games.roguelike.nethack (More info?)

    "kal.zekdor@gmail.com" <kal.zekdor@gmail.com> writes:

    > I'd like to see something like this done, and I'd be willing to help

    Something like WHAT?

    --
    Jukka Lahtinen
  13. Archived from groups: rec.games.roguelike.nethack (More info?)

    > Same thing about using a pickaxe to dig then suddenly breaking
    > "you never hit with a wielded weapon" conduct. That can be
    > fixed in the interface. Not fixing it is like setting a land
    > mine on someone's doorstep every morning then telling them
    > about it. When they step on it, and eventually they will,
    > saying "They knew better" won't be a defense.)

    Well, that's the challenge with conducts: You actually have to _take care_ not
    to break them.
    I wouldn't mind such a feature, but I would mind something like the "I quaff the
    !oFH regardless of you wanting it or not"-feature.


    Greetings,
    blindy
  14. Archived from groups: rec.games.roguelike.nethack (More info?)

    > Looking at it, the BFMI (Brute Force & Massive Ignorance)
    > approach might work. Take snapshot of the screen after
    > each keypress input. Record each snapshot in a plain
    > text file at first for ease of human analysis.

    That's basically what I did with the pudding farming bot.
    I don't parse escape-sequences yet, though.

    > Parsing would probably work best in perl-> portability
    > to all except small platforms. interfacing parsing &
    > action routines (probably c) would be my sticking point.

    FarmBot is a perl app.

    > Nononono, more like Get Some Minimal Functionality Working
    > Then Stand Back & Watch What People Do With It.

    Well, that's already done:
    http://scavenger.homeip.net/farmbot/

    > Would rather herd rabid mice than programmers.

    Heh, my (female) boss used to say: "Children? I already have a kindergarten."
    I'm working at a (formerly small) consultant company :)

    > Could expect get the output from a running nethack somehow?
    > Could expect then run a parser/action program/routine &
    > pass that back to NetHack?

    Have a look at FarmBot mentioned above. It already does that.


    Greetings,
    blindy
  15. Archived from groups: rec.games.roguelike.nethack (More info?)

    Benjamin Schieder wrote:
    >>Same thing about using a pickaxe to dig then suddenly breaking
    >>"you never hit with a wielded weapon" conduct. That can be
    >>fixed in the interface. Not fixing it is like setting a land
    >>mine on someone's doorstep every morning then telling them
    >>about it. When they step on it, and eventually they will,
    >>saying "They knew better" won't be a defense.)
    >
    >
    > Well, that's the challenge with conducts: You actually have to _take care_ not
    > to break them.

    Not really. The challenge with conducts is that they make
    certain aspects of the game much more difficult. It doesn't take much
    care to not break wishless or genoless, for example... there isn't much
    challenge to typing "nothing" or "none" at a prompt if you accidentally
    get a wish or genocide from a throne or whatnot. But that doesn't mean
    that those conducts are not challenging... the challenge comes from not
    being able to arbitrarily create whatever gear you may be missing from
    an optimal kit, or from having to fight your way past arch-liches and
    master mind flayers instead of simply annihilating them all on a whim.

    Similarly, weaponless is a challenge because it drastically
    reduces your offensive capabilities. Not even a Grand Master martial
    artist can touch the damage potential of someone with basic skill
    wielding a decent +6 artifact weapon. That difficulty does not go away
    if a means of avoiding, "Oops, I bumped into a blue jelly in the dark
    while knocking out walls in Gehennom, and there goes the conduct I've
    kept for the last 50,000 turns," accidents is put in.

    --
    John Campbell
    jcampbel@lynn.ci-n.com
  16. Archived from groups: rec.games.roguelike.nethack (More info?)

    David Damerell wrote:

    > You are mistaken.
    >
    > Currently, conducts provide two challenges; one, the actual
    difficulty
    > increase from things like not being able to use weapons; and two, the
    care
    > needed to avoid typos that accidentally break conducts without the
    player
    > gaining a real advantage.

    No, I'd say it's you that's mistaken.

    Practically all of Nethack's interest, and thus the game itself, comes
    from the game itself and not its interface. This is why there's a
    clear line between the two in the code. To confuse the two is not a
    good idea, especially since there are so many different interfaces for
    the game. By your logic, everyone should play Nethack on slower
    computers, as a purely strategic choice.

    You may be thinking, then, "What about players smacking a floating eye?
    If avoiding typos wasn't part of the game, then how come players
    aren't given a prompt before hitting one?" The answer, of course, is
    that this would be giving the player extra information -- "Wait; the
    game is *asking* me if I want to hit this eye. Answer's probably
    no...."

    - John H.
  17. Archived from groups: rec.games.roguelike.nethack (More info?)

    Quoting John Campbell <jcampbel@lynn.ci-n.com>:
    >Benjamin Schieder wrote:
    >>Well, that's the challenge with conducts: You actually have to _take care_
    >>not to break them.
    > Not really. The challenge with conducts is that they make
    >certain aspects of the game much more difficult.

    You are mistaken.

    Currently, conducts provide two challenges; one, the actual difficulty
    increase from things like not being able to use weapons; and two, the care
    needed to avoid typos that accidentally break conducts without the player
    gaining a real advantage.

    You don't like challenge two; that's fair enough, as a point of view; but
    you cannot deny that the current design provides and is intended to
    provide both challenges.
    --
    David Damerell <damerell@chiark.greenend.org.uk> Kill the tomato!
    Today is Mania, May.
  18. Archived from groups: rec.games.roguelike.nethack (More info?)

    > Not really. The challenge with conducts is that they make
    > certain aspects of the game much more difficult. It doesn't take much
    > care to not break wishless or genoless, for example... there isn't much
    > challenge to typing "nothing" or "none" at a prompt if you accidentally
    > get a wish or genocide from a throne or whatnot. But that doesn't mean

    That wasn't possible until 3.4.3. Until 3.4.2 you couldn't "cancel" a wish or a
    genocide. So you had to be _really_ careful with zapping unknown wands or
    reading unknown scrolls.

    Creetings,
    blindy
  19. Archived from groups: rec.games.roguelike.nethack (More info?)

    Benjamin Schieder <blindcoder@scavenger.homeip.net> wrote in
    news:42713037$0$10504$9b4e6d93@newsread4.arcor-online.net:

    >> Not really. The challenge with conducts is that they make
    >> certain aspects of the game much more difficult. It doesn't take
    >> much care to not break wishless or genoless, for example... there
    >> isn't much challenge to typing "nothing" or "none" at a prompt if
    >> you accidentally get a wish or genocide from a throne or whatnot.
    >> But that doesn't mean
    >
    > That wasn't possible until 3.4.3. Until 3.4.2 you couldn't "cancel"
    > a wish or a genocide. So you had to be _really_ careful with zapping
    > unknown wands or reading unknown scrolls.

    Are you sure? I thought the way it worked was:
    In Nethack 3.4.0 and beyond wishing for "nothing" enables you to refuse a
    wish and keep the wishless conduct. Genociding "none" would retain
    genocideless conduct.
    In 3.3.1 there is no way to refuse a wish.
    In 3.3.0 you could wish for gold and retain the wishless conduct.

    I belive that entering an invalid monster name several times that you
    would endup not genociding anything. I think (but am not sure) that this
    will work in the 3.3.x versions and in the 3.4.x versions.
  20. Archived from groups: rec.games.roguelike.nethack (More info?)

    Benjamin Schieder wrote:

    >> Not really. The challenge with conducts is that they make
    >> certain aspects of the game much more difficult. It doesn't take
    >> much care to not break wishless or genoless, for example... there
    >> isn't much challenge to typing "nothing" or "none" at a prompt if
    >> you accidentally get a wish or genocide from a throne or whatnot.
    >> But that doesn't mean
    >
    > That wasn't possible until 3.4.3. Until 3.4.2 you couldn't "cancel"
    > a wish or a genocide. So you had to be _really_ careful with zapping
    > unknown wands or reading unknown scrolls.
    >
    I use to always play genocideless from 3.3.3 or so, and the way to
    avoid genociding anything at that point from a throne was just not to
    enter anything 3 times in a row. Avoiding a wish was a different
    story.

    Jorge
  21. Archived from groups: rec.games.roguelike.nethack (More info?)

    Quoting John H. <JohnWH@gmail.com>:
    >David Damerell wrote:
    >>You are mistaken.
    >>Currently, conducts provide two challenges; one, the actual difficulty
    >>increase from things like not being able to use weapons; and two, the care
    >>needed to avoid typos that accidentally break conducts without the player
    >>gaining a real advantage.
    >No, I'd say it's you that's mistaken.

    Well, you'd be wrong, certainly about what is quoted. Challenge two is
    manifestly present; people fail conducts regularly through this type of
    carelessness, therefore it is a challenge. Don't attempt to deny it.

    I think you would also be wrong about what was not quoted; that it's clear
    from the current design that this is intended. But you didn't quote that,
    so I guess you didn't intend to comment on it, and we can take it as read.

    >You may be thinking, then, "What about players smacking a floating eye?
    > If avoiding typos wasn't part of the game, then how come players
    >aren't given a prompt before hitting one?" The answer, of course, is
    >that this would be giving the player extra information

    Of course! And the lack of a prompt before stepping into lava is because
    that prompt would give away that lava might be dangerous, which I suppose
    you must think players wouldn't know without being told.
    --
    David Damerell <damerell@chiark.greenend.org.uk> flcl?
    Today is Aponoia, May.
  22. Archived from groups: rec.games.roguelike.nethack (More info?)

    David Damerell wrote:
    > Quoting John Campbell <jcampbel@lynn.ci-n.com>:
    >
    >>Benjamin Schieder wrote:
    >>
    >>>Well, that's the challenge with conducts: You actually have to _take care_
    >>>not to break them.
    >>
    >> Not really. The challenge with conducts is that they make
    >>certain aspects of the game much more difficult.
    >
    >
    > You are mistaken.
    >
    > Currently, conducts provide two challenges; one, the actual difficulty
    > increase from things like not being able to use weapons; and two, the care
    > needed to avoid typos that accidentally break conducts without the player
    > gaining a real advantage.
    >
    > You don't like challenge two; that's fair enough, as a point of view; but
    > you cannot deny that the current design provides and is intended to
    > provide both challenges.

    I could fairly trivially deny that, actually. But I won't. I
    will deny, however, that the possibility of accidental breakage is, in
    *any* case, significant enough to warrant being called "*the* challenge
    with conducts" (at least until someone invents the "never hit any key
    unintentionally" conduct), while the actual increase in gameplay
    difficulty *is* that significant.

    In some cases, the second factor barely even exists... I suppose
    it might be possible for someone to typo "nothing" as "blessed greased
    rustproof +3 helm of brilliance", or "none" as "master mind flayers",
    but I don't think it's likely. If you remove the tiny possibility of
    typoing, wishless and genoless are practically unreduced in their
    challenge level. If you were to somehow remove the gameplay drawbacks of
    those conducts, though, the challenge level would drop to basically
    zero.

    Things like atheism, illiteracy, and dietary conducts are a bit
    easier to break by accident. But, again, if you were to remove the
    possibility of unintentionally dropping something on an altar, or
    accidentally eating the wrong inventory item, or reading something when
    you meant to eat something else, those conducts are only trivially
    reduced in difficulty. The real drawbacks - the inability to BUC-ID
    things on altars, or buy protection, or #pray for succor or holy water
    or boosts, or sacrifice for artifacts; or learn spells, or use scrolls
    for any of their multitudinous purposes, or write the E-word; or eat
    things that break your dietary restrictions for the intrinsics, or the
    nutrition, or to stop those damn trolls from getting back up - do not go
    away. But if you were to somehow remove those gameplay drawbacks, again,
    the challenge level would drop to almost nothing.

    And then there's weaponless. The fact that it's fairly easy to
    break by accident does not make not breaking it by accident the whole
    challenge involved in the conduct. Unlike most other conducts, removing
    means of breaking it by accident would make it notably easier to keep.
    But it would not remove the difficulties involved in not being able to
    do the sheer amount of melee damage that any weapon-using character can
    aspire to.

    Also, as others have pointed out, recent versions of nethack
    have made it easier to avoid accidentally using a wish or genocide. That
    safeguards have been added to help avoid involuntary conduct breakage
    calls into question your assertion that accidental conduct breakage is
    an intentional part of the game, rather than merely a result of
    unrelated game design decisions.

    --
    John Campbell
    jcampbel@lynn.ci-n.com
  23. Archived from groups: rec.games.roguelike.nethack (More info?)

    On Sat, 30 Apr 2005 18:16:39 GMT, John Campbell <jcampbel@lynn.ci-n.com> wrote:

    <The following has been ruthlessly trimmed>

    >
    > And then there's weaponless. The fact that it's fairly easy to
    >break by accident does not make not breaking it by accident the whole
    >challenge involved in the conduct. Unlike most other conducts, removing
    >means of breaking it by accident would make it notably easier to keep.
    >But it would not remove the difficulties involved in not being able to
    >do the sheer amount of melee damage that any weapon-using character can
    >aspire to.
    >

    Right now half of the weaponless conduct seems to be "I beat
    the NetHack interface!"

    A simple solution that may satisfy all parties with regard
    to both accidentally breaking weaponless conduct as well as accidentally
    attacking floating eyes, peacefuls, etc.

    Especially when moving northwest, where the 'y' key rapidly
    changes meaning from:
    1. move northwest to
    2. attack northwest to
    3. YES

    Add an auto-attack option (like autodig). Same going to
    the option screen to toggle it. Nethack already has the (F)orce
    attack command, which seems tailor-made for when auto-attack is
    off.

    Would also be useful when hallucinating or confused.

    For role-playing especially the player would have a much
    closer feeling of playing out their intentions in the game.

    As has been pointed out before, a prompt before using a
    ranged attack against a peaceful monster (especially when at
    melee distance!) would go long way towards making the nethack
    attack interface consistent.


    Jove
  24. Archived from groups: rec.games.roguelike.nethack (More info?)

    Quoting John Campbell <jcampbel@lynn.ci-n.com>:
    >David Damerell wrote:
    >>Quoting John Campbell <jcampbel@lynn.ci-n.com>:
    >>>Benjamin Schieder wrote:
    >>>>Well, that's the challenge with conducts: You actually have to _take care_
    >>>>not to break them.
    >>>Not really. The challenge with conducts is that they make
    >>>certain aspects of the game much more difficult.
    >>Currently, conducts provide two challenges; one, the actual difficulty
    >>increase from things like not being able to use weapons; and two, the care
    >>needed to avoid typos that accidentally break conducts without the player
    >>gaining a real advantage.
    >>You don't like challenge two; that's fair enough, as a point of view; but
    >>you cannot deny that the current design provides and is intended to
    >>provide both challenges.
    > I could fairly trivially deny that, actually. But I won't. I
    >will deny, however, that the possibility of accidental breakage is, in
    >*any* case, significant enough to warrant being called "*the* challenge
    >with conducts"

    I did not assert that that was the case.

    >(at least until someone invents the "never hit any key
    >unintentionally" conduct), while the actual increase in gameplay
    >difficulty *is* that significant.

    It can't be called "the" challenge with conducts because there are two
    significant challenges with conducts (some of which apply in greater or
    lesser degree to any given conduct).

    [Of course, I agree that Benjamin Schieder is wrong to describe no-typos
    as "the" challenge.]

    >Also, as others have pointed out, recent versions of nethack
    >have made it easier to avoid accidentally using a wish or genocide. That
    >safeguards have been added to help avoid involuntary conduct breakage
    >calls into question your assertion that accidental conduct breakage is
    >an intentional part of the game, rather than merely a result of
    >unrelated game design decisions.

    Um, two observations; the facility to wish for or genocide nothing is not
    a pure typo-blocker, it's a gameplay change, because it becomes possible
    to use unIDed scrolls and wands of certain types. It's only acting as a
    typo blocker in the case where you finger-fumble and use an unIDed scroll
    or wand when you didn't mean to.

    Secondly, I don't think the fact that deliberate design decisions are
    being made around the difficulty of keeping conducts supports the idea
    that the current difficulty is largely accidental.

    Incidentally, I _personally_ would be perfectly happy to see certain
    conducts - atheist, illiterate, weaponless, diet restrictions spring to
    mind [1] - implemented as selectable hard locks at the start of the game,
    removing the typo problem completely in return for an inability to abandon
    the conduct and continue the game.

    [1] This list is not necessarily exhaustive. What I want is the list of
    conducts that are significantly vulnerable to typos and also have the
    characteristic that the player can't make an intentional action with a
    probability of breaking the conduct p where 0 < p < 1; eg pacifist cannot
    be enforced because the player cannot know in advance if any given attack
    will kill the target.
    --
    David Damerell <damerell@chiark.greenend.org.uk> Distortion Field!
    Today is First Tuesday, May.
  25. Archived from groups: rec.games.roguelike.nethack (More info?)

    >>(at least until someone invents the "never hit any key
    >>unintentionally" conduct), while the actual increase in gameplay
    >>difficulty *is* that significant.
    >
    > It can't be called "the" challenge with conducts because there are two
    > significant challenges with conducts (some of which apply in greater or
    > lesser degree to any given conduct).
    >
    > [Of course, I agree that Benjamin Schieder is wrong to describe no-typos
    > as "the" challenge.]

    Okay, bad choice of words on my part.
    Still I think that it's quite a part of the challenge at least for the
    weaponless conduct. Ran into the infamous pickaxe incident with my monks a few
    times myself.


    Greetings,
    Benjamin
Ask a new question

Read More

Games Video Games Product