Reimagining of the flight modes

Post Reply
Posts: 1038
Joined: Mon Jul 01, 2013 3:25 pm
Location: Budapest HU

Reimagining of the flight modes

Post by nozmajner »

Reimagining of the flight modes

My brain got rolling this night about the flight modes of Pioneer (was ill, unable to sleep). I think I arrived to a good place with it which could make flight more accessible without any arcade-ish compromises. On the other hand this is a tad bit more complicated with multiple flight modes and their adjustable behavior, but I think they would provide benefits in most situations/use cases and wouldn't be too hard to learn (I'm willing to do an extensive tutorial video, if any of these ever makes into the game).

TL;DR: Removal of the overriding behavior of translation thrust from Set Speed mode, introduction of speed limiter and cruise control, and a new mode for precision maneuvers which would only fly at a set speed when a directional control is held down, and it would stop upon release.

Current behavior
Right now we have two flight modes:
  • Manual - no aid to the player, almost free reign on all thrusters (apart from the acceleration limiter). Thrust limiter is available. Mostly equivalent to Decoupled mode from Star Citizen or Flight Assist Off from Elite Dangerous. Pioneer still provides rotation damping capabilities and does not limit speed apart from the deltaV capacity.
  • Set speed mode - the flight computer actively shifts the flight vector towards where the ship is pointing, and accelerates/decelerates to a set speed picked by the player. Effectively it tries to emulate some aspects of atmospheric flight, by using the RCS thrusters as needed. In that it is limited by the thrust of the RCS thrusters, so at higher speeds the shifting of the prograde vector can be quite slow.
    It is akin to Coupled Mode from Star Citizen or Flight Assist from Elite Dangerous, but without any arbitrary speed limit set either by ship model or any other speed limit.
    Another more arbitrary limitation of this mode is that if the player engages any of the directional thrusters, the whole thing is overridden, as if it was turned off until the release of the thrust key. This behavior limits its usefulnes in a lot of cases (while landing for example).
These two modes do provide an adequate, albeit very limited and sometimes counterintuitive way to control the ships. But I think they could be improved.

In this post I'd like to describe what I arrived at about how these flight modes could behave. I propose three flight modes, with some additional switchable limiter functionality to them to extend their use-cases a bit more useful even. I'm naming them differently for a bit of clarity.
One important step in my opinion would be to disconnect forward RCS thrust from Main engines. The keyboard controls could look like this:
  • W, S - Forward and Backward RCS translation
  • A, D - Left and Right RCS translation
  • R, F - Up and Down RCS translation (all thre axis should still support joystick axes)
  • Mouse Wheel - Main engine throttle (possible modifiers: ALT for larger increments) (also: thrust lever)
  • Shift + key - Thrust limiter. Shift + wheel could adjust limit setting on the fly without the need to hover over the button
  • T, G - Set speed limit
Joystick controls should still work, but the aim is to keep the mouse & keyboard functionality intact.

