

" Michaelangel007 " Mark_GGG

We could fix pretty much all instances of aura snapshotting at the cost of a day or so's work, a little extra processing, and making auras never be able to transition between areas. That last part isn't worth the cost.

It's unfortunately a very technically challenging bug to solve. ...We could fix pretty much all instances of aura snapshotting at the cost of a day or so's work, a little extra processing, and making auras never be able to transition between areas. That last part isn't worth the cost.



Huh?? You already have something like this ... excuse the lack of proper forum support for code/preformatting ....



enum Auras {

. AURA_ANGER = (1 << 0),

. AURA_CLARITY = (1 << 1),

. AURA_DETERMINATION = (1 << 2),

. AURA_DISCIPLINE = (1 << 3),

. AURA_GRACE = (1 << 4),

. AURA_HASTE = (1 << 5),

. AURA_HATRED = (1 << 6),

. AURA_PURITY_ELEMENTS = (1 << 7),

. AURA_PURITY_FIRE = (1 << 8),

. AURA_PURITY_ICE = (1 << 9),

. AURA_PURITY_LIGHTNING = (1 << 10),

. AURA_VITALITY = (1 << 12),

. AURA_WRATH = (1 << 13)

};



class Player

{

. ...

. int32 bAurasPreviouslyOn;

. int32 bAurasActive; // bit-flags of auras currently active

};



Player::OnZoneLeave()

{

. bAurasPreviouslyOn = bAurasActive;

}



Player::OnZoneEnter()

{

. if( bAurasActive != bAurasPreviouslyOn )

. ....

}

Huh?? You already have something like this ... excuse the lack of proper forum support for code/preformatting ....enum Auras {. AURA_ANGER = (1 << 0),. AURA_CLARITY = (1 << 1),. AURA_DETERMINATION = (1 << 2),. AURA_DISCIPLINE = (1 << 3),. AURA_GRACE = (1 << 4),. AURA_HASTE = (1 << 5),. AURA_HATRED = (1 << 6),. AURA_PURITY_ELEMENTS = (1 << 7),. AURA_PURITY_FIRE = (1 << 8),. AURA_PURITY_ICE = (1 << 9),. AURA_PURITY_LIGHTNING = (1 << 10),. AURA_VITALITY = (1 << 12),. AURA_WRATH = (1 << 13)};class Player. .... int32 bAurasPreviouslyOn;. int32 bAurasActive; // bit-flags of auras currently active};Player::OnZoneLeave(). bAurasPreviouslyOn = bAurasActive;Player::OnZoneEnter(). if( bAurasActive != bAurasPreviouslyOn ). .... I'm not sure why you'd think auras are some form of bitset, particularly given that a character could have any number of different versions of the same aura with different levels, quality and supports. I'm afraid the only part of that code which remotely resembles anything in the game is that "class Player" exists as a class. I'm not saying this to be harsh or put you down, so I apologise if it comes off like that, but no, we don't have anything like that in the code, and your assumptions about how the code works are significantly off-base. " Legatus1982 I don't understand Mark, what is so difficult about running a check on buffs every time gear is swapped? The part where you abstract all the actual problem away as "running a check" without defining any details of what that means. That part.



" Legatus1982



So you're going to have to forgive me for being unable to come up with a reason why the programmers can't take 20 seconds to right click the buff icons for anything that isn't RF or BR whenever gear is swapped. I can right click and remove the buff myself. I could, in fact, probably fix your problem using autohotkey to right click the buff icon whenever I remove a piece of gear. (Would require manually activating the hotkey script but it would work).So you're going to have to forgive me for being unable to come up with a reason why the programmers can't take 20 seconds to right click the buff icons for anything that isn't RF or BR whenever gear is swapped. I already said in my post we could solve all aura snapshotting by preventing auras from ever transitioning between areas, but that the massive quality-of-life cost of that to all players was too much for the benefit. You're correct that we could solve it also by having all auras turn off any time you change your gear in any way (which happens a lot more than I suspect you reaslise). But that would be even worse for player QoL.



