pyfa-org / Pyfa

Python fitting assistant, cross-platform fitting tool for EVE Online
GNU General Public License v3.0
1.61k stars 408 forks source link

Feature request: mwd/cloak align time (math inc.) #889

Open msoltyspl opened 7 years ago

msoltyspl commented 7 years ago

In situation where the ship has fitted both cloaking device and microwarpdrive, show the time required to reach non-mwd/non-cloak align speed under cloak+mwd. For example + math:

v0 = max speed m0 = mass

m1 = mass when mwd is active v1 = max speed when mwd + cloak is activated v2 = as above but overheated (it's quite interesting, for DSTs in particular due to their bonus)

We look for x that 0.75*v0 = x*v, thus x = 0.75*v0/v - where v is either v1 or v2. Substituting into align time solution:

t = -ln(1 - 0.75*v0/v)*agility*m1/1000000

Show such t for both v1 and v2 (and possibly with extra effect - red color, if it's longer than effective mwd cycle time).

Ebag333 commented 7 years ago

the problem is that the MWD overrides the cloak. for the time that it is on, you don't seem to have the cloaking penalty.

it's super hard to simulate something dynamic over time with a single static number.

also, where are you getting the formula from? I haven't looked into align time at all, so just curious.

msoltyspl commented 7 years ago

Not sure what you mean in the first sentence. You can do single mwd cycle while being under cloak, providing you do the command within first 2s. or so after cloak activation. That's the essence of mwd/cloak trick (or any other tricks involving mwd, similarly to faster align times with redcycling it).

There is nothing to simulate here - just output the t which shows time required to reach 0.75*v0 - where v0 is nominal ship's speed.

As for align time, it's a solution to first order differential equation (and the final form - though often presented a bit differently - can be found in a few eve related places (e.g. http://wiki.eve-id.net/Equations)). To elaborate a bit:

v = Vmax*(1 - e^(-t/(M*I))) (where M is mass in tons, to avoid irritating 1000000 part)

ITOW - v is the speed the ship will have after t seconds passes. If instead we want to calculate t required to reach speed v, we get -ln(1 - v/Vmax)*M*I . For align times we're interested in v = 0.75*v0

Anyway, as far as presenting it in pyfa goes, I'd just show this under align time - e.g. with title 'relative align time'. If M is mass in tons, then:

align time itself shows now: t = -ln(0.25)*agility*M0 relative aling time would show: t = -ln(1 - 0.75*V0max/Vmax)*agility*M (with Vmax and M being new adjusted values as per mwd/ab/cloak/anything else usage).

mumbleskates commented 6 years ago

This is useless. When you MWD+cloak to align, one of two things will happen:

  1. The ship will reach its basic align speed while MWD+cloaked before the cycle ends.
  2. The ship cannot reach its basic align speed in a single MWD cycle while cloaked.

If (1), decloaking any time before the MWD cycle is over will not allow you to warp, as the MWD is still on and increasing your max speed; waiting once the cycle is up you will only decelerate as you are still cloaked. Ergo, the only time you would want to actually perform the warp in this scenario is exactly when the MWD turns off at 10 seconds (or AB at some other time, if you're very strange).

If (2), a hard number won't help because you will be decloaking at some time of your choice at or very slightly before the 10 seconds are up in hopes of reaching your align speed target with a shorter amount of time decloaked. Any hard numbers here will be pretty pithy as the realities of timing modules perfectly in the actual game are largely up to server tick cadence, network factors, and other dragons. You are far better off just practicing somewhere safe and measuring your average performance with a stopwatch.

This is a thing you can do in the game, but it's not useful enough to merit actual UI space. If you did this you would also have to do black ops cloaked align time, which is actually much simpler and more applicable to useful math (you shouldn't do either of these).