More sensible group monster amounts

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • fizzix
    Prophet
    • Aug 2009
    • 3025

    More sensible group monster amounts

    The current V algorithm for determining group monsters is.

    Code:
    randint(13) + current_dungeon_level - monster_level
    It is capped at 1 on the low end and 25 on the high end. This is a relatively recent change, it used to be a straight random number between 1 and 32. IIRC the change was so that stronger monsters didn't come in huge packs if they were OoD. However, this has the somewhat unintended consequence of making weaker monsters always come in large groups, often 25. This is bad for two reasons.

    1) Weaker monsters often aren't a challenge, and instead are an annoyance. There are some exceptions, like Zs, but for the most part there's no interesting game-play that results from having a large group of weak monsters.
    2) Weaker monsters large group values means that they're likely to completely fill up vaults, preventing more interesting monsters from appearing. Similarly, they are very likely to dominate the unique escort provided the unique is placed in a room.

    I propose the following change.
    Code:
    randint(13) + min(12, (current_dungeon_level - monster level))
    Again, we cap the lower value at 1.

    There is no change until monsters are at least 12 levels under-depth, at which point you get a random number between 12 and 25.

    edit: for my own personal play I'm going to lower groups much more, but this seems like a more conservative change sensible for 3.5
  • Malak Darkhunter
    Knight
    • May 2007
    • 730

    #2
    I like this fizzix, for my own personal copy I limited groups to only appearing as escorts but the monsters a little stronger and worth a little more exp.

    Comment

    • Derakon
      Prophet
      • Dec 2009
      • 9022

      #3
      Sounds fair to me. Actually I'd be fine with the group size being a random number between 5 and 15, say, which is then capped appropriately if the monster type is OOD.

      Comment

      • fizzix
        Prophet
        • Aug 2009
        • 3025

        #4
        Originally posted by Derakon
        Sounds fair to me. Actually I'd be fine with the group size being a random number between 5 and 15, say, which is then capped appropriately if the monster type is OOD.
        I'll probably try something along those ranges (maybe more like 3-10) in testplay and we'll see how it goes. I do think that we should keep changes to V somewhat conservative though.

        Comment

        • half
          Knight
          • Jan 2009
          • 910

          #5
          For reference, in Sil I ended up with several flags:

          FRIEND: has between 0 and 1 extra monsters
          FRIENDS: has between 1 and 3 extra monsters
          ESCORT: has between 4 and 7 extra monsters
          ESCORTS: has between 8 and 16 extra monsters

          Note how much smaller the group monster flags (FRIEND(S)) are than in V. I think this plays much better, so I'd encourage pretty extreme experimentation in your home version fizzix.

          For the FRIEND(S) flags I have more chance of more appearing if they are easier monsters for that depth. This causes less of a problem in Sil as monsters can occur at most 2 levels before their depth and at most 2 levels after, so there are far fewer time-waster ('windshield') monsters.

          Comment

          • PowerWyrm
            Prophet
            • Apr 2008
            • 2987

            #6
            Originally posted by fizzix
            The current V algorithm for determining group monsters is.

            Code:
            randint(13) + current_dungeon_level - monster_level
            It is capped at 1 on the low end and 25 on the high end. This is a relatively recent change, it used to be a straight random number between 1 and 32. IIRC the change was so that stronger monsters didn't come in huge packs if they were OoD. However, this has the somewhat unintended consequence of making weaker monsters always come in large groups, often 25. This is bad for two reasons.

            1) Weaker monsters often aren't a challenge, and instead are an annoyance. There are some exceptions, like Zs, but for the most part there's no interesting game-play that results from having a large group of weak monsters.
            2) Weaker monsters large group values means that they're likely to completely fill up vaults, preventing more interesting monsters from appearing. Similarly, they are very likely to dominate the unique escort provided the unique is placed in a room.

            I propose the following change.
            Code:
            randint(13) + min(12, (current_dungeon_level - monster level))
            Again, we cap the lower value at 1.

            There is no change until monsters are at least 12 levels under-depth, at which point you get a random number between 12 and 25.

            edit: for my own personal play I'm going to lower groups much more, but this seems like a more conservative change sensible for 3.5
            I just checked the new source for 3.5 and to my surprise it's the complete opposite that has been done: now monsters appear in larger groups!!

            Monsters with FRIEND flag now appear in the same amount as monsters with the FRIENDS flag, which is complete nonsense: the FRIEND flag was added to deal with double monster entries (one entry at low level for one monster, one entry at higher level for a group of monsters).

            The worst case that I can think of is the hellhound: old entries were L35 (single) and L78 (group). Now you get groups at depth 35, not mentioning out of depth groups at shallower depths... and didn't I mention that they come with the ai_packs tactics? Basically: you detect them, you flee the level; you don't detect them, game over.

            I'd consider reverting the FRIEND flag to its old behavior, and even ensure that you only get 1 monster at base depth. The best would be of course to "simulate" the old behavior (1 monster at depth A, normal group of monsters at depth B, smaller group between A and B, larger group below B), but currently monster entries don't have min/max allocation depths like objects.
            PWMAngband variant maintainer - check https://github.com/draconisPW/PWMAngband (or http://www.mangband.org/forum/viewforum.php?f=9) to learn more about this new variant!

            Comment

            • fizzix
              Prophet
              • Aug 2009
              • 3025

              #7
              Originally posted by PowerWyrm
              I just checked the new source for 3.5 and to my surprise it's the complete opposite that has been done: now monsters appear in larger groups!!

              Monsters with FRIEND flag now appear in the same amount as monsters with the FRIENDS flag, which is complete nonsense: the FRIEND flag was added to deal with double monster entries (one entry at low level for one monster, one entry at higher level for a group of monsters).

              The worst case that I can think of is the hellhound: old entries were L35 (single) and L78 (group). Now you get groups at depth 35, not mentioning out of depth groups at shallower depths... and didn't I mention that they come with the ai_packs tactics? Basically: you detect them, you flee the level; you don't detect them, game over.

              I'd consider reverting the FRIEND flag to its old behavior, and even ensure that you only get 1 monster at base depth. The best would be of course to "simulate" the old behavior (1 monster at depth A, normal group of monsters at depth B, smaller group between A and B, larger group below B), but currently monster entries don't have min/max allocation depths like objects.
              This is the old behavior, it hasn't been changed, except in my personal version since it was "controversial". I have a branch in which I'm planning to completely overhaul this that I got basic functionality working this weekend. More details in the next post.

              Comment

              • fizzix
                Prophet
                • Aug 2009
                • 3025

                #8
                So, I've been working on tailoring FRIENDS and ESCORT(S) behavior. In an experimental branch, the details on what monsters accompany a given monster will be included in monster.txt as additional "friends: xxxx" lines for each monster. Each monster can have multiple lines. I believe this is a near universal improvement but there are a couple questions about how to go about things.

                Currently, each friend line includes the name of the monster race, the probability of this entry being selected, the number of monsters (as an XdY distribution). This would allow us to create monster groups of various different races (think adventuring parties or mixed packs of kobolds, or Dwar with a dog escort.) We can also have specific monsters appear together (like Bill, Tom and Bert). In addition we can keep some packs of monsters small (like filthy urchins) while letting others remain large (like uruks)

                Here are the questions I have.

                1) Is there any other piece of information that might be useful in the friends input line?

                2) What about throttling group numbers depending on monster level and current depth? This hasn't been implemented yet but it probably should be. The question is how. One option is to take a percentage of monsters that appear in the group value if they're near depth level. So if you find a hellhound who's dlevel 40 that rolls 12 friends, and you're dlevel 37. Maybe you only get half of those friends. Ideas on how exactly to throttle it would be helpful! This is most similar to current behavior

                2a and 1a) We could add another input which would be the depth at which to allow these friends. This could simulate PowerWyrm's behavior where hellhounds could only have the friends flag triggered at dlevel 50. Or we can even tier it so that one flag gets triggered at 50 and additional friends come in at 70. We can do this in conjunction with 2 or instead of it, although I'm thinking instead is probably better. This can also allow asymmetric groupings, so that you can make the balrog of moria have the same escort as gothmog (including gothmog) if you're deeper than dlevel 95. From user perspective, this just looks like gothmog was summoned with a balrog escort. Maybe a maximum level for escorts is desirable as well? So that weaker orcs are passed over for lesser orcs after certain depths?

                3) Naturally a big chunk of the changes will involve going through the entire monster.txt file and adding the friends tags. Community suggestions would be helpful here. How many hounds should come in hound packs? How many orcs in orc packs? Should mature and ancient dragons come with an entourage of like lesser dragons? Anything that the community would really like to see?

                4) Which uniques should be "grouped" together. The trolls are an obvious choice. Do these uniques need other changes as well? Should I make bill, tom and bert a bit weaker and maybe drop a bit less now that you encounter all three at once?

                Comment

                • Oramin
                  Swordsman
                  • Jun 2012
                  • 371

                  #9
                  So, you're planning on making sure that when The Balrog of Moria shows up on L45 he won't have 8 Lesser Balrogs with him as part of his escorts?

                  (We won't mention that it just happened in my 3.3.2 game)

                  Comment

                  • Antoine
                    Ironband/Quickband Maintainer
                    • Nov 2007
                    • 1010

                    #10
                    You are brilliant.

                    Some content suggestions follow:
                    • Bill / Bert / Tom
                    • Maggot's dogs
                    • Orcs should have Wolves
                    • Uruks should have Wargs and Crebain
                    • Trolls should have Orcs
                    • Giants should have 'co-aligned' Hounds
                    • Mummies should have Skeletons and Zombies
                    • Occasionally a warrior monster should appear with a party of characters of similar level - i.e. a Novice Paladin could have a Novice Priest, Novice Mage and Novice Rogue with him
                    • Ringwraiths should have lower level Ringwraiths
                    • The Witch-King should also have a Winged Horror (sometimes)
                    • A Mumak should have Haradrim (new mobs) as well as other Mumaks
                    • A Zephyr Huntmaster (new mob) should have assorted Zephyr Hounds
                    • Boldor should have all surviving Yeek uniques
                    • Azog should have all surviving Orc uniques
                    • The Elemental Lords should have various creatures of the same element
                    • Saruman should have Wormtongue and Uruks
                    • Ar-Pharazon should have Black Numenoreans (new mobs)
                    • Ancalagon should have all surviving Dragon uniques
                    • Sauron should have all surviving Ringwraiths and (sometimes) the Mouth
                    • Morgoth should have Angband-denizens such as Thuringwethil and Carcharoth


                    I think most dragons and Maiar are solitary and should not have friends.

                    To shortcut the process, why don't you consider adding a SUMMON_FIRST flag to some mobs. If a mob with this flag is generated at the start of the level, then one of its summoning spells is picked randomly and cast at its location. You could give this flag to a Druid, for instance, to make sure he would appear with animals. It would be quicker than selecting FRIENDS for him.

                    Finally, can I suggest some improved AI here. Could apply to both FRIENDS and summons.
                    • - An escort should wake up if its boss wakes up
                    • - A boss should wake up if one of its escort wakes up
                    • - If an escort can see its boss but cannot see you, it tries to step towards its boss
                    • - If an escort is confused, it may permanently forget who its boss is
                    • - If a boss is killed, its escorts are confused for a few turns.


                    For bonus points, every monster on the level should regard Morgoth as its boss (except, perhaps, some of the deeper uniques such as Ungoliant).
                    Ironband - http://angband.oook.cz/ironband/

                    Comment

                    • Pete Mack
                      Prophet
                      • Apr 2007
                      • 6883

                      #11
                      Crebain escort is just mean.

                      Comment

                      • fizzix
                        Prophet
                        • Aug 2009
                        • 3025

                        #12
                        @Antoine, thanks for your suggestions. Hounds for giants is pretty clever, I hadn't thought of that, but it's a great idea. The novice adventurer party packs is one of the main motivations for this!

                        I would love to implement some kind of shouting/waking thing. It's far more interesting for gothmog to have 2 gelugons that walk around with him instead of a group of 10 that just slumber as he shoves past them to get to the player. But that's a lot harder to do. A "shout" action that wakes up any creature in the friends list is doable though, and I might try that in the experimental branch. I think I'd need to first implement a "monster goes back to sleep" option though...these will have to wait.

                        Comment

                        • Antoine
                          Ironband/Quickband Maintainer
                          • Nov 2007
                          • 1010

                          #13
                          Originally posted by fizzix
                          @Antoine, thanks for your suggestions. Hounds for giants is pretty clever, I hadn't thought of that, but it's a great idea. The novice adventurer party packs is one of the main motivations for this!

                          I would love to implement some kind of shouting/waking thing. It's far more interesting for gothmog to have 2 gelugons that walk around with him instead of a group of 10 that just slumber as he shoves past them to get to the player. But that's a lot harder to do. A "shout" action that wakes up any creature in the friends list is doable though, and I might try that in the experimental branch. I think I'd need to first implement a "monster goes back to sleep" option though...these will have to wait.
                          On sleep and waking, one simple thing that makes a lot of difference is to wake up any monster that is in LOS of another monster that successfully damages the @

                          a.
                          Ironband - http://angband.oook.cz/ironband/

                          Comment

                          • Pete Mack
                            Prophet
                            • Apr 2007
                            • 6883

                            #14
                            Originally posted by Antoine
                            On sleep and waking, one simple thing that makes a lot of difference is to wake up any monster that is in LOS of another monster that successfully damages the @
                            This would nerf Rogue characters in a bad way, unless Angband implements "sneak attacks"/"assassination"

                            Comment

                            • Antoine
                              Ironband/Quickband Maintainer
                              • Nov 2007
                              • 1010

                              #15
                              Originally posted by Pete Mack
                              This would nerf Rogue characters in a bad way, unless Angband implements "sneak attacks"/"assassination"
                              Yes i think that shoud be done too - a physical attack on a sleeping mob should do substantially more damage (by several times, with a chance of confusing the target for a few rounds)

                              PS Paladins should lose xp for carrying out a sneak attack
                              Ironband - http://angband.oook.cz/ironband/

                              Comment

                              Working...
                              😀
                              😂
                              🥰
                              😘
                              🤢
                              😎
                              😞
                              😡
                              👍
                              👎