pioneerspacesim / pioneer

A game of lonely space adventure
https://pioneerspacesim.net
1.64k stars 380 forks source link

Leaving landing gear / undercarriage down should be penalized #2509

Closed ghost closed 10 years ago

ghost commented 11 years ago

There's no incentive to raise your undercarriage as of now. It makes the undercarriage feel useless. Forgetting to do so should cause damage to it, both in atmosphere and in space.

A model similar to the atmospheric damage model might work, except I think there should be damage while in space too. I wouldn't go for a necessarily realistic model; I think it should meet these requirements: (1) not be damaged during normal usage, (2) being slowly damaged when abused, proportionally to the abuse (I guess "abuse" translates to flying fast; problem is with respect to what while in space).

Apart from breaking the ability to raise/lower it when damaged, I can't think of any other way to penalize the player. Affecting the ability to land safely when damaged doesn't seem doable with the current docking animation system.

Affecting the ship's performance in space while the gear is down seems too illogical to even raise the excuse of gameplay. Doing so in atmosphere might be reasonable perhaps, just as with planes, so with the undercarriage down your ship would have some extra drag and perhaps heat faster.

moses479 commented 11 years ago

since u only can land on plattforms/stations without getting destroyed the whole landing gear thing could be working entirely automated.

imho there is no need to fill up the gameplay with 'homer simpsons work' (pushing the same button the whole day)

bszlrd commented 11 years ago

You can land almost anywhere. screenshot-20131018-155635

A gear left lowered could affect performance in atmosphere too.

radius75 commented 11 years ago

temperature +100% if wheel down, (growing temp change during release / retract landing gear) https://github.com/radius75/pioneer/compare/hull_temp;landing_gear src/Ship.cpp

@@ -852,13 +852,13 @@ void Ship::FireWeapon(int num)

 double Ship::GetHullTemperature() const
 {
    double dragGs = GetAtmosForce().Length() / (GetMass() * 9.81);
    if (m_equipment.Get(Equip::SLOT_ATMOSHIELD) == Equip::NONE) {
-       return dragGs / 5.0;
+       return dragGs / (5.0 - (2.5 * GetWheelState()));
    } else {
-       return dragGs / 300.0;
+       return dragGs / (300.0 - (150.0 * GetWheelState()));
    }
 }

 void Ship::SetAlertState(AlertState as)
 {

100% - is not beyond debate

smokku commented 10 years ago

Autopilot is able to bring you to a starport and sit you down. It surely would be able to lower/raise landing gear automatically. Especially when it knows your altitude. I agree with @moses479 that having to manually raise/lower it is completely unrealistic and useless feature. The only use for it I see is to show-off the cool raise/lower animation on external view. But this could be just viewed while launching off :-)

fluffyfreak commented 10 years ago

@smokku and you can use it to land everywhere else, even places without a starport.

When you land with the autopilot it does lower it for landing at the last minute, when you set a destination I'm not sure if it raises it but I think that I does.

johnbartholomew commented 10 years ago

I agree with @moses479 that having to manually raise/lower it is completely unrealistic and useless feature.

