Rev-Enging Mission Boards

Gah,, felt like I was onto something with Hijack missions, but the extreme cases have stuffed me up... I based it off the Planetary Scan logic. There is a random factor, and cargo is matters I think (since Hijack Hostage missions pay 4-5m, where Hostages are 34,000 average price; pumping an average cost up to that for rescuing 8 gets between ~4.7 and 5.4, per mission, which is what i'd expect off the top of my head... meanwhile 4t of Precious Gems (@139,000 avg) fetches 7-9m, again, as expected.

I was rolling with Rank = 10 (Elite) downwards, and a formula of:
=((200000 + Avg Cost * Quantity) * Rank) * (Rank/10) * RAND(1,1.2)

Rank​
Reward​
Distance LY​
Cargo​
Avg Cost​
Qty​
Min Predicted​
Max Predicted​
8​
1483416​
8.7​
PP​
6242​
4​
1439795.20​
1727754.24​
6
1130490
8.7
DB
945
8
747216.00
896659.20
7​
1238054​
8.7​
PP​
6242​
4​
1102343.20​
1322811.84​
8
1642381
8.7
DB
945
8
1328384.00
1594060.80
10
2139656
3.38
PP
6242
4
2249680.00
2699616.00
10​
2194351.00​
5.68​
DB​
945​
8​
2075600.00​
2490720.00​
10​
2375838.00​
8.70​
DB​
945​
8​
2075600.00​
2490720.00​
10​
2381778.00​
8.70​
DB​
945​
8​
2075600.00​
2490720.00​
6
1016284.00
8.70
DB
6242
4​
809884.80
971861.76

It's close, but I can't crunch the fine numbers (I rev-eng systems, not numbers, I once got the molar mass of air to be about a tonne...)
 
It's close, but I can't crunch the fine numbers (I rev-eng systems, not numbers, I once got the molar mass of air to be about a tonne...)
Try EXP(Rank) rather than Rank^2 - I spent ages with the planetary scans trying to get square or cubic curves to misfit before I figured that one out.
 
Something like 300,000*EXP(rank/5) seems to get fairly close - how the 300,000 is distributed between static multipliers, LY factors and CV factors I'd want a lot more data points before having a go at, though.
 
The specifics of what mission spawn and the destinations seem to depend on ship, and ship loadout. (I did some testing a few months back with 2 accounts in different ships, same ship but different builds, and identical builds. With identical ships i was able to get identical boards with only the payout varying due to rank differences. Cargo, quantity, target name, mission types and destination all matched exactly. Swapping out even 1 or 2 modules was enough to get differences in the mission board.

I could not fully rule out a timing or cmdr name dependence as the two accounts have near identical names, and the timing of opening the mission board was within ~30 seconds of each other.
 

Dominic Corner

Mostly Harmless Programmer
Frontier
The specifics of what mission spawn and the destinations seem to depend on ship, and ship loadout.

Hi there,

Not even slightly. The missions server has absolutely no knowledge of your ship loadout.

The only player factors are ranks, and reputations. *

Thanks,
Dom

* I did write an A/B testing system using player ids, but this is not currently in use and is unlikely to be used in the future.
 

Dominic Corner

Mostly Harmless Programmer
Frontier
Okay, got the results for Allied courier missions (can't test the others, don't have any non-Allied factions for 2000 LY, be interesting to know if that adjusts the payout directly or just by manipulating what mission ranks are offered)

Formula (for the cash reward, noting your comment above) seems to be:
Payout = 10000 + (rank factor * (LY contribution + Ls contribution))
Rank factor = 0.1 + 0.1 per rank (so 1.0 for Elite, 0.9 for Tycoon, 0.6 for Merchant)
LY contribution ~= 8800 * adjusted distance
Ls contribution ~= 4.4 * Round(distance in Ls)
Adjusted distance = first take Floor(actual distance). If this is between 10 and 25, just use it. Below 10, add 0.25 LY for every 1 LY below 10. Above 25, add 0.25 LY for every 1LY above 25. (So below 10 doesn't drop off as fast and there's probably a minimum of 2.5 LY if you got a intra-system missions, and above 25 rises faster)
  • Yes, it's round to nearest for Ls and floor for LY - wouldn't be Elite Dangerous without arbitrarily inconsistent use of rounding functions.
  • 8800 and 4.4 aren't quite exact - sometimes the formula is spot on, sometimes it overestimates by a tiny amount (<25 credits) - but it's good enough and I can't be bothered to pin it down further. I did not see the effect you described with Ls payouts capping at 2000 Ls
  • There seems to be a consistent formula here for both short- and medium- range missions, with a range adjustment at 25 LY even though the banding between the mission types is at 20 LY. It'd be interesting to see if there's any further differences with longer-ranged ones if you can compare in the bubble next Thursday.
  • The extreme range inter-bubble courier missions definitely do not use the same adjusted distance formula, or they'd pay out at about 242 million credits each.
  • Whether or not the destination is a surface base seems to have no effect on the pricing.
Spreadsheet formula if you want to have a play is this: (A2 = rank from 5 to 9 ; F2 = floor LY, G2 = round Ls)
=10000+FLOOR((((A2+1)/10)*((8800*IF(F2>=10,IF(F2<=25,F2,25+(F2-25)*1.25),10-((10-F2)*0.75)))+(4.4*G2))))

Hi there,

This is very interesting to see and fascinating that you've managed to derive such a good estimate... But this isn't fully accurate.

The actual calulcation is, indeed, 10,000 + (Rep * Rank * Base Reward) where the base reward involves system and station distance reward generators. But none of the values you've used appear anywhere within (except the 10,000 baseline). It also contains no floors or rounding at any point except to remove partial credits at the end.

As you've specified Allied missions, this simplifies to 10,000 + (Allied Rep Factor * Rank * Base Reward).

Thanks,
Dom
 
* I did write an A/B testing system using player ids, but this is not currently in use and is unlikely to be used in the future.
1590588511683.png


Intriguing! I know I never will, but would love to see how the missions spawn under the hood... the way they're kinda "blobby" in that if it generates a type, it tends to "stick" with that is a constant source of mystery for me.

Something like 300,000*EXP(rank/5) seems to get fairly close - how the 300,000 is distributed between static multipliers, LY factors and CV factors I'd want a lot more data points before having a go at, though.
So, I'm cracking out a bunch of Hijack missions for an election, because I <3 them[1], and I've got a heap of chained ones. I remember last time I had a couple left and these switched to doing hostages, so I'm going to wait til the election is done and see what cargoes spawn for recovery... I've seen Antiquities and Precious Gemstones be requirements, and also things like military intelligence in war (I have a war going on at the moment, but right now it's still spawning missions for political prisoners/diplo bags)... and I have a bunch of Assassinations I have to clear out (as there's a max of five chain missions which will display or something like that).

tl;dr hopefully I can get you some new cargo types soon.

[1]
I had five for a system, and just before the last one, I got a couple tails for the missions, and a rando pirate started following. This played out as follows.

  • Drop into mission USS, T-9 plus two sidey escorts... these are always kinda hot.
  • Additionally, a rando Eagle pirate dropped out and demanded cargo. I took out one sidey, then the eagle, sidey and T9 opened fire on me.
  • Suddenly, the Python tail drops out and opens fire on me too... I quickly drop to one ring so I boost out and flip to try and shake the eagle and sidey with some seekers (they're only competent rank)
  • Another Krait drops out, but just in time for about six security vipers to drop out. It fires on the T9, and it's bedlam at this point. T9 shields drop, and I haven't cracked the cargo yet.
  • Fly into the middle of things, pop the hatch and scoop the cargo... by this point cops have taken our the sidey and eagle, Krait went "Screw this", so heat of the moment, having secured the cargo, wipe out the T9 and Python with the cops help, and hightail it before they can scan me with some illegal goods.

These missions, when you get a couple tails, are always heaps of fun, especially when they become bunfights like this!
 
Hi there,

But there are only 9 ranks...

Thanks,
Dom
200.gif


I swear I saw Ian use a count from 10 for one, and I've gone back now and, well, yeah, can't find it anywhere >.> I'll have to bang those back into a spreadsheet and try again, when it's not nearly 1am local XD
 
I swear I saw Ian use a count from 10 for one, and I've gone back now and, well, yeah, can't find it anywhere >.> I'll have to bang those back into a spreadsheet and try again, when it's not nearly 1am local XD
My Courier estimate effectively uses a count from 2-10 because of the A2+1 component, but I did record the ranks as 1-9 internally. Now I'm wondering about seeing if I can make it work without the +1 of course.
 

Dominic Corner

Mostly Harmless Programmer
Frontier
My Courier estimate effectively uses a count from 2-10 because of the A2+1 component, but I did record the ranks as 1-9 internally. Now I'm wondering about seeing if I can make it work without the +1 of course.
Hi there,

Of course, internally, they're 0-8 (and the naval ranks are 0-28)... but the rank is not directly referenced anywhere in a reward calculation so that's not a problem.

Thanks,
Dom
 
It also contains no floors or rounding at any point except to remove partial credits at the end.
Curious.

The reason I came to that conclusion was two missions with identical pay but different parameters - both rank 5, both to the same 26.07 station, but one from 14.42 LY away and one from 14.53 LY away both paid exactly 83986 credits. So from that I concluded that it took FLOOR(LY)

I also had a pair both pay 108612 credits at rank 7 - one to 14.44 LY + 17.57 Ls and one to 14.53 LY + 18.1 Ls - so combined with the previous conclusion I guessed that was ROUND(Ls).

But if neither is rounded something else must be going on... back to the drawing board :)

EDIT: Hmm... I suspect that, after removing the base 10,000, the remaining payout for an Elite courier mission is always divisible by 22 is probably significant here.
 
Last edited:
Thank you, that was enough of a hint to get a formula giving the exact numbers for the courier mission payouts (at least, the Allied ones). :)

Take away the 10,000 base payout.
Divide what's left by 1.1 to remove the 10% bonus payout we get for not board-flipping.
Divide what's left by 11+rank (11 is presumably either the Allied bonus or the Allied bonus plus a constant.
What remains is Floor(400*adjust(Floor(LY)))+(0.2*Ls) and those are nice round numbers so I'll take them - adjust(LY) giving the same bonuses for <10 or >25 as before.

But ... there's still a Floor() in the LY - the formula just does not work without it - and
It also contains no floors or rounding at any point except to remove partial credits at the end.
...but of course that still allows for the LY value to be coerced from a float to an int at some point, which allows fractional parts to be discarded without ever actually calling a rounding function. Sneaky! The formula seems to do that a few times - once with the LY, and once before the rank+rep+flip multipliers are used.

So for allied missions (where FLOOR is sometimes actually a float-int conversion) I get
10000 + FLOOR( ((11+Rank)*1.1) * FLOOR((400*adjust(FLOOR(LY)) + (0.2*Ls))
 

Dominic Corner

Mostly Harmless Programmer
Frontier
Thank you, that was enough of a hint to get a formula giving the exact numbers for the courier mission payouts (at least, the Allied ones). :)

...

So for allied missions (where FLOOR is sometimes actually a float-int conversion) I get
10000 + FLOOR( ((11+Rank)*1.1) * FLOOR((400*adjust(FLOOR(LY)) + (0.2*Ls))
Hi there,

It's a much neater estimate than you had before, but I still don't think it's entirely accurate.

I'm at home (i.e. my work pc is turned off and I don't feel like turning it on again in this heat) so I can't triple check but I'm pretty sure light years and lightseconds are floats and worked with as floats.

Thanks,
Dom
 
Top Bottom