Angband Forums learning damage bonuses
 Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

 December 4, 2008, 06:46 #1 PowerDiver Prophet   Join Date: Mar 2008 Posts: 2,712 learning damage bonuses Consider the simple case where a char with strong pseudo is wielding a good dagger (1d4). Suppose further that no other items that could add a damage bonus are wielded. After a few hits, if you know the foes hitpoints and you watch the monster health bar you can guess pretty accurately what the bonus is. If you kill a dragon, stoically count your hits and make sure none are good [or adjust if unluckily you get one] that's generally enough. I believe that tedious counting and arithmetic should be done by the program, not the player. How should the code be set up to figure out the bonus? Should one assume the char knows the exact damage done, so that a hit doing 7 points with a (4d4) weapon guarantees that the total bonus lies between +3 and -9? Should it only be based on the monster health bars? How should the estimate be presented?
December 4, 2008, 15:19   #2
Mangojuice
Z+Angband Maintainer

Join Date: Jun 2008
Posts: 318
Quote:
 Originally Posted by PowerDiver Consider the simple case where a char with strong pseudo is wielding a good dagger (1d4). Suppose further that no other items that could add a damage bonus are wielded. After a few hits, if you know the foes hitpoints and you watch the monster health bar you can guess pretty accurately what the bonus is. If you kill a dragon, stoically count your hits and make sure none are good [or adjust if unluckily you get one] that's generally enough. I believe that tedious counting and arithmetic should be done by the program, not the player. How should the code be set up to figure out the bonus? Should one assume the char knows the exact damage done, so that a hit doing 7 points with a (4d4) weapon guarantees that the total bonus lies between +3 and -9? Should it only be based on the monster health bars? How should the estimate be presented?
There's a lot of complicating issues that make this really difficult. In fact, I challenge you to figure out the damage bonus of a weapon manually while not altering gameplay (e.g. fighting one monster type over and over when you wouldn't normally do so) so as to learn better.

Here are the complications I see:

1. Players may not know the life ratings of monsters they are fighting.
2. Even if they do, the HPs are random.
3. Calculating over multiple hits is complicated by monsters regenerating or healing.
4. IIRC the monster's AC can also affect the damage it takes.
5. Critical hits, sneak attacks, temporary player status effects, strength, dexterity all can affect damage.
6. Obviously such a system, if it's worth bothering with, ought to work not only for strong pseudo-id characters with {good} weapons, and then there's unknown damage-affecting special powers to worry about.
7. The life meter is somewhat imprecise.

So I think that the learning, if implemented, ought to be simulated: perhaps, you get a feel for the quality (average/good/excellent) just by owning the object, but you will gradually learn the bonuses of the object (though not any hidden powers) by using it to strike enough blows.
__________________
-----------------------------------------
Z+Angband: A Zangband evolution
http://tinyurl.com/5pq2bd

December 4, 2008, 22:19   #3
PowerDiver
Prophet

Join Date: Mar 2008
Posts: 2,712
Quote:
 Originally Posted by Mangojuice In fact, I challenge you to figure out the damage bonus of a weapon manually while not altering gameplay. ... you will gradually learn the bonuses of the object (though not any hidden powers) by using it to strike enough blows.
There is no need for a challenge, I do it all the time. I pay attention until it gets too annoying, and I am generally right maybe +/- 1 [except when I forget to account for the str bonus ].

Simply wait until the sample std deviation of the avg damage of that many hits is below .5?

December 5, 2008, 05:39   #4
PowerDiver
Prophet

Join Date: Mar 2008
Posts: 2,712
Quote:
 Originally Posted by Mangojuice 7. The life meter is somewhat imprecise..
The life meter is precise. N *'s means that the current hitpoints are less than fullhp times 10 / N, except for full hp which is not 11 *'s.

E.g., I just picked up a good shortbow. Using avg ammo, my first shot on Grip dropped him to 7 *'s. My second shot dropped him to 1 *. At this point, I knew *for sure* that my shortbow was +3 or +4. That info should be presented when I inspect the bow. More importantly it should be available if I choose to squelch the bow.

Frankly, I don't see the point of hiding the damage bonus. However, I am resigned to the fact that the community sees things differently. I am interested in any suggestions, even if it is only to see what argument I use against them.

December 5, 2008, 06:10   #5
Nick
Vanilla maintainer