The three proposed flight modes:
  • Free flight - equivalent to Manual, with the additional ability to pick a speed limit the ship wouldn't exceed. The player has direct control over the directional thrusters and the main engine.
    Additionally one could enable a speed limiter. This limiter would not allow the ship to exceed a speed the player picked.
    The speed limiter could provide a bit of help with staying within deltaV limits: the player could pick 45% or so of the available deltaV (there could be a hotkey for that, to avoid pulling an Epstein due to over-acceleration. The HUD could indicate this picked speed on the deltaV/speed bar.
    If the speed is higher than the limit, the ship would not do anything to slow down to avoid any inadvertent engine firing. It would only allow deceleration though.
    Rotation damping could be either on or off for this mode.
    This mode would likely be the most useful for for interplanetary transfers and other long flights, or orbital maneuvers, but would still provide the best hands-on experience for those who want to fly fully manually in every situation.

    The screenshot below shows the HUD in this mode, with speed limiter turned on and set to 45% deltaV:
  • Vector assist - similar to Set speed mode, but with some important changes. The ship would automatically engage directional thrust in order to shift the prograde vector to the direction the ship is facing, emulating atmospheric flight.
    The most important in my opinion would be for this mode to remove the overriding behavior from when the player uses the directional thrusters: the ship would still try to adjust the vector to the desired direction, either by:
    • adding the requested sideways thrust on top of the assist, and/or
    • overriding only in the directions which keys are pressed, but still keeping the others engaged in shifting the vector
    • doing some vector math shenanigans to shift the desired vector 45° away from the cross-hair depending on the key presses
    (Not sure which approach is the most intuitive and/or easier to implement).

    The speed limiter would also available for this mode:
    • off - the flight computer would only shift the direction, but wouldn't alter the speed you already achieved.
    • limit speed - this limiter setting would keep the ship from accelerating over the picked speed, but would not actively accelerate to it. So the player could accelerate with any of the thrusters. It would actively decelerate though, if the speed is above the limit.
      Could be useful for long transfers, at the cost of more fuel spent on course corrections.
    • maintain speed - aka cruise control - this limiter setting would be the equivalent of the current Set speed mode: the ship would accelerate or decelerate to maintain the speed picked by the player and would try to keep the vector at the ship heading. The most restrictive, but likely most intuitive mode.
    This mode would be most useful at lower speeds both in atmospheric flight and around orbitals. Not too useful for orbital maneuvers, and of limited use for transfers due to directional thrusters having worse exhaust velocity (which I don't mind, and would even like the ability to set them explicitly for each direction, but that's beside the scope of this).

    Possible additional functionality for the limiter: presets for some optimal speeds that could even be defined in the ship.jsons. These speed limits would be the levels where maneuverability would still be good. In my testing most of these would be very low though, between 50-200 for most ships, at least for docking and similar maneuvers.
    Similarly the stations could enforce speed limits in their jurisdictions eventually.
    Rotation damping would likely be always engaged in this mode (as is currently). Not sure if it would be useful to provide the ability for it to be off in this mode. Perhaps there could be a distinct roll damping here to aid with orbitals docking.
    To avoid sudden jerks at mode switches, the limiter would be set to whatever speed the player was flying at upon switching between Free and Vector assist mode.
  • Position assist - this is a new mode, intended for precision maneuvers like landing and docking. The player could set a speed limit, typically very low, up to a 100 m/s or so. Upon translation input, the ship would accelerate to this limit in the pressed direction, and would go back to a halt upon key release. Thrust limiter would limit the acceleration rate.
    The difference between this and the Vector assist mode is that the speed limit would apply only if the translation input is pressed, making precision maneuvers more easy. The player could set the limit to 10 m/s for example, after getting close to the landing pad, then use the WASD controls to hover exactly over the pad, then could use shift+F to slowly descend to a soft landing. And if any problem arises, they just need to release the controls and the ship would stop and hover.
    Mouse wheel would limit the amount of main thruster usage for this: at zero only the rear RCS thrusters are used, above zero the appropriate thrust would be applied from the mains.
    This mode would function relative to ship heading, so if the ship is not aligned with the ground, the descend would be wonky still.
    Additionally it could be relative to view direction, which would be useful for external docking, if that becomes a thing: the controls would be relative to the docking camera, reducing the mental gymnastics needed due to the collars looking sideways, up or top. (Might be disorienting for arbitrary view rotation though, not sure).

    To avoid unexpected and abrupt braking, this mode might be only selectable under a certain speed. Perhaps the limit speed, or the double/triple of it.
Useful keyboard shortcuts
  • Cycle between modes - currently B. Would skip Position assist if above it's limit (or 2x)
  • Select modes directly - the option could be there to map keys to directly access each mode without cycling. These keys could also cycle between their limit settings
  • Cycle Limiter settings - the option to cycle between limiter settings - off/limit/maintain for example
  • Temporary manual - would switch to manual while holding it. Space or alt for example. Could be the same as the mode selector button: if not released in x ms then it's a toggle. If held, it's temporary.
  • Faster and slower increase-decrease - alt/ctrl+mousewheel could change main engine thrust in larger or smaller increments (1%, 10% 20% increments)
Example of usage:
The player would be in Position assist upon launch, and would climb to a certain height before switching to the Vector assist mode, accelerating away from the port. During ascent, after the destination is selected, they would switch to Free flight mode and set the speed limiter to 45% deltaV. They'd do the transfer, accelerate, then decelerate towards the destination. Ideally their speed would be a couple of km/s at most upon arriving to the orbital station. They then switch to Vector assist again, setting the limit to about 1-2 km/s for approach, and would decrease speed as they get closer. They'd enter the station at a 20-50 m/s speed.

Alternatively the destination is a surface port. This time the would brake to a couple of km/s 100-200 km above the surface, then switch to Vector assist, limiter off, and brake when low enough, about 20 km from the port, they'd rotate around and head for the station in a level flight, 2-5 km above ground at about 0.5-1 km/s, and would slowly descend at the end. They'd fly roughly over the pad and stop, then switch to Position assist, set to about 10-20 m/s and adjust the their position over the pad. When the position is good, they'd slowly descend to the pad using 30-10% low thrust for a gentle touchdown.

Closing thoughts
Of course I lack the coding ability to test any of these, to make a proof of concept. But I do think that this article of shorts could start some discussion and I hope that it might be intriguing enough to inspire you. :)
I do think that something like this would make spaceflight in Pioneer more intuitive and accessible without introducing too much unneeded complexity. There is some complexity with the limiter settings, but I think it wouldn't be too hard to learn to use them.
What do you good people think? :)
Post Reply