You don't have to. If you're docked and you tell the autopilot to dock somewhere else, it will undock, raise the landing gear, fly to the destination, request landing clearance, lower the landing gear and dock, all automatically. That has been true for a long time (longer than I've been involved with the project).

Of course, the autopilot will not raise or lower the landing gear for you if you are flying manually, but doing so would be stupid, since the autopilot has no way of knowing your intentions. It would be pretty annoying if you were practising your manual landing, and died because the autopilot had been messing with the landing gear without your input.

smokku commented 10 years ago

@fluffyfreak So, when you have altitude lower than x, landing gear should lower automatically. We are able to construct an automate for this today. Surely they will be able to do that in the 31st century. Especially when autopilot is able to do this...

fluffyfreak commented 10 years ago

It's possible, feel free to add it :)

impaktor commented 10 years ago

So, when you have altitude lower than x, landing gear should lower automatically.

Ugh, no. So I'm going in to snapshot picture of a military base, and whheeeee the landing wheel comes down?

Have everything as it is now, except some incentive to raise it, if flying manually. E.g. some hull heating, or annoying warning message (like seat belt alarm), or speed penalty or damage.

johnbartholomew commented 10 years ago

I agree with @impaktor.

bszlrd commented 10 years ago

I agree with @impaktor too. There's no real point to automate it if you fly manually. You are flying manually because you want to have more control, so why take away a small but meaningful detail, like this?

smokku commented 10 years ago

I'm convinced. When in manual mode everything is manual. (aka control-freak-mode ;-)

lwho commented 10 years ago

So, just something in the spirit of @radius75's patch?

My suggestion: Just let the ship lose its ATMOSHIELD advantage (if you have your wheel well open, it can't work) and maybe increase the value GetAtmosForce() for the turbulence the wheels cause. By how much? 30%? 50%?

impaktor commented 10 years ago

My suggestion: Just let the ship lose its ATMOSHIELD advantage

sounds good to me.

and maybe increase the value GetAtmosForce() for the turbulence the wheels cause. By how much? 30%? 50%?

I'm thinking there could be a quadratic increase somewhere on something as speed increases, due to drag. I don't know anything about the code or what GetAtmosForce() does (don't have time to look into it right now), but that could be nice. I.e. first when you start going fast you notice the effect of the wheels being down.

lwho commented 10 years ago

I had a first shot at it: Feel free to play around with lwho/wheel_drag. 25% increased drag and disabled atmoshield if wheels are not retracted. The wheel button now has the effect of a self-destruct button when flying in the (upper) atmosphere of Jupiter :D

lwho commented 10 years ago

As @radius75 mentioned in a line comment to my code, the effect is a bit too instant.

There are several aspects to this

radius75 commented 10 years ago

temperature causes damage to the hull

@@ -1103,11 +1103,14 @@ void Ship::StaticUpdate(const float timeStep)

    if (IsDead()) return;

    if (m_controller) m_controller->StaticUpdate(timeStep);

-   if (GetHullTemperature() > 1.0)
+   if (GetHullTemperature() > 0.1) // Hull damage if temperature >10%
+       SetPercentHull(GetPercentHull() - (GetHullTemperature() * 0.01)); // the growing Hull damage with the increasing temperature
+
+   if ((GetHullTemperature()) > 1.0 || ((GetPercentHull()) == 0))
        Explode();

    UpdateAlertState();

    /* FUEL SCOOPING!!!!!!!!! */

Setting >5% (0.05) does not allow for a carefree flying without atmospheric shield on autopilot ;)

explosion for (GetHullTemperature ()) > 1.0 may already be unnecessary Temperature determines the size of the damage to the hull temperature higher than 100% (flight at low altitude over Jupiter) very quickly cause damage :)

https://github.com/radius75/pioneer/compare/pioneerspacesim:master...hull_temp%2Flanding_gear

lwho commented 10 years ago

I recently did some web research on heating due to moving through atmospheres. I found out that

I suspect that the formula for atmospheric drag also looks quite different for super-sonic flight.

*) Please note that the speed of sound is variable and depending on atmospheric density (and temperature and composition).

radius75 commented 10 years ago

http://en.wikipedia.org/wiki/Hypersonic_speed How should fast fly Pioneer ships (without any damage) in Earth's atmosphere?

lwho commented 10 years ago

I guess, a ship with an atmospheric shield should sustain re-entry speeds without damage, which is according to your link >25 Mach. BTW: I was mistaken: Speed of sound of a (nearly) ideal gas is (nearly) independent of pressure/density (the effect of pressure and density cancel out, because they are proportional). So, the effect of temperature is much larger.

Anyway, we're way beyond the limits where "back-of-the-envelope" physics works. So, we should not aim for realism here. It's a space simulation game and no hypersonic flight game anyway :D

lwho commented 10 years ago

Fuel-scooping requires a speed of >2 km/s in a hydrogen/helium mixture with density >1 kg/m³. This should also work without damage.