Join Date: Apr 2007
Location: Canberra, Australia
Age: 55
Posts: 8,397
Donated: \$60
Quote:
 Originally Posted by PowerDiver How should the estimate be presented?
It seems to me that the natural place to present this kind of info is from the 'I' command. Some variants have a calculation of average damage here; for example, FA would show something like this:
Code:
```Wielding it you would have 3 blows and do an average damage per blow of 14 against all monsters.
Your + to-hit would be 5.```
This information has criticals rolled into it, but I'll ignore that for now.

It seems that there are two obvious ways to present this sort of information here.
1. Just show it - so your bow would have something like "it's + to-dam is 3-4";
2. Roll the max and min values into the average calculation, so it says something like "an average damage of 12-16 against all monsters", where the 12 is based on the lowest estimate of the bonus and the 16 is based on the highest estimate.

Alternatively, you could do a more direct method of just keeping a list of the last 10 or 20 damaging blows with the weapon, and quote an average of that for the average damage (I do this for druid blows in FA).
__________________
One for the Dark Lord on his dark throne
In the Land of Mordor where the Shadows lie.

Last edited by Nick; December 5, 2008 at 10:06.

 December 5, 2008, 09:44 #6 Big Al Swordsman     Join Date: Apr 2007 Location: Calgary Age: 32 Posts: 327 Donated: \$18.32 As Eddie demonstrates, it's quite possible to figure out this information by hand, so you might as well give it to the player after some amount of time. Sure, you could figure it out by hand but that hardly sounds fun; this is a game so anything that increases the enjoyment of the game should be considered. I would think that an easy solution would be to just reveal the +to-dam after some number of uses of that weapon (say, a random number between 20 and 40?). It would quite a nightmare for the computer to try to figure out all the ranges for weapons and keep track of everything. Say if you had an unidentified ring of +damage, while firing unidentified arrows from an unidentified bow. Using a few different combinations of equipment, you might be able to figure out all the values, but it wouldn't be easy for the computer. If you just reveal the +dam after some number of uses, it might make the game a bit easier, but I don't think that that's the end of the world, and would be more realistic. Consider revealing the +ac to armour if you've been hit x number of times for consistency? Though, I don't really like the idea of encouraging the player to rest next to some weak monster for a lot of turns just to id stuff. I dunno. __________________ Come play Metroplexity! Un, V MX H- D c-- f- PV s- d+ P++ M+ c-- S I++ So+ B+ ac- !GHB SQ RQ+ V+
December 5, 2008, 14:19   #7
buzzkill
Prophet

Join Date: May 2008
Location: Indiana, USA
Posts: 2,939
Donated: \$8
Quote:
 Originally Posted by Big Al I would think that an easy solution would be to just reveal the +to-dam after some number of uses of that weapon (say, a random number between 20 and 40?). It would quite a nightmare for the computer to try to figure out all the ranges for weapons and keep track of everything. Say if you had an unidentified ring of +damage, while firing unidentified arrows from an unidentified bow. Using a few different combinations of equipment, you might be able to figure out all the values, but it wouldn't be easy for the computer. If you just reveal the +dam after some number of uses, it might make the game a bit easier, but I don't think that that's the end of the world, and would be more realistic.
I like it. Start out with pseudo ID, then give more information with use. This info should come fairly quickly with just a single unknown item being used. With multiple unknown items, just have it take longer to ID each. Wielding items with conflicting modifiers (good and cursed) would render any ID beyond pseudo nearly impossible.

To get more complicated... base the time it takes to ID on WIS/INT, class level, and/or class vs. item type (fighters quicker to ID swords, thieves with daggers, mages with staffs, and so on)

December 5, 2008, 14:46   #8
Mangojuice
Z+Angband Maintainer

Join Date: Jun 2008
Posts: 318
Quote:
 Originally Posted by PowerDiver There is no need for a challenge, I do it all the time. I pay attention until it gets too annoying, and I am generally right maybe +/- 1 [except when I forget to account for the str bonus ]. Would you please give me a specific proposal about how to do "gradual learning"? Simply wait until the sample std deviation of the avg damage of that many hits is below .5?
Simply wait until you have struck, say, (85 - level) blows. Simulated, instead of precise. You could learn it by hand faster than that, maybe, in some circumstances.

