iFeelPixel homepage Activated with Immersion TouchSense Technology

Spring - Tactile effects library

A Spring is something that can be stretched or compressed. Springs come in all forms ranging from steel coils like those found in a ballpoint pen or a car's suspension to diving boards to things like rubber bands and bungee cords. Some springs like a steel coil or diving board can both be stretched and compressed while other springs like bungee cords can only be stretched. Stronger or stiffer springs require more force to stretch or compress than weaker springs. And all springs behave linearly, meaning that the further you stretch or compress the spring, the harder it becomes to stretch or compress the spring even further. With no force acting on a spring, it will want to stretch back to its equilibrium length.

The Spring effect works on the full force feedback joystick, steering wheel, gamepad and mouse. It does not work on the tactile feedback mouse. The various properties of the effect allow you adjust things like how strong the Spring is, how stiff it is, where the equilibrium point is, and whether it pushes or pulls you or both.

One use of a Spring effect is to help guide the user's hand. A mouse can be drawn to a particular location on the computer screen, and a game controller can be drawn a little or a lot to a particular position. By moving the center or equilibrium point of the Spring around, you can cause the device to move around by itself, or at least physically guide the user's movements. Using this method, you can implement a pretty cool autopilot that moves, flies, or drives by itself. You can also give the user hints by nudging the device in the proper direction. By adjusting the parameters slightly, you can use a Spring to simulate the feel of being pulled into and getting stuck in a black hole or some kind of gravity field. On a mouse, Enclosure or Ellipse effects can also help guide the user but are usually confined to acting on a certain area of the screen rather than acting on the entire screen like a Spring effect.

On joysticks, steering wheels, and gamepads, you can use a Spring effect to simulate a centering effect. Most Immersion TouchSense sticks, wheels, and gamepads replace the physical centering springs with a control panel slider or other type of control that allows the user to decrease the simulated centering spring force or turn it off altogether. A stronger centering spring will tend to reduce the effect of other forces in the game because the spring's force will oppose or even cancel out a force in the opposite direction. Therefore, many users will turn the default centering spring off in the control panel in order to increase the fidelity of forces. If your game requires spring centering to either aid the user or to enhance gameplay, be sure to create a Spring effect. Do not rely on the control panel's automatic Spring centering since not everyone's device will have this feature active.


Center is the equilibrium or center point of the Spring effect and corresponds to a physical location on the screen for a mouse or a physical location in the device workspace for a game controller. The peripheral will always be pulled towards or pushed away from this physical location. Also see Deadband, which affects the behavior of Center.

On a full force feedback mouse, Center is the distance of the Spring center from the top left corner of the screen in screen pixels. If the Spring acts in both the X and Y directions, there should be two Spring effects, one for each axis, with one effect's Center corresponding to the X axis and the other's Center corresponding to the Y axis.

For game controllers, Center is the distance of the Spring center from the center of the controller workspace in the -10000 to +10000 range. A Spring with Center set to 0 will cause the peripheral to always be pulled to the exact middle of the workspace. If the Spring is along the Y axis, setting Center to -10000 will pull the peripheral all the way forward, and setting Center to +10000 will pull the peripheral all the way back. If the Spring is along the X axis, setting Center to -10000 will pull the peripheral all the way left, and setting Center to +10000 will pull the peripheral all the way right.


For Springs, Coefficient and Stiffness are used interchangeably. As Stiffness implies, the Coefficient determines how strong or stiff the Spring effect is. However, Coefficient also works in conjunction with Saturation to determine the overall level of force of the Spring, so also see the Saturation section. Be careful - coefficient is also the name of a parameter for some other effects like Damper but has different meanings for different effects.

