FS Force



Ground Effects


FS Force comes with three basic ground effect profiles, however, you can create your own :  

  • First, make a copy of one of the existing ground op files, giving it a new name.  This will now show up in Profile Manager as a new ground op profile.

  • Next, edit the copied file using any text editor, and make any desired changes.

  • The easiest thing to do is to copy and paste sections of other profiles into your new one, and then make any necessary minor changes.  

  • There are three basic components : Run-up vibrations, regular vibrations, and bumps.  Keep reading for a description of each.


The following block of code is from the file Run-up Vibs.txt, and implements a basic run-up vibration, which is a vibration that scales according to the power output of your engine.

[Vibs RunUp]

You can copy this verbatim if you want, or make minor changes.  Common things you might want to change might be the period of the vibration, the strength (magnitude), or the beginning and ending speed at which this effect is active.  See below for a detailed description of each command line.



Regular vibrations are similar to run-up vibrations, except this vibration does not depend on the power output of the engine.  It is simply active within the specified speed range.  Here is an example take from Run-up Vibs.txt.

[Vibs High Speed]

Command Specifications - Run-up & Regular Vibrations

The section begins with a title in square brackets, which must be unique from the titles of other sections in this file.  The ID simply identifies this as a vibration definition.  

The Waveform key specifies what type of waveform will be used for this vibration.  The only valid value here is "Sine"

GroundPhase defines the phase of ground operations during which this vibration will be enabled : Landing (L), or Taxiing (X).  You can combine them, as in the example above, to indicate the effect is enabled during all ground operations.  The Landing phase is anytime after a landing, until the speed drops below 25 knots, and the Taxiing phase is all other times.  There is a third option, Power Rated (P), which specifies that the vibration is active any time the engine power output is above 90% and the aircraft is on the ground.  This can be used to implement run-up vibrations.  Generally the P option would not be combined with the other two options.

The SpeedStart and SpeedEnd values define the ground speed range over which this vibration will be active.  

The BeginPeriod value is the period in milliseconds of the vibration at SpeedStart, and EndPeriod is the period of the vibration at SpeedEnd.

Similarly, the BeginDirection, EndDirection, BeginMagnitude, and EndMagnitude values are the direction and magnitude of the vibration at the beginning and end of the speed range.  Direction is measured in degrees, with 0 being at 12 o'clock and 90 being at 3 o'clock.  If the two directions are different, the direction will rotate from the begin value to the end value in a clockwise fashion.  Magnitude is measured in percent.

If you want the vibration to fade in and out gradually, set the RampUp and RampDown values to positive, non-zero values.  For landing and taxiing vibrations, the ramps are measured as a percent of the full speed range.  For instance, if SpeedStart is 40 and SpeedEnd is 100, the entire speed range is 60, so a RampUp value of 25 would cover 25% of 60, which is 15.  So the vibration would "ramp up" between the speed of 40 and 55 knots. For Power rated vibrations, the ramp values are in milliseconds.



There are regular bumps, and random bumps.  Regular bumps are very CPU friendly.  The joystick driver does most of the work.  FS Force only needs to check a couple of times a second if any of the parameters of the bump pattern need to change, based on your current ground speed.  Random bumps are more CPU intensive, especially at higher frequencies, because each bump needs to be individually programmed by the CPU.  Care must be taken when designing a random bump pattern, that the frequency does not get to high, otherwise you will start to lose frame rates.  A general guideline is to limit the frequency to 8 - 10 bumps per second, depending on the speed of your CPU.

A bump becomes random when any of the following parameters are non-zero : SizeVar, MagnitudeVar, SpaceVar, and DirVar.  (Var is short for variation).  If they are all zero, it is a regular bump.

Note that as of this writing, Saitek joysticks do not support regular bumps, therefore you will have to simulate regular bumps using random bumps.  Just set the "randomness" to the minimum possible value, so it seems regular.

Following is an example bump taken from Run-up Vibs.txt.  This is a regular bump.  


Command Specifications - Bumps

SpeedStart and SpeedEnd have the same meaning as with vibrations.

BumpSize is the size of the bump.  The unit of measure roughly corresponds to inches.  A good value for pavement grooves is around 5 to 10.  To simulate a large dip, use something in the range of 100 to 200.  If you want random bump sizes, set SizeVar to a non-zero value.  The actual bump size will then be computed as <BumpSize> +/- <SizeVar>.  So if BumpSize was 10 and SizeVar was 3, the size of the bump would be randomly selected from the range 7 - 13.

SizeCompression modifies BumpSize according to your ground speed.  Under normal circumstances, as your speed increases, it takes less time to pass over the bump, and the bump feels "sharper".  In fact if you double your speed, it will only take half as long to pass over the bump.  SizeCompression changes that relationship.  If SizeCompression is less than 1, the time it takes to pass over the bump will not decrease in the same proportion as your speed is increasing.  

This setting becomes useful when you have pavement grooves that you want to use over a wide speed range.  You might choose a bumpsize that feels good at low speed, but by the time you get to 100 or more knots, the "pulse" that you feel from the joystick has shrunk to a barely perceptible "tick".  In this situation, you might choose a SizeCompression value of 0.5, or maybe even lower, to make the bumps at high speed feel more like they did at lower speeds. You're essentially enlarging the bumps the faster you go.

To get a feel for what this setting does, set it to 1.0, and compare how bumps feel at low speeds vs high speeds.  Then try setting it to 0.3, and notice how the bumps at high speed feel a lot more like the bumps at low speed.

Magnitude  and MagnitudeVar determine the strength of the pulse felt as you pass over the bump.  Set MagnitudeVar to non-zero to randomize the magnitude.

Spacing and SpaceVar determine the distance between each bump.  The unit of measure is feet (roughly). To randomize the spacing, set SpaceVar to a non-zero value.

SpeedCompression is similar to SizeCompression, except it applies to the spacing between bumps, not to their size.  In normal situations, increasing your speed reduces the time it takes to reach the next bump.  For instance, if you were to double your speed, it would take only half as much time to reach the next bump.  SpeedCompression changes this relationship.  If you set SpeedCompression to a value less than 1.0, the time it takes to reach the next bump will not decrease in the same proportion that your speed is increasing.  With a value of 1.0, you might find that at high speeds the bumps come so fast its almost like a vibration.  Setting it to less than 1.0 allows you to "stretch" the effect out to a higher ground speed.  If you apply too much compression, though, it will reduce the sense of accelerating and decelerating.

To get a feel for what this setting does, set it to 1.0, and compare the spacing between bumps at low speeds vs high speeds.  Then try setting it to 0.7, and notice that at high speeds the bumps don't crowd together as much.

Direction and DirVar are used to set the direction of the pulse you will feel from your joystick as you pass over the bump.  If you want the direction to be randomly selected over the entire 360 degrees, set Direction=180 and DirVar=180.

BrakeOnDir is an optional parameter that can be used to set the direction of the pulse when you are applying the brakes.  This is especially useful for pavement grooves.  When the brakes are on you might find that you can no longer feel the pavement grooves.  This is because the forward pull from the braking force is acting in the same direction as the pulse from the bump, and the pull tends to blank out the pulse.  By changing the direction of the pulse during braking, it is possible to still feel the pavement grooves even while braking.  If you normally have your bump direction set to 0, you might want to try a value of between 70 or 90.

Ramping: all bumps ramp in and out over a 1.5 second period.  That is, when the beginning or ending speed value is reached, the effect ramps up or down as appropriate, with the ramp lasting 1.5 seconds.

GroundPhase is the same as for vibrations.







FS Force