Re: the life meter: Your example doesn't impress me because Grip is a unique monster, possibly the *very* best in the game for this purpose. Clearly monsters with fixed life ratings are better candidates for testing weapons with unknown bonuses against. Even monsters with fixed ratings, though, can be tough to use for this. A * represents 10% of the monster's hit points, but a hit that knocks off a * may have done as little as 1 damage and as much as just under 20% of the monster's hit points. You get a little better information if the monster is fully healed before your hit, but the range is still [10%, 20%). For Grip, this would be 3-4 hp... but for Mughash, it would be 15-29 hp. For something with a non-fixed amount of HP, say, an Uruk, the amount would be anywhere from 1-15 hp; for a tougher monster, say, a Cloud Giant, the range would be 4-139 hp. It's very unlikely that 4 damage would knock a star off a cloud giant, but even if you stick to relatively likely values, you'd get a range like 30-86, still not much help.
__________________
-----------------------------------------
Z+Angband: A Zangband evolution
http://tinyurl.com/5pq2bd

Last edited by Mangojuice; December 5, 2008 at 15:10.

 December 5, 2008, 20:05 #9 PowerDiver Prophet   Join Date: Mar 2008 Posts: 2,712 Hey guys, I would really like *specific* proposals. Let me summarize badly, and you can correct me. First off, none of you believe in statistics. You only want me to print 100% learned knowledge, rather than best guesses. Let me reiterate, as someone who actually does this, that one can make a very good guess a whole lot faster than you are suggesting. You do everything with averages and take votes and see who wins. E.g. fighting a 4d8 monster with a 2d4 weapon that takes 3 hits to kill, you get a vote of {+2 to +4}. For simplicity you can count that as +3 and average these values for an excellent estimate in not too long. You can do better/faster if you watch the health *s on every hit as you go. Also, the wise player searches out dragons for other reasons, and they all have fixed hp. Kill just one dragon, and your estimate is usually accurate to within +/- 1 just counting total hits, and it can be more accurate if you watch every *. Nick's approach comes down to giving the player access to his precise damage rolls. Unfortunately, for a 4d5 weapon, it will take on average nearly 1000 hits to hit both extremes, but at least it will be down to a range like +2 to +6 pretty quickly and the player will "know" it is most likely +4, just with a messy description. Mangojuice wants me to base everything off of health stars. That's more annoying to code and slows the process compared to exact values, but is still doable. I find it most inelegant, and am hoping others prefer something else, but it's better than nothing. I keep getting people telling me to "learn it gradually", but the question is how? If you will have exact knowledge after 40 hits, what should you know after 20 hits? Where does the 40 number come from? Here's another question. You get it down to +3 to +4 with 10,000 to 1 odds that it is +3. Do you still output (+3 to +4)? As someone who believes in statistics, I would prefer (+3.0001) or better yet just tell the exact answer once the odds are 10 to 1 or better.
 December 5, 2008, 20:39 #10 camlost Sangband 1.x Maintainer     Join Date: Apr 2007 Posts: 522 Of course, the problem is that it's relatively hard to code due to the large number of variables. Plus, at some point there is a cutoff where you have to decide to just say what it is. Science does this all the time, frequently using a 95% cutoff. Angband likes to cut things off at 95/5% all the time, so that seems like a good choice. Report all the possible integers within a 95% confidence interval. I would go off the raw damage. Stars is a really obnoxious abstraction. I'd rather artificially slow down the learning to approximate using stars rather than code that bit (personally). Also, it seems unnecessary; this might use information that is easily accessible, but that is ok to my mind. I very much approve of the idea of gradual learning of items abilities. __________________ a chunk of Bronze {These look tastier than they are. !E} 3 blank Parchments (Vellum) {No french novels please.}

 Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 Thread Tools Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is Off Forum Rules
 Forum Jump User Control Panel Private Messages Subscriptions Who's Online Search Forums Forums Home Angband     AAR     Vanilla     Development     ToME     Sil     Variants     Competition The real world     Idle chatter     Oook! Obsolete     v4

 Similar Threads Thread Thread Starter Forum Replies Last Post Seany C Variants 3 October 8, 2008 11:55 AceRimmer Vanilla 4 October 1, 2008 18:41 ekolis Variants 2 December 31, 2007 02:51 will_asher AAR 5 October 17, 2007 19:16 Seany C Variants 5 April 28, 2007 19:22

All times are GMT +1. The time now is 19:19.