WARBIRDS.IO Dev Log

← All posts

The thumb that couldn’t roll

A trusted tester came back from a phone session with a puzzled report: “I can’t seem to control roll. It feels like I only have rudder and elevator.” He was being generous. The instruments say what he actually had was a slow-motion graveyard spiral with a FIRE button on it.

Turning the feeling into numbers

On touch, your left thumb used to drive the same aim cursor mouse players steer with: the stick deflected a mark on the screen, and the flight assist pointed the nose at it. Reasonable on paper — it’s the scheme War Thunder’s mobile edition defaults to — so before touching a constant we did what this codebase always does: built a headless probe that drives the real control chain (stick → deadzone → expo → cursor → chase-camera ray → assist → flight model) and logged what the airframe does, then flew the real client on an emulated phone to check the probe against reality. The two agreed to within a degree: probe said a held full-right stick peaks at 125.4° of bank, the live client measured 125°.

And that’s the bug in one number. Hold the stick hard right and the wings wound 35° past vertical. The camera turns with the plane, so the aim mark the assist chases stays pinned ~30° off the nose forever — an unreachable setpoint. The assist’s answer to an unreachable setpoint is to keep rolling toward it, and once past 90° its faithful “pull toward the mark” drags the nose below the horizon. In the phone playtest a held full-right stick took a Sparrowhawk from 577 m to the dirt in eight seconds, nose 50–60° down the whole back half. Across the fleet the probe scored the old scheme at 500–900 m of altitude lost per 8 s of held turn, with a quarter of the steering carried by the rudder. Small deflections, meanwhile, mostly nudged the nose sideways and self-levelled — which is exactly “rudder and elevator” if you never slam it.

A thumb is a stick, not a mouse

War Thunder’s own answer to roll on touch isn’t a raw aileron axis either — it’s an instructor that banks and holds: their manual-roll mode sets a target bank angle the autopilot captures, their gyro rolls the plane by tilting the device, and dedicated roll buttons sat at the top of the community’s wish list until they shipped. The pattern is consistent: sideways input means “roll into a turn and stay there,” and software keeps it coordinated.

So the virtual stick stopped pretending to be a mouse. Sideways deflection now commands a bank angle the instructor captures and holds — half stick is a 26° lean, full stick is an 80° knife-edge carve at the airframe’s G ceiling — while the vertical axis keeps its pull/push meaning with the same stall-and-G instructor as before. A vertical-speed loop (the autopilot’s own, with its phone-latency-proof gains) pins the flight path level through the turn, a feed-forward term supplies the extra pull a steep bank needs before the loop can sag, and the rudder is reduced to a breath of coordination that fades out past a shallow bank. Release the thumb and the same loops roll you wings-level. Fine aim keeps its cursor semantics on the guns and turrets — flying is stick semantics now, aiming is still aiming.

Before and after, same probe

Sparrowhawk, full right stick held eight seconds, throttle firewalled:

The rudder’s share of the steering fell from 22–29% to 3%. That single ratio is the tester’s sentence, quantified: the old scheme really was flying him on rudder; the new one flies on ailerons you can feel. Desktop mouse aim, keyboard, and the flight model itself are untouched — the server-and-browser parity check still passes, because the instructor is client-side steering, not physics.

The confession

The probe’s first fleet run nearly sent us down the wrong road: it showed every scenario — old assist, new assist, even raw aileron — bleeding hundreds of metres, which made the new controller look like it couldn’t hold a turn either. The culprit was the probe itself: its warm-up flew the old cursor assist hands-off, which can’t trim level on its own (in the live game, auto-trim and the autopilot quietly cover for it), so every scenario started in a 60 m/s dive it then had to climb out of. One honest warm-up later the after-numbers snapped into focus. The probe that catches your bug first has earned its keep; it lives in tools/ next to the others now.