Using the Positive Coefficient and Negative Coefficient parameters, you can create asymmetric Springs which feel different on one side than the other. Here, positive and negative really mean the positive direction (the specified direction of the Spring) and the negative direction (the opposite direction) e.g., right versus left, up versus down; it has nothing to do with whether the parameter has a positive or negative value. For example, if you were to hold the ends of a bungee cord in each hand and keep it just barely taut, it would behave like a Spring with a Positive Coefficient but no Negative Coefficient. If you try moving your right hand towards the right, you will feel the strong Spring force of the bungee cord stretching in the positive direction. However, if you move your right hand towards the left, you won't feel any force because the bungee cord only resists stretching and just becomes slack when compressed. Contrast this with a steel coil held between your hands where you would feel a restoring force whether you try to move your right hand towards or away from your left hand (stretched or compressed the spring).

The range for Coefficient is -10000 to +10000. A Coefficient of +10000 will make it very hard to move the peripheral away from the Center. A Coefficient or Stiffness of 0 will have no stiffness and be no different from having no Spring effect at all. Using a negative value for Coefficient instead of a positive value will cause the peripheral to be pushed away from the Center instead of being pulled towards it.


Deadband is also a parameter for other condition-based effects like a Damper and Inertia. Deadband sets the distance from the Center of the Spring over which the effect is not active (no forces are felt). In the black hole example mentioned above, having a Deadband of 0 means the device will be drawn exactly to the center. As soon as the device begins to move away at all from the Center, the Spring force will start ramping up. However, a non-zero Deadband means the Spring force will not start ramping up until the device has moved a distance of Deadband/2 (Deadband spans both sides). Using a small Deadband can help prevent unstable oscillations in a very stiff Spring. A real world example of Deadband is a bungee cord. If you have a 1 foot section of bungee cord and hold the two endpoints together, you won't start feeling the Spring force of the bungee cord ramping up until one endpoint is moved more than 1 foot away from the other endpoint. Until then, the bungee cord is slack.

For a full force feedback mouse, Deadband is expressed in screen pixels. For game controllers, Deadband is in the 0 to +10000 range with +10000 meaning the Deadband extends all the way to the edge of the workspace.


Direction specifies whether the Spring acts left and right along the X axis, up and down along the Y axis, or at an angle. The Spring can also act both left and right as well as up and down. A Spring at an angle is like a left and right Spring that has been rotated by some angle. All four cases are shown below for a mouse. See the Constant Force description for details on how to specify Direction in either Cartesian or polar coordinates. The Direction also determines which is the positive and which the negative side of the Spring, when setting the values of other Spring properties.


While you can specify a Duration for a Spring, by default its duration is infinite. It is unusual to specify a non-infinite duration for a Spring.


Gain is a factor with which you can scale the entire Spring effect. It ranges from 0 to 10000 where 0 makes the Spring effect unnoticeable (equivalent to multiplying all the forces by zero) and 10000 does not change the Spring effect at all (equivalent to multiplying all the forces by one).


Saturation is also a parameter for some other effects like a Damper and Enclosure. Saturation sets the maximum force output possible for the effect and has a range of 0 to +10000. Setting Saturation to +10000 means don't put any limit on the force output for this Spring; let the Spring effect exert the force determined by the Coefficient and the displacement from Center (minus any Deadband) all the way up to the maximum force possible out of the device. Setting the Saturation to 0 means limit the total force output for this Spring to 0, which means you will never feel anything from the Spring no matter what the Coefficient and displacement from Center are. Setting Saturation to +5000 means limit the force output for this Spring to half the maximum force possible by the device. Saturation is useful for creating a maximum stiffness Spring (Coefficient of +10000) but not letting the force continue to grow linearly as you displace the peripheral farther and farther from the Center. Simply reducing the Coefficient does not have the same effect because the restoring force to the Center becomes weaker everywhere, not just far away from the Center. See the figure at the end of the Spring section for a graphical representation of Saturation.

Like Coefficient, there is a Positive Saturation and a Negative Saturation to allow you to have asymmetric limits for stretching and compressing the Spring. Positive Saturation sets the limit in the positive direction and Negative Saturation sets the limit in the negative direction.


Stiffness is equivalent to Coefficient. However, only one value of Stiffness can be specified for a Spring effect, for all directions of motion. It is therefore impossible to create an asymmetric Spring by specifying the Stiffness property.

<< Back to your previous page

Immersion Support Index

iFeelPixel Homepage

[Top of Page]