The correct solution is not to remove everyone's auras all the time. It's to be able to replace them, on the fly, with up-to-date versions, in response to stat changes. That is, as I mentioned, technically challenging, for the reasons I explained. UPDATE: Spent some of the morning talking to Jonathan about this - we're now confidant in getting the aura snapshotting fix in for 1.2.0, and we've fleshed out plans for the minion snapshotting fix some more as well.I'm not sure why you'd think auras are some form of bitset, particularly given that a character could have any number of different versions of the same aura with different levels, quality and supports. I'm afraid the only part of that code which remotely resembles anything in the game is that "class Player" exists as a class. I'm not saying this to be harsh or put you down, so I apologise if it comes off like that, but no, we don't have anything like that in the code, and your assumptions about how the code works are significantly off-base.The part where you abstract all the actual problem away as "running a check" without defining any details of what that means. That part.I already said in my post we could solve all aura snapshotting by preventing auras from ever transitioning between areas, but that the massive quality-of-life cost of that to all players was too much for the benefit. You're correct that we could solve it also by having all auras turn off any time you change your gear in any way (which happens a lot more than I suspect you reaslise). But that would be even worse for player QoL.The correct solution is not to remove everyone's auras all the time. It's to be able to replace them, on the fly, with up-to-date versions, in response to stat changes. That is, as I mentioned, technically challenging, for the reasons I explained. Posted by

Mark_GGG

on Grinding Gear Games on Quote this Post

Mark, you're fucking awesome. Your posts really make me feel like you guys care about this game and its players. Thank you for providing are far more information than you actually need to.



Also, I'm super glad that snapshotting might be fixed in 1.2.0! IGN: Korbad Last edited by korbad on May 2, 2014, 2:37:07 AM Posted by

korbad

on on Quote this Post

Feed me the tears of the snapshotting people. Mmmm... Posted by

FreeMark

on on Quote this Post

" Real_Wolf

Gotta love dem forum coders

Gotta love dem forum coders



You do realize I've shipped games on DS, PC, PS1, PS2, PS3, and Wii.



Your credentials are what again??



No one is suggesting GGG are idiots. The point about posting code snippets is to get some insight into the issues that we haven't thought about and can't see because we don't know how the code works. It is called "opening a dialog" getting the dev's thought process. Yourealize I've shipped games on DS, PC, PS1, PS2, PS3, and Wii.credentials are what again??is suggesting GGG are idiots. The point about posting code snippets is to get some insight into the issues that we haven't thought about and can't see because we don't know how the code works. It is called "opening a dialog" getting the dev's thought process. Posted by

Michaelangel007

on on Quote this Post

" Michaelangel007 " Real_Wolf

Gotta love dem forum coders

Gotta love dem forum coders



You do realize I've shipped games on DS, PC, PS1, PS2, PS3, and Wii.



Your credentials are what again??



No one is suggesting GGG are idiots. The point about posting code snippets is to get some insight into the issues that we haven't thought about and can't see because we don't know how the code works. It is called "opening a dialog" getting the dev's thought process. Yourealize I've shipped games on DS, PC, PS1, PS2, PS3, and Wii.credentials are what again??is suggesting GGG are idiots. The point about posting code snippets is to get some insight into the issues that we haven't thought about and can't see because we don't know how the code works. It is called "opening a dialog" getting the dev's thought process.



that dev pride.



that dev pride. /forum/view-thread/869543 all my builds' compilation

Please PM me on forum to inform me if I won an auction. Thank you.

Posted by

abcnever

on on Quote this Post

" Mark_GGG

The correct solution is not to remove everyone's auras all the time. It's to be able to replace them, on the fly, with up-to-date versions, in response to stat changes. That is, as I mentioned, technically challenging, for the reasons I explained. The correct solution is not to remove everyone's auras all the time. It's to be able to replace them, on the fly, with up-to-date versions, in response to stat changes. That is, as I mentioned, technically challenging, for the reasons I explained.



Thanks for the info Mark.



We understand that QoL also effects server load; are you able to share any stats on the percentage of people that use 1, 2, 3+ auras please?



