Revamp eHP Calculations (for Recovery over Time)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu bằng cách xác định phần tính eHP và trường hit-rate trong phần config. Sử dụng ví dụ đơn giản hóa về regeneration và leech để hiểu mô hình dựa trên thời gian được đề xuất, sau đó xác định những cơ chế hồi phục nào có thể được hỗ trợ trước. Được xem là hoàn tất khi eHP tính đến một tập con được xác định rõ ràng của các cơ chế hồi phục theo thời gian mà không làm phóng đại lượng hồi phục vượt quá mức Life hoặc ES tối đa tương ứng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Check for duplicates
- I've checked for duplicate open and closed issues by using the search function of the issue tracker
What platform are you running Path of Building on?
Windows
Is your feature request related to a problem?
I think eHP, as a concept, is extremely valuable. Representing the total amount of damage a character can take before dying is one of the most useful survivability metrics available.
However, the current implementation falls far short of that goal.
The main issue is that eHP only accounts for a limited set of mechanics, such as avoidance and instant recovery on block or before hits. Those are handled well, but actual survivability is also heavily affected by recovery that occurs between hits. This recovery over time is completely neglected.
If eHP is intended to represent "damage taken before dying", ongoing recovery should be part of the calculation.
As an example, any build with sufficiently high attack/spell block and Life/ES gained on block can reach extremely high eHP values against the default hit configured in PoB.
And that's correct because, yes: you can tank this hit basically forever then.
However, the exact same outcome can be achieved through many other recovery mechanics that currently do not contribute to eHP.
At the extreme end:
- A character has
XLife. - It is hit for
Ddamage. D < X.- The hit occurs every
Tms.
If the character recovers D Life over the interval T, then it is functionally immortal against that scenario.
Yet none of the following currently affect eHP:
- Any Regen
- Any Leech
- Any Recoup
- Other recovery-over-time mechanics
- Life/ES/Mana gained on Hit
- Continuous Life Flasks
- and probably more I can't think of right now
If the purpose of eHP is to display "damage taken before dying", omitting these mechanics makes the metric incomplete.
As a result, the current eHP value is often misleading. It only accurately represents survivability for a relatively small subset of builds that rely on the mechanics currently supported by the calculation.
It also leads to players overly focusing on avoidance mechanics and recovery on avoidance effects because those directly increase the displayed eHP number.
Since "bigger number = better", players undervalue recovery mechanics that substantially improve "real world" survivability but do not change the eHP in PoB at all.
Describe the solution you'd like
I'd like to see eHP evolve into a model that takes time into account.
The config section already contains a hit-rate field. That information could be incorporated into the calculation.
Consider the following simplified example:
- Character has
XLife. - No avoidance.
- No currently supported eHP modifiers (e.g. Defiance of Destiny).
- No armour or other physical mitigation.
- Incoming hit deals
Dphysical damage, without Crit Chance - Hit occurs every
Tms.
Right now in PoB, the displayed eHP is simply:
eHP = X
No amount of regeneration or leech changes this value, despite having an obvious impact on survivability over time/the number of hits until death.
Now assume the character also has:
- Life regeneration per second:
R - Life leech per second (non-instant):
L
Then the actual damage that can be sustained before death becomes:
$$
D \times \left\lceil \frac{X}{D - (R + L)\left(\frac{T}{1000}\right)} \right\rceil
$$
where
$$
\left\lceil \frac{X}{D - (R + L)\left(\frac{T}{1000}\right)} \right\rceil
$$
is the hit number on which the character dies.
I illustrated this using the following sawtooth graph:
https://www.geogebra.org/graphing/nvaj29j2
e.g. with:
- 5000 Life
- 1000 Life/s regeneration
- 2000 Life/s leech
- 2000 damage every 620 ms
The character dies on the 36th hit, corresponding to 72,000 eHP.
EDIT: okay I actually forgot to cap the health at the Life max, currently it overfills and thus inflates. It's too late, gonna fix that tmrw.
Describe alternatives you've considered
No response
Additional context
This example is intentionally pretty minimal.
Things such as "X gained on hit" are comparatively straightforward to model, but things become more complicated once mechanics such as Recoup with its ramp over time are introduced
Damage being distributed across different pools (Life, ES, Mana, Ward), each with potentially different recovery methods also will make it more complicated.
I doubt every currently unsupported recovery mechanic could realistically be added at once.
However, eHP has already been significantly limited for a long time. Moving toward a time-based model and initially supporting only a subset of recovery mechanics (for example regeneration, leech, gain on hit, and recoup) would already be a massive improvement.
Perfect should not be the enemy of good, yadda yadda.
- Ngôn ngữ chính
- Lua
- Star
- 5.4k
- Fork
- 2.4k
- Merge trung bình
- 1 ngày 12 giờ
- Pull request đã merge (30 ngày)
- 26
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của PathOfBuildingCommunity/PathOfBuilding
-
bug: accuracy
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
PathOfBuildingCommunity/PathOfBuilding#7548 · 4 bình luận · 1 reaction ·
-
enhancement
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
-
bug: calculation
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
PathOfBuildingCommunity/PathOfBuilding#10353 · 1 bình luận ·
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
Tất cả issue của PathOfBuildingCommunity/PathOfBuilding
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
macOS下查找brew::ncurse失败 Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
-
[Eco] Egg Config Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
pterodactyl/game-eggs#634 ·
-
Feature Request
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
Questie/QuestieTrace#33 ·