open All Channels
seplocked Test Server Feedback
blankseplocked Dev Question: How was 0m range turret tracking "fixed" in 1.5.1?
 
This thread is older than 90 days and has been locked due to inactivity.


 
Author Topic

Manfred Rickenbocker
Pan Galactic Gargle Blasters
Important Internet Spaceship League
Posted - 2009.09.11 15:57:00 - [1]
 

Simple request, how did you change the tracking formula to account for this change in the 1.5.1 Apocrypha patch:
"It is now possible to shoot objects that are 0 meters away with turrets, and hit them (this is still subject to tracking.)"

The reason I ask is because the reason you cannot shoot anything at 0km in the first place is caused by a divide-by-zero and a limit-as-x-goes-to-infinity. I will explain to those who dont understand the tracking formula. This is the current tracking formula as it stands:
ChanceToHit = 0.5 ^ ((((Transversal speed/(Range to target * Turret Tracking))*(Turret Signature Resolution / Target Signature Radius))^2) + ((max(0, Range to target - Turret Optimal Range))/Turret Falloff)^2)

To snip out the good part:
(Transversal Speed / (Range to target * Turret Tracking))

For a given transversal and tracking, as range goes to 0, you get the divide by zero.
Given transversal and range, as range goes to 0, the tracking needed to overcome becomes infinite.

So my question: How was the tracking formula changed to fix this? If tracking still applies to hitting targets at 0km, that means the whole formula had to be re-ordered in such a way to not incur the divide-by-zero and to not entirely depend on tracking to prevent the infinite tracking necessity.

Myra2007
Millstone Industries
Posted - 2009.09.11 16:15:00 - [2]
 

Someone said somewhere that they now use the center of a model to determine distance rather than the boundaries. And that has the effect that the distance parameter in that calculation is always non-zero (even if near-zero).

That was not a dev post though but it sounded convincing. :)

Mioelnir
Minmatar
Cataclysm Enterprises
Ev0ke
Posted - 2009.09.11 18:16:00 - [3]
 

http://www.eve-search.com/thread/1172984/page/3#71

Here is a link to Tuxfords explanation.

The formula didn't change, but instead of using the distance between the edges of the collision balls (which can become 0), they now use the distance between the centers of these balls, which can't become 0 because one would get bumped before.

Manfred Rickenbocker
Pan Galactic Gargle Blasters
Important Internet Spaceship League
Posted - 2009.09.11 19:49:00 - [4]
 

So instead of fixing the tracking formula, they just changed the numbers that are used? Bleh, what a waste. This makes turret tracking more problematic as you now need to compensate for actual optimal range which is less than the ships reported distance to the object, a.k.a. real optimal = optimal minus ship bubble.
You'd think this would be a dumb idea because ship guns are actually located on the outside of a ships hull rather than at dead center (realistically) and ships with short falloff now need to readjust their distance (which can be up to 400m based on radius).

Roemy Schneider
Vanishing Point.
Posted - 2009.09.11 20:41:00 - [5]
 

errrr does that mean a dread might miss a titan because it's dozens of km further away from the _center_ of it than my overview tells me?

ElfeGER
Deep Core Mining Inc.
Posted - 2009.09.11 21:17:00 - [6]
 

that can probably tested on a gallente player build outpost as the 0m zone is huge

Liang Nuren
Posted - 2009.09.12 01:27:00 - [7]
 

Originally by: Roemy Schneider
errrr does that mean a dread might miss a titan because it's dozens of km further away from the _center_ of it than my overview tells me?


Based on my understanding of what Tux said... yes. Talk about unintended consequences! Laughing

-Liang

Artassaut
Minmatar
Shadow Striders
Property Management Solutions
Posted - 2009.09.12 03:05:00 - [8]
 

Someone needs to tell me why they didn't do:

IF Range = 0 then
Range = 1

Aranis Nax
Minmatar
Minmatar United Freedom Front
The 11th Hour
Posted - 2009.09.12 08:14:00 - [9]
 

Edited by: Aranis Nax on 12/09/2009 08:15:12
If I understand tux' explanation right. formula would look similar to this: ChanceToHit = 0.5 ^ ((((Transversal speed/(Range to center of target * Turret Tracking))*(Turret Signature Resolution / Target Signature Radius))^2) + ((max(0, Range to target sphere - Turret Optimal Range))/Turret Falloff)^2)

What it would imply is that the second part of the equation would become 0(negative value < 0) when you are at the edge of the sphere and only tracking would matter in hit chance when you are at 0m from target. So according to the formula we know a dread sitting at 0m from a titan shouldn't have a problem hitting him assuming the titan isn't moving "too fast"(aka sitting absolutely still). Same with a station even if undock radius(the area where you are at 0m from station) is superduper ungodly huge like on certain caldari stations(jita 4-4 anyone?)