I only suggested the bitset for auras as an extremely light-weight fast-cached read check to minimize CPU/network load; obviously, as you said the, actual Player struct needs to do a few things: calculate total reduced mana and reduced mana reserved, # of mana used, # of health used (blood magic) based on the level & quality of the gem(s).



We also understand that effectively you are looking to optimize the "on_player_stats_changed" / "on_player_items_changed" events to minimize calculating (and caching) all the costs & stats along the way without placing extra load upon the client/server. If there is only a small percentage of players using (many) auras then a small QoL hit may be acceptable; i.e. a linear algorithm. But without further stats, we as a community, can't give feedback. :-/



Personally I'll be sad to see aura snapshotting going away, but from a game design point of view, I can understand the (original) intention. Thanks for the info Mark.We understand that QoL also effects server load; are you able to share any stats on the percentage of people that use 1, 2, 3+ auras please?I only suggested the bitset for auras as an extremely light-weight fast-cached read check to minimize CPU/network load; obviously, as you said the, actual Player struct needs to do a few things: calculate total reduced mana and reduced mana reserved, # of mana used, # of health used (blood magic) based on the level & quality of the gem(s).We also understand that effectively you are looking to optimize the "on_player_stats_changed" / "on_player_items_changed" events to minimize calculating (and caching) all the costs & stats along the way without placing extra load upon the client/server. If there is only a small percentage of players using (many) auras then a small QoL hit may be acceptable; i.e. a linear algorithm. But without further stats, we as a community, can't give feedback. :-/Personally I'll be sad to see aura snapshotting going away, but from a game design point of view, I can understand the (original) intention. Posted by

Michaelangel007

on on Quote this Post

Will this upcoming change prevent RedMana 'snapshotting'? Basically if you cast two auras with RedMana and then remove the gem, will it uncast them both?



Kinda interested in if that's considered snapshotting in the devs eyes and if this fix would nix it even if it isn't. BreakingHearts|ScionWatchTheWorldBurn|HanaHeartbreaker|SpinnyMacCrash



Seems we're living in interesting times. Posted by

SilentOppressor

on on Quote this Post

" SilentOppressor



Kinda interested in if that's considered snapshotting in the devs eyes and if this fix would nix it even if it isn't. Will this upcoming change prevent RedMana 'snapshotting'? Basically if you cast two auras with RedMana and then remove the gem, will it uncast them both?Kinda interested in if that's considered snapshotting in the devs eyes and if this fix would nix it even if it isn't.



That is a form of snapshotting, yes. If it will be included in the same patch as the fix for aura snapshotting, I'd say it's likely. It depends wholly on how they decide to detect changes, but it is almost certainly going to fit the criteria, and, in any case, will eventually be fixed as it is still seen as a bug. That is a form of snapshotting, yes. If it will be included in the same patch as the fix for aura snapshotting, I'd say it's likely. It depends wholly on how they decide to detect changes, but it is almost certainly going to fit the criteria, and, in any case, will eventually be fixed as it is still seen as a bug. Posted by

Xikorut

on on Quote this Post

" SilentOppressor Will this upcoming change prevent RedMana 'snapshotting'? Basically if you cast two auras with RedMana and then remove the gem, will it uncast them both? The auras will no longer have blood magic, so they'll no longer reserve mana.

Ideally, they'd switch to reserving mana, and fall off if they don't fit there because too much mana is already reserved. Actual behaviour may depend on the details of the solution, so they may just always fall off, to switch to mana and an arbitrary set of auras are removed (not necessarily those ones) until your mana reserves are back under 100% of mana (this is the default behaviour for overreserving). The auras will no longer have blood magic, so they'll no longer reserve mana.Ideally, they'd switch to reserving mana, and fall off if they don't fit there because too much mana is already reserved. Actual behaviour may depend on the details of the solution, so they may just always fall off, to switch to mana and an arbitrary set of auras are removed (not necessarily those ones) until your mana reserves are back under 100% of mana (this is the default behaviour for overreserving). Last edited by Mark_GGG on May 2, 2014, 3:22:44 AM Posted by

Mark_GGG

on Grinding Gear Games on Quote this Post