Helicopter Flight - AntonIT99/Flans-Mod-Ultimate-2.0 GitHub Wiki

Helicopter flight and animation

Helicopters and VTOL craft in hover mode use a rotorcraft simulation on the server. VTOL aircraft in plane mode continue to use the fixed-wing simulation.

Flying

The throttle lever acts as collective: halfway commands enough lift for a level hover once the rotor has reached operating speed, provided the engines can lift the aircraft. Raise collective to climb and lower it to descend. Like planes, the increase/decrease keys adjust a maintained throttle: releasing them keeps the chosen setting. HeliThrottlePull is accepted for pack compatibility but no longer pulls the lever toward halfway.

Pitch and roll tilt the rotor thrust with the aircraft. Tilting accelerates the helicopter horizontally and reduces vertical support, so maintaining altitude requires extra collective. Yaw controls heading independently of forward speed. Forward/backward pitch determines forward/backward acceleration. Throttle also sets a horizontal speed ceiling that rises linearly from zero at 0% to the full configured maximum at 100%, matching planes' default speed response (50% throttle allows half maximum speed). Pitch produces horizontal acceleration below the hover setting too; reducing throttle slows existing motion smoothly. Pitch still determines direction and actual speed may remain below the ceiling. A helicopter resting on its skids or gear cannot pitch at zero throttle; pitch control resumes when collective is raised or the aircraft leaves the ground. On landing at low throttle, its pitch and roll ease back toward the initial resting attitude, with the skids or gear still following the terrain. A fast downward ground strike uses the same crash damage and possible airframe loss as a plane.

A level helicopter produces no horizontal thrust and brakes residual drift over roughly two seconds. With roll input neutral, rotor authority supplies a very slow self-leveling moment toward horizontal; keyboard or mouse roll input overrides it immediately. A complete real-world profile scales the rate from lifting- surface span and mass, while other craft use a conservative default. Set common config enableAircraftRollSelfLeveling to false to disable it globally. Vertical damping helps throttle changes reverse climbs and descents.

The rotor takes about three seconds to spin up and five seconds to coast down. Lift and control authority depend on rotor speed squared. Switching off the engine removes powered lift; the visible rotor can continue coasting. This is a semi-realistic flight model, without a full autorotation or vortex-ring simulation.

Destroyed main rotors reduce lift and control authority. Destroying all rotors or the blades part removes lift, including at the hover setting. Losing the tail or an authored tail rotor produces an uncontrolled yaw on craft that need anti-torque control. Explicit tandem/coaxial craft without tail rotors do not depend on a conventional tail rotor to cancel torque.

Rotor strikes

The blades part box is the main rotor's hitbox. While the rotor is turning (helicopter or VTOL hover mode, above roughly 15% rotor speed), the server treats that box as a disc spanning its width and depth and as thick as it is tall, and checks it every tick against solid blocks. The check does not depend on how fast the aircraft moves: a hovering or landed helicopter whose disc touches a slope, a wall or a tree is struck too.

  • Soft blocks (hardness 0.2 or less, such as leaves and snow) are chopped. Each costs the blades about 1% of their health and 3% of rotor speed at full speed. The block is broken only when driveableCollisionsBreakBlocks is enabled; otherwise the rotor keeps grinding against it.
  • Anything harder (soil, wood, stone, unbreakable blocks) destroys a rotor turning at operating speed. A rotor still spooling up or winding down takes a share of that damage, scaled by rotor speed squared and block hardness.

Consequences apply in the same tick. Rotor speed drops at once, and lift and control authority drop with it. The airframe is thrown toward the struck side of the disc, and the rotor's momentum yaws the fuselage. Forward momentum is also reduced. If the blades part is destroyed, all lift is lost. Tail rotors and craft without a blades part box are not checked.

Historical parameters and legacy fallbacks

Historical values are read from the existing resolved vehicle specification; there are no new content-pack keys.

Parameter group Helicopter behavior Fallback
RealMassKg, RealEnginePowerKw, RealRotorDiameterM Available rotor thrust comes from shaft power and swept disc area, relative to aircraft weight. Installed engine speed remains an engine upgrade multiplier. Legacy MaxThrottle, MaxNegativeThrottle, MaxThrottleInWater and installed engine speed determine the full-collective lift allowance.
RealRotorCount Multiplies disc area and identifies explicit multi-rotor layouts. One rotor. Authored multiple HeliPropeller entries also identify multi-rotor layouts for anti-torque behavior.
RealMassKg, RealEngineThrustKn Supplies direct lift-engine thrust for VTOL craft when the shaft-power/disc group is unavailable. Legacy lift allowance.
RealMaxSpeedKmh Calibrates horizontal drag to the maximum speed of sustained level flight. Horizontal drag derived from legacy Drag.
RealClimbRateMs Calibrates upward drag so full collective approaches the published climb rate when the aircraft has enough lift. Vertical drag derived from legacy Drag.
Directional turn, pitch and roll modifiers Retain authored control rates with rotor-dependent authority. A complete aircraft profile also contributes its mass/span inertia response. Legacy directional defaults and response.

Power-derived lift requires the whole mass/power/diameter group. Speed and climb rate can be used independently, even with incomplete historical data. Wing area is never substituted for rotor disc area in helicopter lift. Published speeds use realisticPlaneSpeedScale; the global plane speed cap still applies. forceLegacyPlanePhysics disables historical force and drag inputs and uses the legacy parameter fallbacks within the rotorcraft simulation.

The model retains legacy helicopter gravity and half-collective hover controls, with a maximum power-derived lift allowance of 2.5 times weight for playability. There is no fixed-wing takeoff-speed requirement in hover mode. An underpowered aircraft cannot hover merely because the collective is halfway.

Model animation

Main rotors turn about heliMainRotorOrigins on their Y axis; tail rotors turn about heliTailRotorOrigins on their Z axis. The origins retain legacy model units and are transformed together with the meshes by model scaling.

heliRotorSpeeds retains each main rotor's authored speed and direction. Missing entries default to one. Fractional and negative ratios use continuous phase, avoiding jumps when the base rotor completes a revolution. Rotor speed is governed while the engine runs instead of reversing or nearly stopping with collective changes. Each rotor mesh uses the ordinary legacy TMT rotation order, even if the airframe sets oldRotateOrder.

Rotors attached to destroyed parts are hidden, with blades and tail also controlling their corresponding rotor groups. Animation runs locally from the synchronized engine and damage state; physics remains server-authoritative.