achoura
Posted - 2009.09.12 19:48:00 - [10]
 

Originally by: Artassaut
Someone needs to tell me why they didn't do:

IF Range = 0 then
Range = 1


I introduced someone to eve last week, now they've come to me complaining that their 8km lasers are useless unless they close the gaps on their targets to 4-6k. The overview, it does nothing! (like that's new :P)

Mioelnir
Minmatar
Cataclysm Enterprises
Ev0ke
Posted - 2009.09.13 00:58:00 - [11]
 

Originally by: Artassaut
Someone needs to tell me why they didn't do:

IF Range = 0 then
Range = 1


Because conditional branching is horribly inefficient in terms of cpu cycles.

Before I read Tux's explanation I for myself thought they fixed it by adding 1m to all distances. Additions are very inexpensive operations, not-negative number + 1 is sure to be unequal to 0, and it doesn't really matter if your opponent is 10'363m or 10'364m away from you.

Manfred Rickenbocker
Pan Galactic Gargle Blasters
Important Internet Spaceship League
Posted - 2009.09.14 14:16:00 - [12]
 

Edited by: Manfred Rickenbocker on 14/09/2009 14:19:23
Originally by: Mioelnir
Originally by: Artassaut
Someone needs to tell me why they didn't do:

IF Range = 0 then
Range = 1


Because conditional branching is horribly inefficient in terms of cpu cycles.

Before I read Tux's explanation I for myself thought they fixed it by adding 1m to all distances. Additions are very inexpensive operations, not-negative number + 1 is sure to be unequal to 0, and it doesn't really matter if your opponent is 10'363m or 10'364m away from you.


Branching is expensive, but they already have a Max(X,Y) function in there. With most modern predictive branching implementations the cost is minimal unless you need clear entire pipelines because of a failed branch. Furthermore, even if they did set 0m = 1m, you are still going to miss because of how poorly the tracking formula scales at small distances.

Anyway, I really think they need to do a complete overhaul of the entire tracking system. It seems to me that if a ship got closer, it would be easier to hit because it is presenting a bigger target. Furthermore, as things got further away they would be easier to hit because they are easier to track. Falloff should only factor into the equation as a damage modifier AFTER a successful hit is confirmed.


CCP Tuxford

Posted - 2009.09.14 16:46:00 - [13]
 

The formula itself was NOT changed.

ChanceToHit = 0.5 ^ ((((Transversal speed/(Range to target * Turret Tracking))*(Turret Signature Resolution / Target Signature Radius))^2) + ((max(0, Range to target - Turret Optimal Range))/Turret Falloff)^2)

I'm assuming this this formula is correct can't be bothered to check but it has all the characteristics to be relevant in this discussion. We are and have always used two distances so the formula becomes

