# kleemans.ch

## No Man’s Sky ship cost calculator

January 9, 2017 TLDR; Ever wondered how much a ship costs in No Man's Sky? Here's how much:

<div ng-app="ShipCostApp" ng-controller="ShipCostCtrl as shipCostCtrl" style="font-size: 24px; border: 1px solid #ccc; border-radius: 16px; padding: 15px;">

Inventory slots:
``````<div>
Average price:
<input type="text" ng-model="shipCostCtrl.price" readonly style="font-size: 22px; width: 200px;">
</div>
<div>
Estimated gold mining time:
<input type="text" ng-model="shipCostCtrl.hours" readonly style="font-size: 22px; width: 200px;">
</div>``````

After playing No Man's Sky for some time, I noticed two things about ships and slots: First, the cost of the ships available always seems to be something random around a fixed value. For a 31 slots ship, sometimes the cost is around 11.6 million, sometimes 12.3 or even 12.5.

Second, the increase per additional slot (ratio slot-price) is not linear, but instead it seems to be some kind of exponential progress. I wondered what the real relation is between price cost and slots, so I started to take some notes. You can have a look at the 72 data points here: (The cost is in million and rounded to a tenth of a million.)

### Searching for a formula

At first, I thought the ratio from slots to price would exponential, something in the form like (y = cost of ship, x = amount of slots) But the line is too steep for the higher slots. After playing around a bit I realized that it would be more something like the following Here are both of the lines for comparison: As you can see, the both rightmost points don't really fit the first equation, whereas the second equation is a much better fit. If we look closely at the middle part between 30 and 35 slots, there the second equation also is a slightly better fit.

### Optimizing

To fiddle out the exact parameters, I wrote a simple python script to optimize the exponent:

``````def mse(factor):
return sum([(0.000001 * entry**factor - entry)**2 for entry in data])/len(data)

with open('data.csv', 'r') as csv_file:

data = []
for line in content:
data.append([float(line.split(',')), float(line.split(',').strip())])

round = 0
factor = 1.0
diff = 1.0
best_mse = 1000
best_factor = 0

while round < 100:
factor += diff
print("MSE with ", factor, ":", mse(factor))
# if new best, remember current factor
if mse(factor) < best_mse:
best_mse = mse(factor)
best_factor = factor
else:
factor = best_factor
diff = diff/2
round += 1``````

This gives the following output (to the left is the exponent, on the right the mean squared error): Bingo! So the formula (price in million) is: Or in other words, for the full price, the formula is really simple: ### Calculating mining time

As you can see above I also included an approximate mining time, which is based on an optimistic mining rate, for one of those planets which is full of gold piles.

For a full slot of gold, 250 units, I used 2 minutes and 30 seconds. A full slot of gold gives 55'000 units of gold, so that's 22'000 units per minute.

Happy mining! :-)