endless-sky / endless-sky

Space exploration, trading, and combat game.
https://endless-sky.github.io/
GNU General Public License v3.0
5.82k stars 1.03k forks source link

better handling of "can't take off" conditions #7735

Open johndh opened 1 year ago

johndh commented 1 year ago

Problem Description

This is in reference to something I've experienced on the Android fork, (see https://github.com/thewierdnut/endless-mobile/issues/19) and part of a general desire for better ways to play without a keyboard. In short, if for some reason the player can't take off from a planet because one of their ships lacks engines, gets too hot, etc, and there's no spaceport from which to access the fleet info to park the offending ship, no keyboard with which to access it, and no outfitter or shipyard, then the only solution is to reload a previous save. This isn't strictly a bug in ES, but rather a missing capability that affects the downstream version.

Related Issue Links

https://github.com/thewierdnut/endless-mobile/issues/19

Desired Solution

Provide a way to access the info panel from this (and similar) dialogues, such as with a button

Alternative Approaches

Additional Context

Screenshot_20221128-172058

johndh commented 1 year ago

The best I could do for a mock-up: Screenshot_20221128-172058~2 Screenshot_20221129-113511~2

ThrawnCA commented 1 year ago

The fact that you can strip the engines off a ship and have no way to restore them is kind of an issue all of its own...

I'm in favor of adding an option to park the ship. But then there would need to be more sanity-checks when un-parking.

vitalchip commented 1 year ago

I think this will be a case of a ship in space which had the engine or the cooling plundered 'landing' when the flagship does. If this happens then the ship can be parked (I think the specific problem here is no keyboard, so no way to press [i].

All that can be done after it's parked though is to leave it or disown it, might be better if we considered a ship in space with no engines/power/cooling etc to be disabled and not land, which is only sensible since if it can't fly then how would it get to the planet.

Of course it wouldn't be 5 minutes before someone was whining that now they can't get their 'no engine' ship back to the outfitters (where one exists)

mOctave commented 1 year ago

What if the offending ship is your only ship? What happens then? I prefer having a way to access the info panel to the park offending ship button... perhaps a row of buttons along the top or bottom for map, info, and anything else that's important to be able to access?

vitalchip commented 1 year ago

If it's your only ship you can't ever park it anyway, working or otherwise.

Assuming your flagship isn't the one affected then press [i]. As I said before I think the specific problem here is playing on a machine without access to a keyboard and the game is designed to use a keyboard.

What we're looking at here would be a way to never need a keyboard?

johndh commented 1 year ago

What we're looking at here would be a way to never need a keyboard?

Never needing a keyboard would be the ideal solution for mobile platforms.

perhaps a row of buttons along the top or bottom for map, info, and anything else that's important to be able to access?

Is there a way to do this without making the screen very cluttered? Having just a few buttons, radar, and small UI elements makes the current screen somewhat obstructed on small screens. I have to wonder if a more fundamental UI redesign is necessary. Screenshot_20221130-083842 Just imagine also having buttons for all possible fleet commands, ship selection, etc., and what a mess that would be.

thewierdnut commented 1 year ago

I'll add a new button on the android port to get to the info screen if there is no spaceport. For this issue though, I'm wondering about how the game logic should treat a ship in your fleet that really shouldn't have the ability to fly in the first place.

vitalchip commented 1 year ago

The ship must have had its engines removed in space. Sometimes a player might board a ship, loot the engines and then realise their chances of capturing it were higher than first thought, so they caqpture it and land.

All plaayer owned ships in the same system as the player are counted as landed when the player is, unless they are disabled, so it lands with no engines and no way to put them back.

Then the flight check gets hold of it and refuses to let it leave.

We could count a ship which would fail a flight check as being disabled and then it wouldn't land but there's still no way to put the engines back so the best you could do is destroy it and hope to pick up some flotsam.

Alternatively we could have a 'force launch' which woud make it depart regardless of the flight check but that's the same outcome as above, it'll be in space with no engines and no way to install them.

The problem doesn't arise where there is an outfitter since you can install some sort of engine but actually you're just benefitting from the over simplification of landing as really the ship could never make it to the planet and so it should remain stuck in space.

thewierdnut commented 1 year ago

Maybe a stupider solution: Disable the capture button if it fails a flight check and you aren't in a system with an outfitter.

ThrawnCA commented 1 year ago

Maybe a stupider solution: Disable the capture button if it fails a flight check and you aren't in a system with an outfitter.

That's not really stupid, it's quite sensible. You're sending crew members onto it, after all; there could be a line about them refusing to board a ship that isn't spaceworthy.

The trouble is, if the problem is overheating etc, how would they know in advance while it's disabled? Perhaps the check could occur when combat succeeds, and if it's not spaceworthy, then they retreat instead of capturing even though there's zero crew left.

johndh commented 1 year ago

In my experience, captured ships rarely get to land before they get destroyed, so it makes sense to loot a few outfits, especially if they can only be acquired through combat. In this case, heat shunts. Maybe looting a ship should destroy it, if we don't want to encourage this behavior. You're cutting big holes in it and ripping out pieces, after all. On the other hand, this would make what is already the most frustrating play style even more frustrating.

mOctave commented 1 year ago

The trouble is, if the problem is overheating etc, how would they know in advance while it's disabled? Perhaps the check could occur when combat succeeds, and if it's not spaceworthy, then they retreat instead of capturing even though there's zero crew left.

This sounds like a good idea. Maybe they could retreat, taking looted hand-to-hand weapons with them? Then there would be a point of fighting, even if the ship wasn't spaceworthy.

ThrawnCA commented 1 year ago

Then there would be a point of fighting, even if the ship wasn't spaceworthy.

Well, I was more thinking that the point of fighting is that the player doesn't necessarily realise in advance that they've pulled out vital components (not having the full statistics of what they're stealing, and maybe having never seen some of them before). So it's more of "Whoops, looks like that didn't pan out so well," and you're back to the looting screen to take whatever outfits you can cram into your hold instead.

johndh commented 1 year ago

Related:

4208

3346