Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suggestion: weapon description - show average damage per round, and comparison with current weapon, if other #2239

Closed
smbhax opened this issue Nov 23, 2021 · 9 comments

Comments

@smbhax
Copy link

smbhax commented Nov 23, 2021

PLATFORM and OS or BROWSER:
SSH - PuTTY 0.76 64-bit x86 Windows

DCSS VERSION AND GAME INFORMATION:
0.28-a0-906-g0406aca

DESCRIPTION:
Coming to DCSS from Angband--where I was also a horrible noob--I miss the feature of the weapon information screen in that game showing a simple number for "Average damage/round"; Crawl's weapon information screen, on the other hand (i for inventory, select a weapon), does not have a single number that sums up an average of the damage the weapon and any modifiers, status effects, etc it has will inflict; it shows "Base damage," "Base attack delay," any occurrence rates and damage ranges from status effects, etc, as separate numbers, and leaves it up to the player to do the complicated math to try to figure out if the weapon will do more damage than, say, their current weapon, as wielded by their character--including taking into account the character's damage modifiers, speed, accuracy, and so on. This is not always easy to calculate or even estimate on the fly.

(Angband's figure, for instance, takes into account the character's STR and DEX modifiers to damage and speed; it also incorporates added damage from inflicted effects--say, a 1d6 electrical effect occurring on 5% of successful hits would be averaged and added to the total.)

It would be helpful to have a single number shown for the average total damage per round the weapon will inflict on a non-resistant target, in the character's hands.

(For quick legibility, it might be useful to have such a number highlighted in a different text color.)

Going one step further, it would be very useful to have the weapon information screen also show a comparison of this average damage per round number with the average damage per round of the player's current weapon, if they're examining a different weapon. Armor information screens in Crawl already do this: examining another piece of armor will tell you something like "If you switch to wearing this armour, your AC would decrease by 9 (20 -> 11)"; something similar for weapons ("your damage/round would increase by 5.6 (17.1 -> 22.7") would be similarly helpful.

Possibly such calculations are complicated in Crawl by a character's differing weapon skill levels and so forth, I don't know. In any case, I find estimating weapon efficacy much trickier in Crawl, and any means of alleviating my ignorant confusion would be appreciated. : )

(Crawl does devote a significant chunk of its weapon info screen to skill training time estimates, which in my ignorance seem much more esoteric and less immediately useful than a damage estimate--and I have no idea what "in about 1.0 XLs" in relation to training time means, for instance.)

EXTRA FILES:
Angband weapon information screen:
angband

Crawl weapon information screen:
crawl

Crawl armor information screen, with comparison:
crawl_a

@randomMesh

This comment has been minimized.

@ebering
Copy link
Contributor

ebering commented Nov 29, 2021

This is a long-requested feature with a mock-up and some discussion on our dev wiki. The big obstacles are implementation time (patches very welcome for this feature!) and clear communication of good information

Regarding displaying a single number, see the discussion here in a previous issue. Before slaying bonus damage and brands, crawl's melee damage formula is a (rounded to integer at a particular scale quotient of a) product of three uniform random variables. The random rounding doesn't matter so much, but products aren't easy to do for summary statistics: they are not approximately normal (where averages and maximums are helpful summary statistics). I've thought about this a bit more since the discussion in #2007, so I've got a bit more to say. Not sure if it's enough for an implementer to start hacking.

An approach to displaying a good list of numbers is to observe that as a product of random variables, it's approximately truncated lognormal. So the key^1 numbers are E(log(damage)), Var(log(damage)), and the range of values. The main damage roll in crawl can always roll 0, so the range really cares about the max.

Since crawl is a video game and not a statistics homework the real missing ingredient from this implementable is a nice way of accurately communicating the helpful information (E(log(damage)), Var(log(damage)), max(damage)) to the player without mentioning logarithms.

As an aside: UI mockups that exclude console are generally unhelpful; console is an equally important interface mode. In this case it's just a description box, but do keep that in mind.

[1] key numbers means something precise here: the truncated lognormal distribution is the distribution of maximal entropy for the truncation range subject to the constraints given by E(log(x)) and Var(log(x)); there is no further information to be learned about the distribution.

@smbhax
Copy link
Author

smbhax commented Nov 29, 2021

Me, I would be perfectly happy just seeing "avg dam" as mocked up in the rapier / war axe comparison in issue 2007 : ) --as long as "avg dam" takes into account relative weapon speeds, ie it should represent average damage over some fixed period of time as wielded by the character at their current speed, not counting time-limited enchantments such as being temporarily hasted by a spell or something.

@mikeayer
Copy link

What about displaying maximum-per-hit, average-per-round, and variability? That gives an idea if a weapon might do a lot of damage or little, or average at a medium, or the like, without being formulae or curve graphs. And it can be displayed on the console.

@smbhax
Copy link
Author

smbhax commented Nov 29, 2021

I'm a somewhat simple player, and personally am looking for a single number that is easily spotted at a glance (color bolding might help). I can't completely object to other, related numbers being somewhere in the vicinity as well--though I might like to ;)--but let's not forget that there are already a lot of numbers on weapon info screens (and perhaps some of them, like all the training time numbers, aren't as necessary to have there).

@randomMesh

This comment has been minimized.

@smbhax
Copy link
Author

smbhax commented Dec 13, 2021

Too much information. I think displaying the range only, e.g. Damage: 7 - 12 would be sufficient.

For my money, even range is too much information. : )

As a recent actual example, Infra Arcana's latest released build switched from representing weapons by average base damage--a single number--to damage range, and I've been surprised by how much less useful this is to me; if you show me damage range, that just means I have to do the math in my head to get the average, and I have to do three calculations rather than just one to compare two weapons, which is almost always the reason why I want to know a weapon's damage in the first place.

So with damage range, each time I still have to calculate

  1. average damage weapon 1
  2. average damage weapon 2
  3. difference between average damage 1 and 2

whereas, if you show me just average damage, all I have to calculate each time is

  1. difference between average damage 1 and 2

And even better, as I mentioned earlier, DCSS's own armor info display also does that type of calculation for the player--between AC wearing their current armor vs AC if they replaced that with the currently viewed armor piece--and, in addition to showing those two numbers, shows the difference between them, boiling it all down to one beautiful single number. : D

(And if you did it that way, you'd have the added bonus of having the weapon info display be consistent with the armor info display. : )

@PleasingFungus
Copy link
Member

This is mostly done in 52719c1 and onward. It's not a "damage over time" number (which is what I think is meant by "per round" here?), and it doesn't have a comparison to the current held weapon.

@semitonal
Copy link
Member

Closing this - weapons now have damage ratings displayed as per PF's previous comment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants