Avatar of lightning/ avatar of cold implementation

"
Mark_GGG wrote:
If Avatar of Lightning and/or Cold are added, they will not work the same as Avatar of Fire.
Part of the reason for the "Deal no non-fire damage" on Avatar of Fire's current design was that it left open the possibility of having Avatars of other elements in the far future without them being overpowered in combination, since each of them would have the same drawback (can't deal damage not of that element), but would give a different benefit suited to their element and it's attribute alignment.

The converting everything to fire doesn't work for other elements for the reasons already stated in the thread.


...and there is no way to have additional keystones just like AoF that simply override the current rules? I don't see how it would be so hard.
"
Mark_GGG wrote:
It doesn't matter if you can never have both at the same time on the same character, conversion cannot have the capability to loop. If cold damge can be converted to fire, that means it's not possible at all to implement fire damage converting to cold. It doesn't matter if they'd happen on different characters, the damage code has to handle all the cases, in the correct ordering, and you can't have two cases that go against each other and loop like that.

If the game can convert one way, it can't convert the other.
So it's essentially the same as with desyncs. There are close to no such issues at all when you play other multiplayer ARPGs around the internet. But the game just desyncs.

Too bad GGG has too few money to have game engine implementation as polished as those other soulless ARPGs around... :(
i see it as lazy excuse that it loops.
Why it cant work as works blood magic and eldrich battery together? they neglect both of them and prevents anyone from picking both.
Last edited by Andrius319#4787 on Jul 25, 2014, 2:10:41 PM
"
Andrius319 wrote:
i see it as lazy excuse that it loops.
Why it cant work as works blood magic and eldrich battery together? they neglect both of them and prevents anyone from picking both.


It's not lazy. It's fact.

If you convert fire to cold and cold to fire in the same attack, you have an endless loop in that skill.

However, if you have EB and BM, you convert all ES to mana, and you remove all mana. You therefor have no ES and no mana. No possible loop. This is because life isn't being converted into anything.

P.S. You also necroed this thread.
Last edited by Natharias#4684 on Jul 25, 2014, 6:44:40 PM
"
Andrius319 wrote:
i see it as lazy excuse that it loops.
Why it cant work as works blood magic and eldrich battery together? they neglect both of them and prevents anyone from picking both.


How about just taking cold spells or lightning spells instead of getting an avatar to do that damage?
"
Andrius319 wrote:
i see it as lazy excuse that it loops.


it's not "lazy" if there are actual reasons for how it is done, or why it is not done differently.

but let us do some graph theory to understand the problem.

let's say we have a graph that has 5 nodes: P, L, C, F and Ch.

each node gets a number attached to it, that is calculated during our calculation, then all these numbers are added up and that is our result D.

So: D = P + L + C + F + Ch

Now, as long as neither of these values depend on each other, you can calculate them in any order, and the result doesn't change. but if you add conversion, you create a dependency between the two nodes. So if in your calculation you "convert X% of C to F", then you must calculate C before F, otherwise you get the wrong result. This is called a topological sorting of the dependency graph.

a topological sorting can only exist if the graph has no cycles. so you cannot have "C to F" and "F to C" (cycle of two) in the same calculation, neither can you have "C to F", "F to L" and "L to C" (cycle of three) or any longer cycles. if there are any of these cycles, you either have an endless loop, or one of these conversions will always result in the value of 0, or some other sort of incorrect value, as you calculate the value before all dependencies are calculated.

now you have two options:
  • 1. pick one fixed sorting for all calculations
  • 2. figure out the sorting in each calculation individually

option 1 is the easiest. option 2 is more flexible, but also more computationally expensive. and it doesn't solve the problem that you need to guarantee there are never any cycles. as far as i gather from this thread (and i have no knowledge of game internals), GGG went with option 1.

if you want to handle cycles without falling into an infinite loop, you cannot use topological sorting to calculate the value of D, but instead you have to solve a flow problem, which is both much more complicated to implement, and is in a much higher computational class, so takes more computing power to calculate.

I like it like it is now, game gives you different choices depending on what kind of character you want to be considering damage type, defense stats ect.

how will it be if for every keystone/notable you have conterparts.

Iron reflexes counterpart that transformes armour to evasion (evasion + dodge builds could be OP)
Point Blank counterpart that gives you more damage as projectile travel fruther and less for closeups (every party would need to have sniper cause of his dps over distance)
Sorry, nothing too substantial to contribute, just saw this...
"
Mark_GGG wrote:
Of course, there's no guarantee we'll ever actually do any other ones.


That kind of attitude doesn't get pizza.

That kind of attitude gets a poorly made pizza-bagel that's been sitting in the fridge for a week.

Now, MAKE AN AVATAR OF COLD *whip crack*
"
_Eddi_ wrote:
"
Andrius319 wrote:
i see it as lazy excuse that it loops.


it's not "lazy" if there are actual reasons for how it is done, or why it is not done differently.

but let us do some graph theory to understand the problem.

let's say we have a graph that has 5 nodes: P, L, C, F and Ch.

each node gets a number attached to it, that is calculated during our calculation, then all these numbers are added up and that is our result D.

So: D = P + L + C + F + Ch

Now, as long as neither of these values depend on each other, you can calculate them in any order, and the result doesn't change. but if you add conversion, you create a dependency between the two nodes. So if in your calculation you "convert X% of C to F", then you must calculate C before F, otherwise you get the wrong result. This is called a topological sorting of the dependency graph.

a topological sorting can only exist if the graph has no cycles. so you cannot have "C to F" and "F to C" (cycle of two) in the same calculation, neither can you have "C to F", "F to L" and "L to C" (cycle of three) or any longer cycles. if there are any of these cycles, you either have an endless loop, or one of these conversions will always result in the value of 0, or some other sort of incorrect value, as you calculate the value before all dependencies are calculated.

now you have two options:
  • 1. pick one fixed sorting for all calculations
  • 2. figure out the sorting in each calculation individually

option 1 is the easiest. option 2 is more flexible, but also more computationally expensive. and it doesn't solve the problem that you need to guarantee there are never any cycles. as far as i gather from this thread (and i have no knowledge of game internals), GGG went with option 1.

if you want to handle cycles without falling into an infinite loop, you cannot use topological sorting to calculate the value of D, but instead you have to solve a flow problem, which is both much more complicated to implement, and is in a much higher computational class, so takes more computing power to calculate.



sigh
it seems that i will need to say more than two words as i did in previous post.

The whole question lurkering here should be: "how to balance it" or "how to implement this".
yes i do know how mechanics work you described and i do understand the problem mechanics encounter. I called it lazy because code vise it isn't much work.

The solution we looking for is what we want to see. If we would implement three avatars, independently (then picked one of them) they should work as normal.
if ggg decides to make conversions different, lets say lightning 40% cold 30% fire 50%, let it be.
When situation comes to then two or three avatars are picked, then the decision is up to ggg:
If they do decide that there can work only one avatar, so be it, write additional two lines in the code and make them not work at all when picked more than one avatar.
If they decide to make them work they should rewrite the code and decide how to balance it: what percentages give to every element AND what portion of overall damage will be converted, for example:
lets say conversions are: fire 50%, lightning 40%, cold 45%.
it would lead to 135% conversion of 300% or 45% of 100%,
this would fallow to 16.7% of fire damage, 13.3% lightning damage and 15% cold damage.
If they would decide that every element is left untouched to each correspond avatar the damage would increase drasticly. If they decide to (lets say cold damage) leave 33% of cold damage not reduced as there would be picked avatar of cold, and other two portions of 33%+33% would be mitigated and converted by other two avatars.

As i said the whole question is "how to balance it"
and not "how it doesn't work" and leave it alone.

all it needs is some decisions how it should work and some code rewriting.
Last edited by Andrius319#4787 on Jul 26, 2014, 3:18:28 PM
there is no question about balancing. if you take "deal on non-fire damage" and "deal no non-lightning damage" at the same time, you deal absolutely zero damage. BOOM. balanced.

Report Forum Post

Report Account:

Report Type

Additional Info