From BeamNG

Jump to:navigation, search
Language: English  • Deutsch • Español • Français • Italiano • Nederlands • Polski • Русский


Graphics Options

Configure your graphical options in the options menu before playing. We recommend keeping Mesh Quality and Lighting Quality at Normal for most computers. You can bring up the options with CTRL + O at any time. Anisotropic Filtering can be increased to 16X with little noticeable performance impact.


For a complete list of controls, see Controls.

BeamNG currently supports driving with the keyboard or with an analog controller. Keyboard driving is not recommended.

There is no setup required for using most major controllers - just plug it in and start the game.

The default button layout for an Xbox 360 Controller

  • Throttle: Right Trigger
  • Brake: Left Trigger
  • Steering: Left Analog Stick
  • Camera: Right Analog Stick
  • Parking Brake: RB
  • Change Camera: Back
  • Zoom Camera In: Y
  • Zoom Camera Out: B
  • Reset Camera: Press on the Right Analog Stick

Keyboard users can drive with the arrow keys and move the camera with the mouse or numpad (reset camera with numpad 5).

Universal keyboard keys

  • F1: Show Controls
  • J: pause and unpause physics
  • R: respawn the vehicle
  • Q: toggle through shifter modes (automatic, full manual, manual with auto clutch)
  • Shift + B: toggle dynamic steering (disable dynamic steering if you use a wheel)
  • Shift + C: toggle free camera
  • Tab and Shift + Tab : switch through vehicles
  • <: toggle left turn signal
  • >: toggle right turn signal
  • /: toggle hazard lights
  • N: toggle headlights/brights
  • CONTROL+P: Screenshot

Steering wheels are also supported. Wheels like the Logitech G25/G27 or Fanatec series with 900 degree steering, clutch pedal, and H-shifter will work well in BeamNG. Input maps are customizable as well.

Configuring your own controller

How to configure your own controller (gamepad, wheel, whatever) to work on BeamNG:

1. Plug in your controller and start up BeamNG

2. Quit BeamNG and open the torque3d.log file OR press ' or ~ (or whichever button on your keyboard layout) to open console

3. Scroll up to the very beginning and locate this bit: [1]

4. Download my template ([2]) for the inputmap, open it and fill it in following this: [3]

5. Fill in the axis' names to the inputmap file, such as xaxis, yaxis, ryaxis, etc. You may need to mess with them a bit to get them right. Usually you can check which axis are x, y and z from your controlpanel. Controlpanel -> Game controllers -> Your game controller.

6. Save your inputmap in [your BeamNG directory]/scripts/client/inputmaps. Your BeamNG directory is usually in Users/[your user name]/AppData/Local/BeamNG. It is recommended that you save your custom inputmaps in a new folder called "custom" inside the "inputmaps" folder. BeamNG will use inputmaps in the "custom" folder first so you don't have to overwrite any inputmaps if the GUIDs match. Also the updater won't overwrite the "custom" folder so you won't lose your custom inputmaps if you update the game.

Advanced controller setup

Our steering, throttle, brake, clutch axis, etc run from -1 to 1.

Example G25 configuration:

// Product Name: Logitech G25 Racing Wheel USB (with logitech drivers)
// GUID: {C299046D-0000-0000-0000-504944564944}
// axes: 5^X^S^V^Y^S

// camera
%mm.bind(%device, button0, joystickYaw);
%mm.bind(%device, button1, joystickPitch);

// movement
%mm.bind(%device, xaxis, steer_direct);
%mm.bind(%device, rzaxis,"RI", brake_direct);
%mm.bind(%device, yaxis, "RI", accelerate_direct);
%mm.bind(%device, slider, "RI", clutch_direct);

%mm.bind(%device, button0, toggleShifterMode);

// paddle - left
%mm.bind(%device, button5, shiftDown);
// paddle - right
%mm.bind(%device, button4, shiftUp);

// gears
%mm.bindCmd(%device, button14, "shiftToGear(-1);", "shiftToGear(0);");
%mm.bindCmd(%device, button8,  "shiftToGear(1);",  "shiftToGear(0);");
%mm.bindCmd(%device, button9,  "shiftToGear(2);",  "shiftToGear(0);");
%mm.bindCmd(%device, button10, "shiftToGear(3);",  "shiftToGear(0);");
%mm.bindCmd(%device, button11, "shiftToGear(4);",  "shiftToGear(0);");
%mm.bindCmd(%device, button12, "shiftToGear(5);",  "shiftToGear(0);");
%mm.bindCmd(%device, button13, "shiftToGear(6);",  "shiftToGear(0);");

// we should be able to activate stick shifting and wheel range functions with this device

//%mm.bindCmd(%device, button2, "beamNGResetPhysics();", "");
//%mm.bindCmd(%device, button3, "beamNGTogglePhysics();", "");
//%mm.bind(%device, button4, parkingbrake_toggle);
//%mm.bindCmd(%device, button5, "beamNGSwitchVehicle();", "");
//%mm.bindCmd(%device, button6, "beamNGZoom(-1);", "");
//%mm.bindCmd(%device, button7, "beamNGZoom(1);", "");
//%mm.bindCmd(%device, button8, "beamNGResetCamera();", "");
//%mm.bindCmd(%device, button9, "beamNGCameraToggle();", "");
//%mm.bind(%device, btn_back, beamNGControl);
//%mm.bind(%device, btn_x, toggleFirstPerson);

echo("G25 mapping loaded");


  • object can be a button name, an axis name or alike
  • the function to call can be found one directory up in beamng.cs
  • options: see below
%mm.bind(%device, <object>, <options>, <function to call>);
%mm.bindCmd(%device, <object>, <options>, "<Torque script to execute on press>", "<Torque script to execute on de-press>");

Options (can be combined):

  • I : inverted : * -1
  • R : Ranged : scale axis from -1 to 1 down to 0 to 1
  • D : Deadzone (string argument following) : deadzone around the center
  • S : Scaled : scales the value (bit useless)


advanced example that maps an axis which goes from -1 to 0 to -1 to 1, with deadzone and scaling:

%mm.bind(%device, slider, "RID", "-0.15 0.15", "S", 1.2, clutch);

See also