Flight Model details

As author of the flight model engine that the WW2OL airplanes were based on, I find myself in a unique position to discuss how the WW2OL flight model works.  In this page, I will attempt to give a glimpse into the inner workings of the WW2 Online Flight Model.  I apologize ahead of time if I use words and concepts that are unfamiliar to most non-aerospace engineers. 

An airplane is a collection of parts, and that is the approach WW2OL uses for its flight model.  Each component of the aircraft has a function, and contributes to the overall behavior of the airplane.  An engine component generates power (in the form of torque) which is delivered to a propeller component, draws fuel from fuel tank components, and uses oil cooler and coolant radiator components to maintain operation.  An airfoil section generates lift, drag, and torque.  All components have mass and this generates a downwards force due to gravity, as well as resists acceleration forces and rotational torques.  A propeller component generates thrust from power delivered from the engine, and also generates propwash which affects components behind it. 

There are two aspects of each component:  Effects that are localized to just the component (like mass/weight effects or wing section lift), and effects that affect other components (like propwash, engine crankshaft torque, fuel supply etc).  In addition, certain pseudo-components handle multi-component effects (like the induced drag component that handles a wing's induced drag).

 

Engine components are modeled via an RPM/Pressure/swept volume model.  The total mass of air/fuel mixture ingested is computed per cycle, based on the RPM, the capacity of the engine, and the manifold pressure.  This directly determines the crankshaft power.  That power is then degraded for the crankshaft accessories (like the supercharger) and is then sent to the propeller as torque (torque = power / rpm).  The manifold pressure maximum is determined by the ambient air pressure, plus a boost due to any supercharging.  Each supercharger has a critical altitude, below which it can deliver the maximum pressure to the engine that it can be safely run at.  Each supercharger stage has a different critical altitude, and a different cost to the crankshaft power (the higher the critical altitude the more power it takes).  The downside of a higher altitude supercharger is that it gives you no boost benefit significantly below this critical altitude, yet still sucks up more power to run than a supercharger that has a lower critical altitude.  This is why, later on in the war, many engines came equipped with two-speed superchargers.  A lower-power-drain, but lower critical altitude supercharger speed would be used for low altitudes, and a higher critical altitude, higher power drain supercharger would be used at higher altitudes.  You can see this effect on the Spitfire, the Ju87B and the Fw190a4's climb charts.  All engines are limited to a maximum manifold pressure to simulate real-world restrictions.  Real life pilots would sometimes have to manage this themselves to avoid overstressing their engines.  This limitation is handled automatically for the pilot in WW2OL.  A supercharger typically can generate boost proportional to the outside air pressure.  Thus an ideal supercharger able to generate 2 atmospheres of pressure at 1/2 sea-level ambient pressure would be able to generate 4 atmospheres of pressure at sea level.  This is what I meant by limiting the manifold pressure, despite the fact the supercharger can generate higher pressures, the maximum pressure allowed into the engine is capped.  The ramifications of this only apply when the RPM is reduced from maximum.  This is because crankshaft superchargers typically can only provide boost above ambient pressure proportional to RPM squared.  Thus reducing RPM at the critical altitude will reduce boost pressure as well, but at lower altitudes, the supercharger will still be able to still deliver maximum boost.

The throttle works as a flow control (as it does in real life).  Fully opened, it allows the maximum flow into the engine.  Fully closed, it allows only enough air to allow the engine to idle on the ground.  Halfway open, and it lets about half of the possible air through.  An engine's ability to suck in air (and thus generate power) is proportional to it's rpm.  An ideal engine at 1500rpm can only suck in half as much fuel/air mass as that same engine at 3000rpm (and thus only generate 1/2 the power).  But, at 1/2 throttle, the power you get at 3000rpm is the same as at 1500rpm because the throttle limits the amount of fuel/air to 1/2 maximum.  It's not that simple in real life (or in WW2OL) because engines typically have more internal resistance at higher RPM, due to friction, and overcoming external air pressure on the undersides of the piston head when the cylinder pressure is below atmospheric.  Thus that same engine at 1/2 throttle would actually yield less power at 3000rpm than 1500rpm.  WW2OL's throttle is set up to allow maximum air flow at maximum allowed air pressure, and scales down the allowed flow proportional to the throttle setting in a roughly linear fashion.

The power is thus proportional to lower of either the mass flow allowed past the throttle, or the maximum fuel/air mass the engine can ingest.

Damage to an engine can occur due to overheating, oil loss, coolant loss, or physical trauma (from enemy fire usually).  Overheating is the end result from an oil or coolant leak, and will degrade and eventually seize the engine.  Damage can also directly impact power output, as this simulates damage to cylinders, intake manifolds, etc.

Engines require fuel to work, and radiators to cool oil and engine coolant (if liquid cooled, i.e. not a radial engine).  These components are modeled as separate components, and can be damaged.  Fuel tanks can leak, catch fire, and explode.  The effect depends on type (self-sealing tanks can seal minor damage, for example), the kind of damage (rifle bullets are less likely to blow the tank than a HE shell), and on contents (an empty tank obviously is in no danger of exploding no matter how hard you hit it).  Radiator hits can cause radiator or oil leakage that can eventually overheat and seize an engine if the engine isn't shut down first.  If an engine is hooked up to two radiators (like on the Bf109F), the heat dumping is distributed to both radiators, however, a hit to one will only knock out half the system, the other radiator can still cool the engine, just at half the heat dumping capacity.

 

All that power manifests itself as torque that drives a propeller.  A propeller is a series of wings (usually 3 propeller "blades", 4 on the Spit9) that spin through the air like a helicopter turned on its side.  They generate thrust the same way as wings generate lift, by generating positive angle-of-attack.  This creates drag, which is in turn countered by the crankshaft torque.  The higher the relative AoA, the more lift, but the more drag.  If the drag is less than the torque (via torque = drag force * moment arm), then the propeller (and engine) speed up.  If the drag is more, the propeller slows down.

All WW2OL aircraft are equipped with a constant speed propeller governor.  This is a device that governs the propeller angle in an attempt to maintain a certain RPM.  If the RPM is too low, it lowers the angle of attack to decrease drag, and therefore speed the propeller up.  If the RPM is too high, it raises the angle of attack to increase drag to slow the propellor down.  This works in most cases until the propeller runs out of travel (such as at idle on the ground), or gets into a deep stall situation (such as when you let the propeller slow down then initiate a high-speed dive).  This is why sometimes the prop won't speed up even with full throttle, the blades are too deeply stalled and are at minimum angle, and the controller isn't smart enough to realize that increasing angle will decrease drag and therefore accelerate the prop (since it's hard-wired to decrease angle when the prop is too slow).  The only solution in this case is to slow down the airplane to decrease drag on the prop so that it can build RPM back up again and get unstalled.  I suspect part of the reason some WW2 aircraft had manual prop pitch control despite the presence of the governor was to allow the pilot to resolve these situations by manually increasing the propeller angle.

Since the propeller governor tries to maintain RPM via angle change, you can use the propeller as a sort of airbrake.  If you idle the throttle, the governor will adjust prop pitch to a negative AoA so that windmill behavior will keep the propeller spinning at the desired RPM.  This is similar to blowing on a fan.  However, since the propeller is now at a negative angle of attack, instead of generating thrust that accelerates you, it is now generating thrust in the other direction that is braking you.  Just like a wing can generate lots of lift with little drag, a propeller can generate a lot of braking with relatively little drag.  (this same principal is why helicopters can lift their airframes with surprisingly little power requirements).  This means the relatively small negative power you get from idle throttle at high RPM from the engine is quite capable of significant braking.  If you want to maximize the drag on your plane during landing, maximize the RPM, and decrease the throttle until the RPMs start to drop.  Hold that slightly less RPM with whatever throttle setting is necessary.  You will be at maximum propeller braking, and generating more drag than you would if you simply let the propeller spin down (or shut off the engine).  This is also why propeller blades are "feathered" when power is lost rather than allowed to windmill, as they generate less drag when not spinning than when spinning.  Putting the prop blades edge on to the airflow helps, but the twist in the blade limits the amount of drag reduction, the main reason for feathering is more to stop the windmill "lift" that causes propeller braking.

Props do funny things when either flying at an angle other than along their axis, or are rotated.  The first effect is called P factor and is the reasons Helicopters can do stuff other than simply go up and down.  This is the effect where the blade sees a different angle of attack throughout it's motion in a circle.  On helicopters, there is an actuator doing this, on a prop this is due to the aircraft flying at an angle other than straight along the axis of the propeller disc.  The net effect is a sideways force and a torque effect.  Gyroscopic effects are a result of the way rotation works, and is described in detail via Euler's equations of motion.  If you've ever rotated a spinning bicycle wheel in Physics class you've experienced this effect.  Basically, when you torque a spinning object in some direction, it will resist and push back along another axis.  The effect in WW2OL is that when you pitch or yaw rapidly, the prop will impart a torque along the other axis (a pitch will cause the prop to torque along the yaw axis and vice versa).

 

Airfoils are the key to flight.  One does not need an engine to fly (go fly a glider for an example), but one does need airfoils to fly.  Their effect is modeled in two ways: local airfoil section effects, and global effects (like induced drag).

A 2d airfoil section generates a force, based on the angle of attack, the atmospheric density, and the relative velocity of the airflow.  This force vector is divided into a perpendicular (to the relative wind velocity) component called Lift, and a parallel component called Drag.  For a given wing section of a given area and type, the lift is proportional to the coefficient of lift times one-half times the velocity squared times the density of air in the vicinity of the airfoil section times the area.  Drag is computed the same way, except using a coefficient of drag.  A particular airfoil shape has a particular coefficient of lift for a given angle of attack, and a similar coefficient of drag.  This varies with Reynolds number, but for the airspeeds and wing sizes involved with WW2 era aircraft, this variation is rather small.  In addition, a torque moment is generated for a given airfoil shape and angle of attack, and this is computed in a similar way.  These coefficients can be plotted vs angle of attack to yield an airfoil shape performance chart.  These coefficient curve charts form the heart of the airfoil modeling in WW2OL.

Leading edge slats are computed by having a second airfoil curve for the opened position and the closed position.  The game swaps out which curve it's using based on the state of the slat.  The slat opens and closes based on the local angle of attack for the wing section it's a part of.  This is why you will often get asymmetrical slat operation, as the two slats might see very different angles of attack.

Control surfaces are modeled by computing an airfoil lift/drag/moment curve chart with the surface in the +10, 0, and -10 degree position.  The charts are then interpolated for the other control surface angles.  This was found to be accurate enough for WW2OL up to about +/- 30 degrees of deflection.  For slatted wing sections, the three charts are repeated for slats open and closed to model properly the increased responsiveness of ailerons at higher angles of attack when the slats are open.  The decision to model ailerons this way results in good stall control behavior, where dropping an aileron on a wing near stall can cause that wing to stall early and cause roll reversal effects.  Try flying a 109 or a Fw190 right at the edge of stall, then yank the stick to one side.

Flaps modeling isn't as sophisticated as control surface modeling, instead an analytical approach is used to compute the changes to the lift, drag, and moment of the airfoil section, based on empirical data to determine the constants.

WW2OL computes the aerodynamics of the aircraft by dividing up the wing and control surfaces into airfoil sections, and computing them locally.  It handles the combined effects, like induced drag, separately, using results from the individual wing sections.  Each airfoil section has it's own relative wind velocity vector, which is computed by taking the airplane's overall velocity, and factoring in the rotation of the aircraft.  Thus a rolling airplane is going to affect the outer wing sections more than the inner sections due to the rolling motion.  The lift, drag, and torque moment is computed, with a correction factored in for "sideways" velocity (the wind component that is perpendicular to the mean chord line of the airfoil section).  These values are then added to the overall vehicle force/torque, with the forces adding a torque to the vehicle based on their moment arm of the center of force in the component to the center of mass of the aircraft.

Combined effects, like induced drag, are determined afterwards, taking into account properties like the aspect ratio of the wing, and the planform shape (elliptical wings generate less induced drag than a square wing, for example)  These force effects are then added to the overall vehicle force/torque sum, and a torque is computed based on the offset force from the center of mass (torque equals force crossed into the radius vector from the center of mass).

Propeller wash effects are applied to the affected wing sections in the form of  a vector sum of the blast velocity and the normal airflow velocity.  The blast velocity is tilted up or down based on the position of the wing section relative to the propeller (left wings see an increase in angle of attack as a result on clockwise spinning single-engined planes, while the right wing sees a decrease).  The effects then occur naturally as a part of the system.  Incidentally, this is one of the two reasons you can induce snaproll on approach if you're near stall and slam the throttle forward (the other is engine torque).

Fuselages and non-wing sections are modeled as inefficient wing sections.  This allows a good approximation of their effects upon flight (such as sideforce when slipping, extra lift from the fuselage when turning, and drag effects).

Battle damage has several effects.  The primary one is the disruption on the airflow.  Airfoil sections are carefully designed to get maximum lift for minimal drag.  Disruptions to their design, say from a bullet hole or a cannon hit, drastically affect the lift characteristics of the airfoil section.  In addition, drag tends to go up as parts of the wing skinning are exposed to the airstream.  You can see this in WW2OL when you take wing damage to one wing, and have to use a lot of aileron control to keep flying level and not rolling in the direction of the damaged wing.

 

With regards to the airfoils, airfoil type makes a big difference.  A NACA 23012 airfoil section is going to behave quite differently from a NACA 0016 airfoil section.  In general, thicker airfoil sections have higher lift coefficients (read: more lift for a given area), higher stall AoA, and gentler stall characteristics.  However, thicker airfoil sections have more parasitic drag, so when you don't need all that extra lift (such at high speed), you're being slowed down more than with a wing of thinner section, but similar area and plan form (this particularly hurts planes like the Hurricane and Ju87).  Some airfoils are symmetrical (like a NACA 0012), others are not (like most airfoil sections found on airplanes).  Symmetrical airfoil sections fly the same in both the positive and negative AoA, they generate the same lift and drag at -10 degrees as at 10 degrees, the lift is just pointed in the opposite direction.  Asymmetrical airfoil sections perform better in one AoA direction, allowing them some of the benefits of a thicker airfoil, yet not having as much drag as that thicker section would yield.  Examples of thicker winged aircraft are the Hurricane, Ju52, Ju87, which are all excellent turning airplanes as a result.  Examples of thin-winged aircraft are the Spitfire, P38, Fw190.  Compare the Spitfire to the Hurricane, you'll notice you can pull much more AoA than on the Spitfire before stalling.  Thickness in this case is a ratio of how thick the wing is to how long it is in the forward-backwards direction.

Each plane in WW2OL is put together using the best available information on the airfoil sections for the wings/stabilizers.  For example, many aircraft have a thinner airfoil section near the wingtips than in the wing roots (since structurally the wing roots need to be thicker to take more load).  Some have less incidence angle near the wingtips to reduce the tendency for the wingtips to stall before the wing roots (due to lower stall AoA as a result of a thinner airfoil section).  All this contributes to the "feel" of the aircraft, especially near the edge of the envelope.  Some planes (like the Hurricane) are very gentle near the stall, some are not.  The wing design affects this.  In general, smaller thinner wings are better for high speeds, thicker bigger wings are better for turning.  Most airplanes are a compromise between the two extremes.

If you've ever flown at high speeds in WW2OL you'll notice that the AoA is often negative.  This is because most planes tilt the wing up a bit relative to the fuselage (and the AoA is measured along the front-back axis of the aircraft).  The term is "incidence angle" of the wing.  The usual angle is around 1-2 degrees.  However, at high speeds, often only a fraction of a degree AoA is needed from the wings to maintain 1g worth of lift, usually due to the asymmetrical airfoils, but the net effect is that in order to align the aircraft so that the wings generate exactly 1g of lift, the airplane must fly slightly nose-down. 

 

Firing your guns has an effect upon your aircraft too.  The recoil imparts a momentary force on the airplane in the area of the weapon which can slow you down and torque the aircraft.  For example, if a Hurricane Mk II's left wings are knocked out, firing the right wing guns will cause significant yaw.  In addition, firing the weapons will slow you down.  In an extreme situation, if you are right at the edge of a stall, firing your weapons can push you over the edge.

Dropped ordinance, parts flying off of your aircraft, and consumption of stuff like fuel and ammunition change the rotational characteristics of the aircraft and its  overall weight.  Each flight-model cycle, the vehicle's components are summed up in both mass and rotational inertia and a new center of mass is determined.  This is why an airplane in WW2OL feels more "spritely" after dropping some heavy bombs.  This is also why some planes, like the P39, change their pitch handling characteristics slightly after expending their nose-mounted ordnance.

 

The philosophy of the flight model was to create a system where you could research the plane, assemble the components just like they were arranged in real life, and the plane would behave just like it did in real life.  To this end the flight model was rather successful.  However, no model is perfect, and WW2OL's is far from being spot on in accuracy.  Thus there is a "tweaking" phase where the flight model is tweaked to match real world performance.  This is what the Wind Tunnel was created for, to allow automated benchmarking of the aircraft's performance.  Tweaks can involve adjusting the properties of the fuselage to get the airplane's stall and drag characteristics right, to tweaking the propeller or engine to get the correct thrust, to adding ballast mass to get the overall mass right and center of gravity in the right spot.  Real world flight data is researched, and the model tweaked until it matches the best assessment possible for the real plane's behavior (real-world test data is notoriously inconsistent and often plain wrong).  This phase is where flight model creation can become more of an art than a science. 

 

Handling of an aircraft is a combination of aerodynamics and control capabilities.  The aerodynamics part is described above in detail.  The control, or how a joystick input ultimately results in a control surface movement is a whole subject in itself.

When you push or pull on a control stick in an airplane, the control surfaces don't suddenly teleport into a new position.  WW2OL models control surface movement differently than many other flight simulations.  The joystick is a "force" request.  The flight modeler decides on how much force a pilot can exert, say 50lbs of side pressure to move the ailerons.  Control surfaces generate backforce when deflected that is a function of their deflection.  This has the following effects:  1) if the stick force is greater, the control surface will accelerate in the more deflected direction.  2) if the stick force is less, the control surface will accelerate in the opposite direction.  Obviously, the backforce will help in neutralizing the surface much more than in increasing the deflection.  This is why it can take some time to deflect the control surface, but it usually snaps back quickly to the neutral position when the control is released.  You might take a bit to accelerate your roll at speed, but you can usually stop it pretty quick (this makes 4 point and 8 point rolls easier to do).  The backforce is why this happens.  The backforce impedes further deflection, but "helps" you push the surface back to neutral.  What is done is the control surfaces are modeled as a dynamical system, with the inputs being the stick force and the control surface force.  This produces an equation of motion which is integrated with respect to time to generate control surface positions.  Damping is thrown in to model natural system damping, and limits on control surface movements are in place to model other factors that limit real world control surface movement (even with little backforce it still takes a finite amount of time to deflect a control surface).  Backforce is a function of angle, ambient air density, and airplane velocity squared.  In addition, the stick forces are scaled at slow speeds to prevent a small control stick deflection from pegging the control surface.

Each aircraft has a maximum speed at which the pilot can deflect the control surface due to backforce.  Above this speed the pilot has insufficient strength to get full deflection.  If a particular aircraft has a 50lb full aileron deflection speed of 300kph, that same aircraft will get approximately 1/4 the deflection at 600kph, given a linear backforce vs angle of deflection curve and an ideal situation.  You can see this in the roll charts where the roll rate peaks then drops off on an inverse squared curve as the speed builds.  The above method of modeling control surface movement automatically models this properly, all that is needed is the maximum deflection maximum speed for the ailerons, the elevators, and the rudders.

Trim (except for German fighters) is modeled by adjusting the center of the "neutral" point of the control surface.  Basically a little tab changes the backforces so that the no-force point is at a different angle depending on the tab's position.  Many aircraft decreased backforce by mechanically linking a tab to move opposite the surfaces movement, thus easing backforce.  The net effect is to increase the maximum control surface maximum speed and responsiveness, but the general shape of the roll vs speed stays the same.  Spring Tabs, as found on later model Spitfires, worked differently.  Rather than mechanically deflecting the tab based on control surface angle, it changes the angle based on control stick force.  Thus at 800kph when you can only deflect the control surface 20% of max (and thus mechanical tabs would only deflect 20% themselves), spring tabs can get full tab effectiveness as the pilot muscles the stick.  This is why the Spitfire 5/9 has a different roll vs speed curve than other fighters.

German fighters use a "flying wing" style trim where rather than a tab, the whole stabilizer angle is adjusted.  This means that the tail properties as a whole change with trim change, not just the neutral point of the control surface.  If you dial in too much nose down trim on a Bf109, you will be unable to stall.  If you dial in too much, you will have trouble not stalling.  This can be useful in dive recovery when the elevators lose most of their effectiveness.

The Spitfire (and to a lesser extent the Bf109) suffer from wing twist.  The thin wing of the Spitfire twists due to torque moment of the wing as it generates lift.  This is modeled in WW2OL by adjusting the angle of attack of the wing section based on the torque the wing section is generating (as what happens in real life).  The net effect is that at high speeds, the deflection of the control surface twists the wing in the opposite direction, limiting the amount of lift change due to the aileron movement.  In fact, beyond 477mph on the Spitfire Mk I, roll control actually reverses (right aileron will roll the plane left).

All this adds up to the way the aircraft "feels" when flying.  In my opinion, this is one of the most crucial aspects of a flight simulator.  If the control system isn't modeled right (from control stick to control surface), the flight model will feel "wrong" to a real pilot regardless of how accurate the airplane's other performance characteristics are.  This is why the Hurricane feels so gentle in maneuvers, while the Hawk feels "snappy" and the Bf110C feels like it wallows around during aggressive maneuvering.  And unfortunately there is very little information on this "feel" character of most of the planes (and a lot of it is plain innaccurate for new aircraft due to being written up on 60-year-old planes).  In my (biased) opinion, control feel and how WW2OL models control response is what sets its flight model apart from other flight simulators.  It is always satisfying to hear when someone says that WW2OL's flight model has a better "feel" than another sim.

Another factor in handling is high-speed aerodynamic compression effects.  When the airfoil starts to approach transonic speeds, parts of the airfoil start to go supersonic before the airplane does.  This is because in order to create lift, airflow must pass one side of the airfoil faster than the other side.  As this supersonic part of the airflow grows (sort of like a bubble on the wing), various effects occur.  Lift and drag characteristics change, and the center of lift on the wing can migrate.  The effect of the drag is to limit the top speed of the aircraft (esp. with respect to the propellor), while the effect of the center of lift is to change the nose-down tendancy of the aircraft.  The most obvious effect of flying too fast is when this bubble grows so big that it starts to cover part of the control surfaces.  When this happens, the control surface either flutters or clamps down (preventing deflection of the control surface).  The P38 was notorous for the flutter effect, with the tail section often coming apart in a really high speed dive.  WW2OL simulates only the clamping part.  Beyond a certain speed, various control surfaces suddenly lose effectiveness.  Dive an aircraft from 30,000ft straight down to experience this.  The solution is to either get to lower altitude (where the speed of sound is faster), or slow down.  Compression effects are based on mach speed which varies with atmospheric temperature (which varies with altitude).  This compression effect is very different from the general degradation of control surface effectiveness, in that it comes on suddenly (the pitch-down effect from center-of-lift migration is much more subtle), while stick force increases from increasing speed gradually increases.  Typical compression effects don't occur until faster than mach .65 or so (about 470mph on the deck), and vary considerably from plane to plane (the Spitfire, for example, had an unusually high tolerance for speed with respect to compression).

 

For an airplane to be simulated properly, it must have a 3D position and velocity.  This is often referred to in Aerospace Engineering as a state vector.  It's mathematical derivative (ugh, calculus!) controls how this state vector changes, and the derivative of position and velocity is velocity and acceleration.  The flight model is a glorified set of equations that affect this state vector, this is sometimes called the Equations of Motion, which describe the acceleration of the center of mass of the vehicle.  The acceleration affects the velocity and this in turns affects the position.  To propagate the state vector through time, a numerical integrator is used.

Acceleration is determined by computing the overall force imparted upon the aircraft, from wings, weapons, gravity, terrain, propellors, etc.  This force is divided by the mass of the vehicle to determine the instantaneous acceleration.

Rotation is similar to position and velocity, except the units are rotation rates and orientation.  In English, those are the attitude of the vehicle, and how fast it is rotating.  The change in rotational rates is the acceleration of the rotation rates, which is proportional to the torque via Euler's equations of motion, whose details are beyond the scope of this web site.  Changes vs time are integrated using a numerical integrator.

The numerical integrator used in WW2OL (at least the one it had when I left the company four years ago) is a 2nd order Trapezoid rule integrator.  A common integrator used in scientific applications is a Runge Kutta 4th order integrator.  This yields good accuracy, but has a major drawback: it requires several derivatives per timestep.  Due to a number of reasons, the WW2OL flight model had a very expensive (in CPU time) derivatives calculation routine.  In English, the forces and torques calculation is very expensive (especially when a vehicle has 30+ components).  We achieved a rate of 50 cycles per second for the flight model loop for the target computer of the time, meaning that the maximum timesteps the flight model could use using a 4th order Runge Kutta integrator would be 12.5.  Obviously waiting for 1/12.5th of a second before seeing responses to your control stick inputs would be unacceptable (imagine seeing a movie at 12.5 frames per second), so an integrator was needed that didn't require as many intermediate steps.  Ideally, an integrator that used only one derivative per timestep would maximize the responsiveness of the flight model to user input, however, the fewer timesteps determined, the lower the order of the integrator, and worse the results.  An implicit numerical integrator called the Trapezoid rule uses the last and current derivative in order to improve the accuracy of the integration while limiting the number of derivatives needed to one per timestep (it actually uses two, the second is from the last timestep).  This gives better accuracy (the technical term is a higher order truncation error) than the typical 1st order Euler integrator that also used only one derivative calculation per timestep (not to be confused with Euler's equations of Motion).

An example of a simple integrator (Euler integrator in this case) is to take the derivative and multiply it by the timestep to get a change in the variable.  Say you're updating an airplane's position and you have it's current velocity.  Multiply the velocity by the timestep, then add the result to the position.  You now have a new position.  This computed position is only an approximation of the actual result if the change was continuous.  Higher order integrators reduce the error and more closely represent a continuous situation (such as real life).  In addition, smaller timesteps also improve the accuracy of the integration.

The flight model runs at a rate of 50 cycles per second, with a time propagation of 50 timesteps per second.  This means the flight model works exactly the same regardless of machine or frame rate.  In order to produce a smooth visual effect, and to determine exact position and orientation on each render frame, the position and orientation of the vehicle is interpolated between the last computed state vector (last flight model cycle), and the current time.  This principal is similar to how the smoothing code interpolates between updates received from the host on another vehicle's position/orientation (which is at best, three to four updates per second and can be as low as one update every two seconds).  This means you can fly by a target at 20fps, 50fps, 85fps, or whatever the current frame rate and the view looks smooth (as smooth as the frame rate).  However, the flight model is only updated at 50hz, meaning it's average response time is 1/100th of a second and can be as low as 1/50th of a second if you get unlucky, but this means it has that response time even at frame rates lower than 50hz.

 

If you survived reading through all that, congratulations!  You now have a greater insight as to the inner workings of the World War II Online flight model.