An Action is each of the in-game activities that can take place after the player has manipulated a Control .
E.g. steer left, change camera, toggle menu.
Actions are defined in one or more .json files.
It is possible to provide new extra actions through mods. Just remember that, if you don’t also provide some bindings, then the users of your mod will need to manually configure his controllers.
There are two basic kinds of actions: Regular actions and Vehicle-specific actions :
Regular actions are those that can take place regardless of which vehicle is currently used.
They can therefore be available for use even while in the main menu, before entering any level or spawning any vehicle.
BeamNG.drive comes with many predefined regular actions. These are defined in:
lua/ge/extensions/core/input/actions/*.json
Mods can bundle additional regular actions. To do so, they must provide one or more additional json files following this naming convention:
lua/ge/extensions/core/input/actions/*.json
For example:
lua/ge/extensions/core/input/actions/explosions_mod.json
lua/ge/extensions/core/input/actions/advanced_menus.json
Any actions defined there will be available to end-users in the Options
→ Controls
menu, mixed in with the default actions provided by BeamNG.drive.
input_actions.json
file with a customized one, this means the mod author will need to constantly update his modified file each time a BeamNG.drive update comes out with new actions (or modified actions, or removed ones). It is therefore strongly advised against.Vehicle-specific actions are those that can only be triggered while driving an specific vehicle. If you switch to a different kind of vehicle, they’ll be replaced by the actions of the new vehicle.
Some of BeamNG.drive official vehicles come with a few predefined vehicle-specific actions. For example, the Small Cannon provides the ability to open fire with your controller. These vehicle-specific actions are defined in:
vehicles/vehicle_directory_name/input_actions.json
Similarly to Regular actions , mods can bundle additional vehicle-specific actions too. The mod-provided files must follow this naming convention:
vehicles/vehicle_directory_name/input_actions*.json
For example:
vehicles/hatch/input_actions_hydraulic_suspension.json
vehicles/pickup/input_actions_winch_cable.json
All of these actions will be typically found in the “Vehicle-specific” category of the Options
→ Controls
menu.
Action files mostly follow the
json format
. They must start with {
and end with }
. Here’s a sample of how the overall structure has to look like:
{
"an_action" : {"order":1, "title":"Do Something", ...},
"another_action": {"order":2, "title":"Do Something Else", ...},
"third_action" : {"order":10, "title":"Do More Things", ...},
//...
}
Each line has two parts:
"an_action"
."order"
, "title"
, "ctx"
, and more.Here’s more information about them:
Action names must be unique, otherwise they may get overridden by other mods using the same action names. Specifically:
The easiest way to ensure the action names are unique, is to use a unique prefix. For example:
{
"extra-menus-mod_an_action" : { ... },
"extra-menus-mod_another_action": { ... },
"extra-menus-mod_third_action" : { ... },
//...
}
The parameters of an action controls what the action actually does and how it’s displayed in the menus. Here’s a table with all details:
Determines which Action Map the action will be assigned into. In order of priority, the most common action maps are:
Custom names can be specified, and the corresponding action map will be automatically created. This can be useful for mods that want to quickly de/activate certain set of actions, etc.
Defines how the code defined in onChange/onUp/onDown/onRelative will be executed:
Specifies which source code will be executed when the action is triggered. The code execution context is defined in the ctx parameter of the current action
At least one of them must be defined. They are triggered like this:
The category of an action is a mandatory parameter with only cosmetic effects.
It will influence where the action may be displayed in various in-game menus (such as the Options
→ Controls
hierarchy of actions).
To see a list of available categories, please refer to the following file:
lua/ge/extensions/core/input/categories.lua