Why can't I add shields to my Cobra? It tells me it's too heavy?

Status
Thread Closed: Not open for further replies.
That's a 1s delay from any damage, so as long as there's no continuous 1s period in which the ship takes no damage (which there shouldn't be in testing), the shield will not charge. In other words you can keep a shield from recharging by continuously damaging it (at least while the shields are online).
Last I checked, SYS capacitor depleted to regen the shields even when still under fire.
 
Can you please clarify if missiles are affected by the damage modifier as in terms of raw stats a C2 launcher does exactly the same amount of damage as a C1 launcher. So in other words would putting a C1 launcher in a C2 hard point result in a loss of damage vs a Cobra like target that takes 100% damage from a C2 weapon.
 
Game play reasons. It ensures that it's always better to fit the largest weapons you can if you want to fight equal or larger ships effectively rather than just loading up on as many small and cheap weapons as you possibly could. Now you have to choose between wanting to target smaller ships and taking smaller weapons that will fire faster and track quicker or fighting larger ships and dealing with weapons that fire slower but do appropriate damage.

No, that not only doesn't make sense, but nobody knows about it either. You're making smaller ships arbitrarily do less damage against larger ships when they need to be able to do at least equal damage in order to effectively fight them. Not only is this logic messed up, but the only way a player would know about this hidden penalty is if they think about it and come scouring the forum.
 
Reading this im amazed at how much thought you guys put in here. Information is always great.

Ill be honest taking a very 'this game is new and shiny' aproach to the elite franchise i always thought the asps shields were lower as the description says its a civilian version of the ship. Id expect a military vehicle in any world to have more protection than a civ one. Just makes sense from a non numbers point of view.
 
No, that not only doesn't make sense, but nobody knows about it either. You're making smaller ships arbitrarily do less damage against larger ships when they need to be able to do at least equal damage in order to effectively fight them. Not only is this logic messed up, but the only way a player would know about this hidden penalty is if they think about it and come scouring the forum.

Why should​ a smaller ship be able to effectively fight a larger one?
 
Hi Mike *clicks heels together three times*

Any chance the display changes to outfitting will make it into 1.3? Transparency is a good thing... except with Mankini's.
 
Now that the 1.4 Beta is live with the standard 90% outfitting discount, I took the opportunity to test actual shield strengths for various modules on various ships, in order to confirm the formula that was provided/confirmed by [FD] Mike Evans earlier in this thread.

And as it happens, that formula is not quite correct.

To explain the problem, let me first re-state the formula that was developed in this thread (and subsequently built in to tools such as edshipyard.com and coriolis.io). At each step, I'll work through a few examples to illustrate how it (supposedly) works.
  • Each ship has baseline hull mass and shield strength values.
    The Asp's base mass is 280 and its base shield strength is 140.
    The mass is shown directly in the in-game shipyard, so we can be sure those figures are correct. The base shield strength is no longer shown directly, but back in EDv1.0 it was also shown in the in-game shipyard, and so far as I know (except for the Python) those values have never changed since. What has changed is the in-game shipyard, which no longer shows the base shield strength, but instead now shows the effective shield strength for a ship with its current outfitting (or, for ships you don't own yet, its original/default outfitting). This feature is what allowed me to test and audit the formula: change the generator, switch to a different ship, and check the new shield strength under "Stored Ships".
  • Each shield generator class has three values which form an "optimal mass curve".
    Class 3 shields use the curve 83 - 165 - 413.
    Class 5 shields use the curve 203 - 405 - 1013.

    The last two figures are shown in the in-game outfitter as the shield generator's "optimal mass" and "maximum mass", and [FD] Mike Evans was kind enough to provide us with the "minimum mass" figures for all shield classes earlier in this thread. So far the maximum is always 2.5x the optimal, and the minimum is always 0.5x optimal, but in theory there could someday be special (perhaps Power-specific) generators with differently shaped mass curves.
  • Each shield generator rating has three values which form a "strength multiplier curve".
    Rating E shields use the curve 0.3 - 0.8 - 1.3.
    Rating C shields use the curve 0.5 - 1.0 - 1.5.
    Rating A shields use the curve 0.7 - 1.2 - 1.7.

    All of these values are hidden, but [FD] Mike Evans offered some generous hints, and later confirmed the values that were guessed. Originally this curve also always had the same shape with just a flat +0.1 per rating above E, but the special "Prismatic" generators effectively have all values multiplied by 1.2 by achieve the 20% strength bonus. There may also someday be other generators with differently shaped multiplier curves.
  • Given a ship's hull mass and its generator's optimal mass curve, we can compute an "optimality" value ranging from -1 to 1; if the hull mass is greater than the generator's optimal mass, the "optimality" will be negative, and vice versa.
    Asp,3E => (optimalMass - hullMass) / (maximumMass - optimalMass) == (165 - 280) / (413 - 165) ~= -0.4637
    Asp,5E => (optimalMass - hullMass) / (optimalMass - minimumMass) == (405 - 280) / (405 - 203) ~= 0.6188

    The "optimality" can never be less than -1, because that would mean the hull mass exceeds the generator's maximum mass, and in that case you can't even install the generator. The "optimality" can be greater than 1, however, if the hull mass is less than the generator's minimum mass; in this case we simply cap it at exactly 1.
  • Using the optimality value, we perform a linear interpolation of two of the shield generator's multiplier curve values to find the effective multiplier; negative optimality is interpolated over the bottom half of the multiplier curve, and vice versa.
    Asp,3E => (-1 * optimality * lowMultiplier) + ((1 + optimality) * midMultiplier) == ((-1) * (-0.4637) * 0.3) + ((1 + -0.4637) * 0.8) ~= 0.5682
    Asp,5E => (optimality * highMultiplier) + ((1 - optimality) * midMultiplier) == (0.6188 * 1.3) + ((1 - 0.6188) * 0.8) ~= 1.1094

    If you find it easier, you can also split the optimality into separate "bonus" and "penalty" values which each range from 0 to 1; avoiding the negatives makes the equations look a little neater, but it involves multiple values to indicate basically the same thing, so I prefer this style.
  • Finally, we apply this effective multiplier to the ship's baseline shield strength to find its effective shield strength with that generator installed.
    Asp,3E => (effMultiplier * baseShields) == (0.5682 * 140) ~= 79.548
    Asp,5E => (effMultiplier * baseShields) == (1.1094 * 140) ~= 155.316


This graph illustrates the concept for rating E, C and A shields:
shieldstrength1b.png
So far so good -- and yet the game disagrees. To see this for yourself, install a 5E shield on an Asp and then switch to another ship in the same station (buy a cheap Sidewinder if you have to). From the other ship, open up the shipyard again and find your Asp under "Stored Ships" to see what its actual shield strength is:
Asp,5E in-game: 152
Asp,3E in-game: 57
The class 5 is only off by a few points, but the 3E is really in trouble -- it has only 72% of the shield strength that our formula says it should!

To get a better handle on what's going on, I went through every single ship and tried installing an E-rating shield of every class that would fit, recording the actual in-game shield strength for each combination. Then just to be sure the pattern held, I did the same for C- and A-rating shields on a few select ships. This graph shows all of those results as square points, compared to the diamonds which represent the predicted values based on the formula:
shieldstrength2b.png
Clearly there has been some kind of misunderstanding. [FD] Mike Evans indicated that the formula involved linear interpolation based on the hull mass and generator curves, and while there certainly is a direct relationship there, it is most definitely not linear. The effect is most pronounced at low optimality (hull mass ~1.5-2x optimal mass), but even on the top half, the actual data values have a slight downward bend compared to the straight line of the predicted values.

To correct for this I experimented with a few types of curves (sine, sigmoid, etc) but in the end, what seemed to work best was just a couple of hand-tuned magic number exponents. I make no claim that what follows is the "actual" algorithm that exists in the game code, because as [FD] Mike Evans pointed out, magic numbers are "a sure sign that it isn't what we're using." But in this instance they seem to achieve the correct results to within 1 shield point in almost all cases, so until Mike or someone else at [FD] chooses to clarify, it'll have to do.

My solution is this:

  • If the optimality is negative, then add it to 1, raise it to the 2.425 power, and then subtract 1 again:
    (optimality < 0) ? (-1 + ((1 + optimality) ^ 2.425))
  • If the optimality is positive, then subtract it from 1, raise it to the 0.87 power, and then subtract it from 1 again:
    (optimality >= 0) ? (1 - ((1 - optimality) ^ 0.87))

With these adjustments, the graph looks like this:
shieldstrength3b.png
It's not quite perfect, but it's a lot better than it was. edshipyard.com has been updated with this new algorithm, and coriolis.io is of course more than welcome to lift the function for their use as well.


EDIT 1: Collected a bit more data for rating C shields and added them to the graphs, in response to folks who thought C might still be linear even when E and A are not.
 
Last edited:
Excellent research thank you!

I notice that - assuming ED Shipyard is fully correct - that this change (or rather, correction) has impacted the shield strength of the new FAS significantly as it always has negative optimality. Is it possible that the base shield strength numbers for the new ships were improperly calculated based on the previous incorrect formula? I don't have beta access to confirm if ED Shipyard matches the ingame values.

E:

I just compared the Wiki and EDS values for a stock FGS, FAS and FDS and none of them match - obviously the wiki could be wrong but it suggests that all base shield values for ships should be double checked under the new formula.
 
Last edited:
Excellent research thank you!

I notice that - assuming ED Shipyard is fully correct - that this change (or rather, correction) has impacted the shield strength of the new FAS significantly as it always has negative optimality. Is it possible that the base shield strength numbers for the new ships were improperly calculated based on the previous incorrect formula? I don't have beta access to confirm if ED Shipyard matches the ingame values.

E:

I just compared the Wiki and EDS values for a stock FGS, FAS and FDS and none of them match - obviously the wiki could be wrong but it suggests that all base shield values for ships should be double checked under the new formula.

For ships which existed at launch, we know the real "base shields" values because the in-game shipyard displayed them directly until a later patch; those ships are the only ones I used while testing and calibrating my adjustments to the formula, for exactly that reason -- I needed to be sure I had the right numbers going in to the formula.

For ships added since that patch, yes, we've had to reverse-derive their base shield strength given the updated in-game shipyard display and our understanding of the formula. For the FAS this did indeed lead to an incorrect base shields value when I first added it to edshipyard, which I have since corrected when I updated the shield formula last night.

EDIT: Whoops, I'm wrong, I updated it on my testing spreadsheet but forgot to make that change on the actual site. I'll do that right now!

Is it possible that its not the forumla that is incorrect, but the displayed value?

Anything's possible, but unless someone finds differently, it seems reasonable to me to assume that the game is likely to display the correct number, since the game is the authority on calculating the correct number in the first place. But, a good test would be to put a small shield on a large ship (to maximize the difference between the old and new predictions), drain the SYS cap, set SYS=0, and fire a large beam weapon continuously until the shields fall. If the time it takes for that to happen is proportional to what the in-game shipyard is telling us about the shield strength, then we can even more reasonably conclude that the displayed value is indeed accurate.
 
Last edited:
This looks like two diiferent exponential curves. One for < 0 "optimality" and one for >= 0.
Sure does, and that's more or less what my adjustment entails -- applying a different exponent to curve the distribution on each half of the range.

Internally I'm sure FD are using a simpler formula, but I couldn't figure out what it was. Hopefully they'll share those details with us, but I'm not holding my breath; in the mean time, the exponents are at least an improvement in empirical accuracy.
 
Sure does, and that's more or less what my adjustment entails -- applying a different exponent to curve the distribution on each half of the range.

Internally I'm sure FD are using a simpler formula, but I couldn't figure out what it was. Hopefully they'll share those details with us, but I'm not holding my breath; in the mean time, the exponents are at least an improvement in empirical accuracy.

Personally I doubt that there is a simpler formula that matches your readings, but I could be wrong of course.
 
Personally I doubt that there is a simpler formula that matches your readings, but I could be wrong of course.

Well, I tried a few things with sine and e^x that were pretty close, so I'm guessing the real formula uses one of those with some particular arrangement of other variables that I wasn't able to guess. The real trick in this kind of situation is that there are multiple equally reasonable ways to run this calculation -- for example, I've arranged things to use an "optimality" measure that approaches 0 at mass==optimal and goes to 1 as mass<=minimum, but you could just as easy use a "penalty" measure that goes the other direction, or a few separate measures that go to 1 as mass==optimal, and so on. Depending how you arrange the variables, you end up with neater or messier ways to modify those variables using a sine, exponential, or other function.

Ultimately, I think Mike Evans was exactly right that magic numbers are a "sure sign that's not what they're doing", so there must be some real formula that the game engine actually uses, and I suspect it looks neater than what I've come up with. Unfortunately FD hasn't told us what that is (posts in this thread notwithstanding, since although we super appreciate the transparency, it turns out that we came to the wrong conclusions as a result, and ended up with a "simple" formula that didn't actually match what the game is doing).
 
But that formula is a curve-fit to the actual shield strengths from testing in-game, i.e. they repesent what we actually get to play with. Obviously when you try to fit a curve to data points you never get exactly right values and coefficients, but it's the best we can do without inside information. Obviously it's not the exact formula you've programmed - but it's a bit like saying f=9.82*m is not the right formula for determining weight, because you determine the spacetime curvature created by the earth at each point in space to calculate the individual force on each point-mass and then summing it up for the entire object. :)

And as you can see, 0.5*erf() + 0.5 in that formula will indeed vary roughly like you're describing.

edit: What we don't know for sure is if the scaling is right, because when we were testing we didn't know what the "Shields" value actually was, and what unit to present the values we tested. So the whole formula could be off by small or large factor.

I'm trying (hard!) to understand the maths here. What (exactly) is the 'erf' (Error Factor) that you refer to? Is it the part in brackets afer erf ()? In other words is it:

erf = ([1.0228] * [SHIELD OPTIMAL HULL MASS] / [SHIP HULL MASS] - 0.66391)

Or have I entirely misunderstood how you are representing these calculations?

So - reducing your original equation thus:

SHIELD STRENGTH (in MJ) = [SHIP SHIELD RATING] * [0.53821 * erf([1.0228] * [SHIELD OPTIMAL HULL MASS] / [SHIP HULL MASS] - 0.66391) - 0.0588 * [NUMBER OF RATING LEVELS BELOW A] + 0.56377]

becomes:
SHIELD STRENGTH (in MJ) = [SHIP SHIELD RATING] * [c1 * ([c2] * [SHIELD OPTIMAL HULL MASS] / [SHIP HULL MASS] - c3) - c4 * [NUMBER OF RATING LEVELS BELOW A] + c5]

Where:

For An Adaconda with a 7A shield: Ship Shield Rating = 350, Optimal Mass = 1060T, Ship Mass = 400T

Shield Strength (MJ) = [350] * ([0.53821] * (1.0228 * [1060] / [400] - 0.66391) - (0.0588 * 0) + 0.56377)

converting the constant values to variable labels that can be used in Excel:

c1 =0.53821Ship Hull Mass (T) =400
c2 =1.0228Ship Shield Strength =350
c3 =0.663917A Shield Min. Mass =530
c4 =0.05887A Shield Optimal Mass =1060
c5 =0.563777A Shield Max. Mass =2650

we get:

SHIELD STRENGTH (in MJ) = [350] * [c1 * (([c2] * [1060] / [400]) - c3) - (c4 * [0]) + c5]

When all of this is plugged into Excel we get a value of 582.82 MJ. This compares to a value of 595 in your table... close enough I guess?

Are you able to explain the difference and whether I have got these calculations understood correctly. BTW, how on earth you worked out 5 constants within a complicated equation like this I'll never know!

Already Rep'ed for Amazing Work!

 
Status
Thread Closed: Not open for further replies.
Back
Top Bottom