LemADEC / WarpDrive

A warp drive mod for minecraft
70 stars 40 forks source link

Warp cost revamp #49

Closed LemADEC closed 6 years ago

LemADEC commented 9 years ago

This ticket tracks the discussion on changing warp/jump costs

Based from #36, lellasone said:

Warp: • Making jump costs slightly exponential with distance so that a 2k jump might cost say 6 times as much as a 1k jump could make for more interesting design choices in building chase ships.

• Tying ship size to per-block jump costs would give smaller ships a bigger mobility edge and help enable tactical warping for smaller ships.Warp cost is too linear indeed.

Default jump distance is set fairly low, to encourage players to use hyperspace. You seem to have set it much higher? We could also play with the warmup duration, instead of just a threshold value.

Warp cost is currently = 'ship volume in block' x 'cost per block' + 'jump distance' x 'cost per m'. Costs factors are different between space and hyperspace, but equation remains the same.

lellasone commented 9 years ago

We bumped it up into the 2-4 kilometer range, in an effort to WD more viable for exploration and industrial use (At the time we could not get to space, so perhaps those numbers would come down a bit if we could). Also because having ships longer than their jump range was a bit silly. Although it has caused a few balance peculiarities the longer jump length has been really nice on a practical front.

Playing with the warmup duration would be a very exciting direction to travel, tying that to something in game rather than as a set limit could make for some very interesting mechanics.

I am aware, and that does work pretty well. The issue we ran into though is that it is difficult to limit ships to a tactically meaningful number of jumps without making larger ships wholly impossible to use. One possible solution would be to use a jump cost equation along the lines of:

ln([blocks in ship])[factor]e^([distance to travel]/[factor]).

Where the ln([size]) term would help keep larger ships viable, and the e^([distance to travel]/[factor]) term would maybe make transit decisions a bit more interesting. (One could for example make the distance factor 100 but set the max distance as 500 making smaller 100 block jumps more efficient long term but giving ships the option to make a 500 block emergency jump if needed).

It isn't an issue as it is particularly, just an area where it seems like there are some opportunities for interesting mechanics to emerge.

LemADEC commented 9 years ago

Sound good. Why were you not able to reach space? What's the typical size of your ships?

TheNumenorean commented 9 years ago

At the time, going into space soon crashed the player and made it impossible to login until they were manually removed from the dimension. It is fixed in the current version.

LemADEC commented 9 years ago

I've fixed many bugs back in 1.6.4, but I don't quite remember that one.

Either way, it would be very valuable to know the ship sizes and how they were used. It helps defining our roadmap :).

LemADEC commented 8 years ago

I think we're not asking the right questions here, so I'll reformulate the issue.

Moving a ship involves 3 stages:

When we're moving through a propulsion system (rocket or impulse engine), costs depend on the mass of the ship, current dimension and distance travelled, something along the lines of: shipMass * (engineTransitionCost + engineMovementCost * distanceTravelled). Furthermore, cost to escape gravity should be much higher than remaining on the planet.

When we're moving through a hyperdrive or warp drive engine, costs should favor bigger ships, and unlike propulsion systems, it costs to maintain your speed. Furthermore, you shouldn't be able to flight outside of your ship. Something along the lines of: ln(1 + e * min(shipMass, shipOptimumMass) / shipOptimumMass)

There's still the issue of ship mass / volume ratio which can be abuse, not sure if I want to address it yet.

LemADEC commented 7 years ago

Movement parameters are depending on the following inputs:

Movement parameters themselves are:

Equation involve:

The formula proposed is "A + B mass + C distance + D ln( max(1, mass) ) exp( distance / E )"

LemADEC commented 6 years ago

Implemented as of 1.3.36