ChanceToHit = 0.5 ^ ((((Transversal speed/(centerDist * Turret Tracking))*(Turret Signature Resolution / Target Signature Radius))^2) + ((max(0, shortDist - Turret Optimal Range))/Turret Falloff)^2)

  • where centerDist is the distance between the center of the two balls

  • where shortDist is the distance between center - radiuses of the balls but never less than 0


  • This isn't new but it has probably been unknown to you guys.

    As you can see we have a singularity if centerDist is zero but not if shortDist is zero. We were however checking if shortDist was zero and returning zero if it was but really should have been checking for centerDist. All we did to change centerDist to shortDist.

    Again, formula was not changed only an error in a zero value check.

    Neriel Odershank
    Posted - 2009.09.14 17:34:00 - [14]
     

    Originally by: CCP Tuxford


    Again, formula was not changed only an error in a zero value check.


    Serius question, i'm curious and not trolling: why did it take 6 years?

    Roemy Schneider
    Vanishing Point.
    Posted - 2009.09.14 18:50:00 - [15]
     

    Edited by: Roemy Schneider on 14/09/2009 18:56:50
    Quote:
    All we did to change centerDist to shortDist.


    ah, so you've made it worse or do we have "negative" tracking now?

    cause centerDist can't become zero in this environment, edge2edge aka shortDist can. we can invade spheres though (scimitar in phoon) so we can go negative qua sphere edges?

    skye orionis
    Posted - 2009.09.14 18:56:00 - [16]
     

    Edited by: skye orionis on 14/09/2009 19:00:42
    Edited by: skye orionis on 14/09/2009 18:58:14
    So, unless the orbit distance has been changed to be based upon the centre of the target people orbiting at optimal will in fact be shooting inside falloff.

    Ok Scratch that, the center to center distance is only used in the tracking section, which in fact makes it a whole lot easier to hit large objects at close quarters since the angular valocity is reduced significantly, so this is something of a boost to short range weapons if I read it rightly.

    ElfeGER
    Deep Core Mining Inc.
    Posted - 2009.09.14 18:59:00 - [17]
     

    Originally by: Neriel Odershank
    Originally by: CCP Tuxford


    Again, formula was not changed only an error in a zero value check.


    Serius question, i'm curious and not trolling: why did it take 6 years?


    I guess the number of bug reports on this was very low?

    Manfred Rickenbocker
    Pan Galactic Gargle Blasters
    Important Internet Spaceship League
    Posted - 2009.09.15 00:23:00 - [18]
     

    Thank you Tuxford for answering my question.

    Originally by: ElfeGER
    Originally by: Neriel Odershank
    Originally by: CCP Tuxford


    Again, formula was not changed only an error in a zero value check.


    Serius question, i'm curious and not trolling: why did it take 6 years?


    I guess the number of bug reports on this was very low?


    I know I bug reported it a few times but that was years ago and gave up. It becomes painfully apparent when you shoot large stationary objects (structures and such) in space because it is extremely easy to get under 0m.

    My only remaining question is what determines the difference between short-distance and center-distance? Do we go based on the sig radius of a ship?

    Verlokiraptor
    Einherjar Rising
    Cry Havoc.
    Posted - 2009.09.15 06:09:00 - [19]
     

    Edited by: Verlokiraptor on 15/09/2009 06:09:23
    Originally by: Manfred Rickenbocker
    My only remaining question is what determines the difference between short-distance and center-distance? Do we go based on the sig radius of a ship?

    The difference should be the target radius PLUS your ship radius, I believe. If sig radius is equivalent to physical radius, then yes, but I doubt that's the case or bumping things with a MWD would be absurd... 2 ships hugging each other could turn MWDs on and do some crazy bumping explosion. Base sig radius, maybe.

    CCP Tuxford

    Posted - 2009.09.15 09:06:00 - [20]
     

    Originally by: Neriel Odershank


    Serius question, i'm curious and not trolling: why did it take 6 years?


    This is a pretty low level change so we had to find someone with sufficient programming knowledge to change it but stupid enough not to realize the implication, I guess I fulfilled the requirement Razz

    In all seriousness than I can't answer for other programmers that had this on their list but for me it was an assumption. I assumed that we were only using one distance and therefor assumed that I'd either had to change it to always hit or do some funky magic like add 1m to all the distances which I didn't think was particularly elegant implimentation. Bottomline I didn't take a close enough look because I thought I understood the problem completely but didn't have an answer I liked.

    N Ano
    Caldari
    Templars of Space
    Posted - 2009.09.15 09:53:00 - [21]
     

    Originally by: CCP Tuxford
    Originally by: Neriel Odershank


    Serius question, i'm curious and not trolling: why did it take 6 years?


    This is a pretty low level change so we had to find someone with sufficient programming knowledge to change it but stupid enough not to realize the implication, I guess I fulfilled the requirement Razz

    In all seriousness than I can't answer for other programmers that had this on their list but for me it was an assumption. I assumed that we were only using one distance and therefor assumed that I'd either had to change it to always hit or do some funky magic like add 1m to all the distances which I didn't think was particularly elegant implimentation. Bottomline I didn't take a close enough look because I thought I understood the problem completely but didn't have an answer I liked.


    Oh my god!!LaughingLaughingLaughing

    Squizz Caphinator
    Woopatang
    Posted - 2009.09.16 03:26:00 - [22]
     

    Originally by: CCP Tuxford
    Originally by: Neriel Odershank


    Serius question, i'm curious and not trolling: why did it take 6 years?


    This is a pretty low level change so we had to find someone with sufficient programming knowledge to change it but stupid enough not to realize the implication, I guess I fulfilled the requirement Razz

    In all seriousness than I can't answer for other programmers that had this on their list but for me it was an assumption. I assumed that we were only using one distance and therefor assumed that I'd either had to change it to always hit or do some funky magic like add 1m to all the distances which I didn't think was particularly elegant implimentation. Bottomline I didn't take a close enough look because I thought I understood the problem completely but didn't have an answer I liked.


    The sign of a true programmer is over thinking the problem, and then realizing the answer is quite simple.

    Props to you mate.


     

    This thread is older than 90 days and has been locked due to inactivity.


     


    The new forums are live

    Please adjust your bookmarks to https://forums.eveonline.com

    These forums are archived and read-only