HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Weird aura flickering bug

08-14-2007, 07:30 AM#1
Kaz
I came across this and I don't know what to make of it. Every time a new unit is created or killed, the damage bonus of trueshot aura and wardrum aura (the only two I tested) will briefly disappear and reappear, on all units under the effect of these auras.

If this isn't new, I have no idea how I never noticed it before.

Attached is a test map. It has nothing except a stock PotM and a chat trigger to spawn stock footmen.
Attached Files
File type: w3mflickerbug.w3m (12.3 KB)
08-19-2007, 12:15 PM#2
Pyrogasm
Are you talking about the aura refresh rate?
08-19-2007, 06:04 PM#3
cohadar
I would call this a normal behavior.

Auras are not some operating system built in thing,
someone had to code their behavior also.

And if I remember well when you try to make your custom auras
(by adding and removing abilities to units around aura-bearer)

The only way to make sure that all works correctly is to iterate
through ALL units on the map.

That is the reason custom auras always lag like shit.

Now blizzard auras don't lag because they are optimized
(i.e. not written in JASS) but alas they flicker.

The flicker is caused by instantly adding and removing
an ability to the unit and it was done that way because it
makes the algorithm simpler. (instead of constant checking)
08-19-2007, 10:05 PM#4
DioD
there is no need to check units for aura 100 times per second, check every 1-3 seconds will work perfect, for hardcoded systems like custom regeneration\movement - 0.25-0.025 .
08-20-2007, 07:33 AM#5
cohadar
Quote:
Originally Posted by DioD
there is no need to check units for aura 100 times per second, check every 1-3 seconds will work perfect, for hardcoded systems like custom regeneration\movement - 0.25-0.025 .

Let me explain the algorithm a bit.
It does not matter if you check it only once per second.
Lets say there are 2 heroes on the map that cast same aura.

When a unit comes out of first heroes range we should remove the aura buff right?
But what if that same unit is in range of the second hero? Than we should keep the buff.
And what if auras are the same but have different levels?

In order to properly handle all this situations you have to iterate throught all units TWICE
(two-pass) algorithm would be kinda slow here so we simply use one-pass,
at the cost of flickering.

Check out the Web-spell in Submission section to see details of algorithm
(not the last version, but versions before)


Quote:
Originally Posted by Litany
Are you related to Toadcop?

Well in the sense that our ancestors originated from the same Mountain in Asia - yes.
08-20-2007, 07:50 AM#6
Kaz
Perhaps I should elaborate.

I'm not referring to the aura refresh rate. The damage bonus never flickers until a unit is created or killed, by trigger or by in-game means. The buff icon itself never flickers, only the damage bonus.

The damage bonus disappearing/reappearing is map wide. ALL units under the influence of these auras will briefly lose and regain the damage bonus, even if the unit created/killed is at the other end of the map, way out of range of the auras.

Further testing indicates that this seem to only happen with damage increasing auras. Devotion aura's bonus armor, for instance, does not flicker. It's also not limited to unit creation/death. Placing a structure with a peasant will cause the flicker. The structure's construction finishing will also cause the flicker, as will upgrades (any type).
08-20-2007, 09:07 AM#7
DioD
its UI only glitch, actual damage is static.

2 heros with same aura will negate effect of eath other, not overide.
08-20-2007, 09:31 AM#8
Anitarf
Quote:
Originally Posted by cohadar
The only way to make sure that all works correctly is to iterate through ALL units on the map.
Excuse me, but that's not how I do it, so it's not really the only way.

Not that this has anything to do with the discussion. Odd bug. A way to determine if it's only an interface bug or does it also affect gameplay would be to give the unit with the aura a very fast attack and then have a damage detection trigger that displays a message whenever the damage dealt by the unit is so low that it seems like the unit is not affected by the aura. Then order the unit to attack something and start spawning units somewhere.