Feb 28, 2011, 02:10 AM // 02:10
|
#101
|
Grotto Attendant
Join Date: May 2005
Location: in the midline
Profession: E/Mo
|
Quote:
Originally Posted by Cuilan
They don't stack at all and the ones you mention often aren't triggered from death, kick down, slowed attack speed, and poor choice of targets. Yes foes spam attacks and spells but your math is misleading.
|
What's:
http://www.gwpvx.com/Build:Team_-_FoW_Mesmer_Spike
http://www.gwpvx.com/Build:Team_-_Mesway
Mesmers stack... Illusion ones are iffy unless you're running heroes (so they don't stack the same hex).
|
|
|
Feb 28, 2011, 04:20 AM // 04:20
|
#102
|
Forge Runner
Join Date: Mar 2008
Profession: Me/
|
Quote:
Originally Posted by LifeInfusion
What's (this?)
|
Two links to PvX.
Quote:
Originally Posted by LifeInfusion
Mesmers stack... Illusion ones are iffy unless you're running heroes (so they don't stack the same hex).
|
Uh huh? Those hero bars aren't very great and many groups have multiples of other professions, too.
Last edited by Cuilan; Feb 28, 2011 at 04:25 AM // 04:25..
|
|
|
Feb 28, 2011, 05:03 AM // 05:03
|
#103
|
Desert Nomad
|
My guess for the code path for ele damage would be something like this:
cast spell
for(all active objects)
if object = enemy of caster
if object distance from target < x
call damage(object, damage, type)
in damage, we have some kind of line that says:
if caster status = intensity and type = elemental
cast spell again with correct parameters for intensity
remove intensity from caster
So yes, it is a crappy situation. Ideally you would check to only trigger the intensity damage on the targetted enemy, but for all we know you can't make that distinction when you are that far into the damage function and rewriting such a core function to the game could be time consuming and/or cause problems in innumerable other places. Keep in mind, we have a skeleton crew that almost certainly weren't the ones to write this code in the first place, and they don't want to spend 1 week figuring out how to rewrite it and another 2 weeks figuring out how to fix 10 obscure bugs that would pop up after they had done so.
As to the ordering of the enemies in the data structure, its probably something similar to a simple linked list that is added to whenever an enemy is created. Keep in mind, guild wars adds enemies on the fly as you explore an area, the order could very well not be consistent when you repeat tests.
Last edited by Kunder; Feb 28, 2011 at 05:12 AM // 05:12..
|
|
|
Feb 28, 2011, 06:54 AM // 06:54
|
#104
|
Grotto Attendant
|
Quote:
Originally Posted by Kunder
My guess for the code path for ele damage would be something like this:
cast spell
for(all active objects)
if object = enemy of caster
if object distance from target < x
call damage(object, damage, type)
in damage, we have some kind of line that says:
if caster status = intensity and type = elemental
cast spell again with correct parameters for intensity
remove intensity from caster
So yes, it is a crappy situation. Ideally you would check to only trigger the intensity damage on the targetted enemy, but for all we know you can't make that distinction when you are that far into the damage function and rewriting such a core function to the game could be time consuming and/or cause problems in innumerable other places. Keep in mind, we have a skeleton crew that almost certainly weren't the ones to write this code in the first place, and they don't want to spend 1 week figuring out how to rewrite it and another 2 weeks figuring out how to fix 10 obscure bugs that would pop up after they had done so.
As to the ordering of the enemies in the data structure, its probably something similar to a simple linked list that is added to whenever an enemy is created. Keep in mind, guild wars adds enemies on the fly as you explore an area, the order could very well not be consistent when you repeat tests.
|
That's pretty much my hypothesis. Not sure what language the game is in, but I vaguely recall hearing C++ mentioned at one time, which would mean your linked-list-like structure is probably a vector. I'd agree that it's probably getting populated in creation order. And monsters within mobs may well spawn east-to-west (or whatever) mirroring the order some dev put them in the database. Also, don't overlook that there's another list we could be iterating down. I'd hazard a guess that tab/shift-tab cycling is supported by a vector of pointers to critters. (And monster AI also needs a proximity ordered list for target selection too.)
|
|
|
Feb 28, 2011, 07:47 AM // 07:47
|
#105
|
Forge Runner
Join Date: May 2008
Location: East Anglia, UK
Guild: Order of [Thay]
Profession: N/
|
Why hasn't this been an issue with any other AoE attack/spell then?
|
|
|
Feb 28, 2011, 10:48 AM // 10:48
|
#106
|
Tea Powered
Join Date: May 2008
Location: UK
Profession: N/
|
Because it's not supposed to be.
It works like this;
You cast an AoE spell. The game checks every enemy to see if it's in range. If it is, it's hit for damage.
Intensity only activates on one of these damage triggers and it's probably going to be the first one (or whatever the game regards as the first one; that is the first enemy it checks that happens to be in range) and this is the source of complication.
Quote:
Originally Posted by Kunder
As to the ordering of the enemies in the data structure, its probably something similar to a simple linked list that is added to whenever an enemy is created. Keep in mind, guild wars adds enemies on the fly as you explore an area, the order could very well not be consistent when you repeat tests.
|
You can kill off arbitrary targets in the Isle of the Nameless and have the same results. That said, I don't know if a new entity is created or if it's the same one. If you had the patience you could try testing in the Zaishen Menagerie with spawned pets, but they're hard to work with.
Quote:
Originally Posted by Kunder
So yes, it is a crappy situation. Ideally you would check to only trigger the intensity damage on the targetted enemy, but for all we know you can't make that distinction when you are that far into the damage function and rewriting such a core function to the game could be time consuming and/or cause problems in innumerable other places.
|
Intensity has been designed to work with every type of elemental damage spell, including non-targeted ones (DoTAoE, PBAoE). If it were altered to affect only targeted ones then it may be possible to give it a more sane outcome (strangely, Rodgort's Invocation behaves more like DoTAoE spell than a standard targeted spell, so it may not work for that; you need a target to begin casting but after that, it doesn't matter).
|
|
|
Feb 28, 2011, 02:07 PM // 14:07
|
#107
|
Desert Nomad
|
Quote:
Originally Posted by HigherMinion
Why hasn't this been an issue with any other AoE attack/spell then?
|
The same thing happens to Splinter Weapon + Whirlwind attack actually, you just don't notice it because its 5x as many numbers in 1/2 the area
Quote:
Intensity has been designed to work with every type of elemental damage spell, including non-targeted ones (DoTAoE, PBAoE). If it were altered to affect only targeted ones then it may be possible to give it a more sane outcome (strangely, Rodgort's Invocation behaves more like DoTAoE spell than a standard targeted spell, so it may not work for that; you need a target to begin casting but after that, it doesn't matter).
|
Isn't that the same for most/all ele AoE spells?
Last edited by Kunder; Feb 28, 2011 at 02:09 PM // 14:09..
|
|
|
Feb 28, 2011, 03:22 PM // 15:22
|
#108
|
Tea Powered
Join Date: May 2008
Location: UK
Profession: N/
|
Quote:
Originally Posted by Kunder
Isn't that the same for most/all ele AoE spells?
|
The only single strike one I've noticed not cancel casting when the target dies is Rodgort's. I'd need to check with the others but I can't be bothered and am not currently in a position to do so.
Edit:
Quote:
Originally Posted by Kunder
The same thing happens to Splinter Weapon + Whirlwind attack actually, you just don't notice it because its 5x as many numbers in 1/2 the area
|
How about scythe triggers? That would be easier to test.
Last edited by Xenomortis; Feb 28, 2011 at 03:56 PM // 15:56..
|
|
|
Feb 28, 2011, 07:37 PM // 19:37
|
#109
|
Desert Nomad
Join Date: May 2006
Profession: N/
|
Did some tests.
Due to the way the same understands positioning (I posted a pic on the previous page), Intensity is originating from the target closest to the southwest that was effective by RI, i.e. coordinate space (0,0,0) because we are in what is known as "positive space".
It is doing this because Rodgort's Invocation doesn't have a target, it has a location based on a target at the time of cast. Hence, it does not cancel when the target dies. So, the game has to pick a target. Guildwars just so happens to array it's targets via a bottom left to top right pattern. The first target "hit" is the bottom left, or the origin of Intensity.
From what I read, all of you already understand this. What are we trying to test now?
|
|
|
Feb 28, 2011, 07:43 PM // 19:43
|
#110
|
Tea Powered
Join Date: May 2008
Location: UK
Profession: N/
|
Quote:
Originally Posted by Kaida the Heartless
Guildwars just so happens to array it's targets via a bottom left to top right pattern.
|
This bit. Testing against static targets in the Isle of Nameless doesn't really tell us much. Is the ordering fixed after creation? Is the ordering continually updated by position? What happens if a new entity is created (e.g. a minion or spirit)?
|
|
|
Mar 01, 2011, 08:07 PM // 20:07
|
#111
|
Desert Nomad
Join Date: May 2006
Profession: N/
|
It should be created every time the spell is cast, essentially throwing all "in range" targets into the array. You can see if they are "in range" by my pic on the other page. That information always exists because the game exists in (positive) 3d space, requiring no array, merely a call to the enemies location when the spell is cast. This would be the simplest and most intuitive way. If anything I'll call up one of my game dev. buddies and see if he knows anything.
|
|
|
Mar 01, 2011, 09:20 PM // 21:20
|
#112
|
Tea Powered
Join Date: May 2008
Location: UK
Profession: N/
|
It must check which enemies are in rage, correct? It must perform this check for every enemy in the instance whenever the spell is cast.
The computer can only check which one thing at a time, so in what order does it check the enemies?
|
|
|
Mar 01, 2011, 09:36 PM // 21:36
|
#113
|
Desert Nomad
|
Quote:
Originally Posted by Xenomortis
How about scythe triggers? That would be easier to test.
|
Harder, I think, and I'm not sure it would even happen. Since scythes ALWAYS hit the target you aim at, +2 randomly chosen targets in front of you, its possible that it would always hit your targetted enemy first and then choose the other enemies hit after that. Furthermore, scythes present the problem of enemies being so close together that it would be much harder to see who splinter weapon actually triggered on. With Whirlwind's wide area of attack, its a bit easier to see when a caster just out of range takes 1 or 2 hits of splinter weapon.
Quote:
Originally Posted by Kaida the Heartless
It should be created every time the spell is cast, essentially throwing all "in range" targets into the array. You can see if they are "in range" by my pic on the other page. That information always exists because the game exists in (positive) 3d space, requiring no array, merely a call to the enemies location when the spell is cast. This would be the simplest and most intuitive way. If anything I'll call up one of my game dev. buddies and see if he knows anything.
|
Keep in mind that this isn't an integer space, an 'array' of locations would require near-infinite space.
Last edited by Kunder; Mar 01, 2011 at 09:38 PM // 21:38..
|
|
|
Mar 01, 2011, 10:00 PM // 22:00
|
#114
|
Tea Powered
Join Date: May 2008
Location: UK
Profession: N/
|
Quote:
Originally Posted by Kunder
Harder, I think, and I'm not sure it would even happen. Since scythes ALWAYS hit the target you aim at, +2 randomly chosen targets in front of you, its possible that it would always hit your targetted enemy first and then choose the other enemies hit after that. Furthermore, scythes present the problem of enemies being so close together that it would be much harder to see who splinter weapon actually triggered on. With Whirlwind's wide area of attack, its a bit easier to see when a caster just out of range takes 1 or 2 hits of splinter weapon.
|
I was thinking more just which extra targets the scythe hits. Yeah it might be difficult but it's something that could be done in a Scrim match or in the Zaishen Menagerie and it's clear which targets get hit.
Quote:
Originally Posted by Kunder
Keep in mind that this isn't an integer space, an 'array' of locations would require near-infinite space.
|
It's a computer; there should exist an injection between it and {ℕ×ℕ} and there's definitely a bijection between between ℕ^2 and ℕ.
Ok, I'll stop now.
|
|
|
Mar 02, 2011, 12:40 AM // 00:40
|
#115
|
Desert Nomad
Join Date: May 2006
Profession: N/
|
I'm going to go ahead and guess they went with the "visible" enemies, as the "invisible (culled)" ones are too far away to count for anything. So, every time a spell it cast, it checks the range of all visible enemies (from bottom left to top right of the map) from the origin of the spell. This is my best guess as there are a bazillion ways to do this while having nearly the same explanation. Honestly, it was totally up to their Game Dev. team and how their brains work, since they coded it.
The array does not require infinite space. Values are truncated, usually to no more than the thousandth place.
The bottom line is simply that the spell (Intensity) is procing off the bottom left most target when one isn't specified for the intensified spell. It's just how positive space works. They would have to change the effect to pick the target closest to the center of the spell instead of defaulting to the formerly mentioned. That's all.
Last edited by Kaida the Heartless; Mar 02, 2011 at 12:51 AM // 00:51..
|
|
|
Mar 02, 2011, 02:58 AM // 02:58
|
#116
|
Desert Nomad
|
Quote:
Originally Posted by Kaida the Heartless
I'm going to go ahead and guess they went with the "visible" enemies, as the "invisible (culled)" ones are too far away to count for anything. So, every time a spell it cast, it checks the range of all visible enemies (from bottom left to top right of the map) from the origin of the spell. This is my best guess as there are a bazillion ways to do this while having nearly the same explanation. Honestly, it was totally up to their Game Dev. team and how their brains work, since they coded it.
The array does not require infinite space. Values are truncated, usually to no more than the thousandth place.
The bottom line is simply that the spell (Intensity) is procing off the bottom left most target when one isn't specified for the intensified spell. It's just how positive space works. They would have to change the effect to pick the target closest to the center of the spell instead of defaulting to the formerly mentioned. That's all.
|
You realize how many array space that requires to enumerate ever position? Density goes up with the square of the units per side. Just 10,000 lengths within the visible space (a paltry number, smooth movement would require orders of magnitude greater) would require 100 MB of space at 1 byte per array space. This is incredibly inefficient considering that maybe 150 creatures at max would appear, which at 1 byte each would mean that 99.99985% of your array is just empty space, which is a ludicris waste. Obviously Anet's servers don't require 100 MB of memory per instance, the load on their servers would be tremendous.
The 'grayed' names of party members and non-processing of creatures beyond map range is certainly a server-time saving device. Otherwise you would have to check all 300 some enemies in a map for being in a spell radius, with this you have to check 20-40 in most cases. Also saves on bandwidth for updating clients about their actions and CPU time for processing their AI.
I have no idea what you mean when you say "positive space". I've never heard such a term before and online search only turns up references to art. I can tell you that such terms as 'bottom left' have no meaning when you can rotate the camera.
Quote:
I was thinking more just which extra targets the scythe hits. Yeah it might be difficult but it's something that could be done in a Scrim match or in the Zaishen Menagerie and it's clear which targets get hit.
|
Ahh, I see. That would work. Still, even if you did know this it doesn't provide useful information for real gameplay, since you won't know what order the enemies are enumerated when you enter an area.
Last edited by Kunder; Mar 02, 2011 at 03:03 AM // 03:03..
|
|
|
Mar 02, 2011, 09:29 AM // 09:29
|
#117
|
Desert Nomad
Join Date: May 2006
Profession: N/
|
You do realize the array isn't for position, right? It's for the targets that are in range, which is calculated before hand. And these are my best guesses. I did more of the graphics side of games/movies while only touching, briefly, on the game development side. Besides, nothing says it has to be an array if I remember correctly (linked lists, matrices?). The bottom line is, they are getting grouped (bottom left to top right); we will never know exactly how it is done unless you want to ninja your way into Anet HQ and steal some source code.
Also, I referred to this post of mine, which will explain positive space:
http://www.guildwarsguru.com/forum/s...8&postcount=98
Quote:
Originally Posted by Kunder
Ahh, I see. That would work. Still, even if you did know this it doesn't provide useful information for real gameplay, since you won't know what order the enemies are enumerated when you enter an area.
|
True, however, the order in which enemies spawn and the order in which they will proc shouldn't have any correlation to each other. They *should* always proc from the bottom left.
Last edited by Kaida the Heartless; Mar 02, 2011 at 09:32 AM // 09:32..
|
|
|
Mar 06, 2011, 01:51 PM // 13:51
|
#118
|
Desert Nomad
|
So, I found one semi-interesting way to exploit Intensity. Props to the first who figures out how. No, its not at all useful in any fashion, else I wouldn't make a game out of it. . In theory, this could be used to make EVSS w/ the elemental damage trick proc for about 1.3k armor-ignoring AoE damage if used with BUH, and would wipe every non-boss mob in the game.
Would it be weird to say that inspiration for how this is done came to me in a dream?
EDIT: EVSS gives 1,117 AoE armor ignoring damage. BUH would push it to 1,485, Vengeance to 1,396. If you wanted to sacrifice even more % chance of working for increased damage, you could push up the figure with BUH to approximately 1828 AoE damage if my calculations are correct.
Quote:
Originally Posted by Kaida the Heartless
You do realize the array isn't for position, right? It's for the targets that are in range, which is calculated before hand. And these are my best guesses. I did more of the graphics side of games/movies while only touching, briefly, on the game development side. Besides, nothing says it has to be an array if I remember correctly (linked lists, matrices?). The bottom line is, they are getting grouped (bottom left to top right); we will never know exactly how it is done unless you want to ninja your way into Anet HQ and steal some source code.
Also, I referred to this post of mine, which will explain positive space:
http://www.guildwarsguru.com/forum/s...8&postcount=98
|
I just don't see how its possible to actually code something in that fashion. Completely rearrage the array constantly while things move about (which is what I think what you are describing would require)? That just won't do.
Last edited by Kunder; Mar 06, 2011 at 06:24 PM // 18:24..
|
|
|
Mar 08, 2011, 12:43 AM // 00:43
|
#119
|
Tea Powered
Join Date: May 2008
Location: UK
Profession: N/
|
Use a low level bone minion and Verata's Aura on the hero (hence Mo/N). Hopefully the masterless minion will be positioned so it's picked for the Intensity damage which should be high, since the armour of the minion will be very low, the damage from Intensity should be very high. Stack a load of +atts to get 20, just to be sure and EBSoH.
I've been trying to repeat this, but the minion refuses to cooperate. Could alternatively use Invoke Lightning or some single target spell for the initial damage trigger.
Also, pretty sure the damage from EVSS cannot be converted to elemental damage to trigger Intensity.
Edit: Also possibly Vengeance - I haven't crunched any numbers to see if you used that or not.
Last edited by Xenomortis; Mar 08, 2011 at 12:49 AM // 00:49..
|
|
|
Mar 08, 2011, 12:45 AM // 00:45
|
#120
|
Furnace Stoker
Join Date: Apr 2006
Guild: Amazon Basin [AB]
Profession: Mo/Me
|
Quote:
Originally Posted by Xenomortis
Also, pretty sure the damage from EVSS cannot be converted to elemental damage to trigger Intensity.
|
A lot of people have done this with stone striker, although it may not work for all conversion skills.
|
|
|
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
HTML code is Off
|
|
|
All times are GMT. The time now is 06:46 PM // 18:46.
|