Rocket League MFC Application with Multiple Bodypoints
With this user interface, the user may select individual bodypoints for each control.
The user may choose to drive the car in two ways.
1. Steering uses a pair of bodypoints and emulates a real-life steering wheel. Steer left and right to move the car left and right. Keep both bodypoint levelled to drive straight. To stop driving, lower both bodypoints until they are out of the screen or press the brake control.
2. Joystick supports using hand, elbow or shoulder as a joystick. Move the selected joystick bodypoint anywhere around the screen to control the car. Move up = up; down = reverse/ brake ; left = left ; right = right
1. Steering uses a pair of bodypoints and emulates a real-life steering wheel. Steer left and right to move the car left and right. Keep both bodypoint levelled to drive straight. To stop driving, lower both bodypoints until they are out of the screen or press the brake control.
2. Joystick supports using hand, elbow or shoulder as a joystick. Move the selected joystick bodypoint anywhere around the screen to control the car. Move up = up; down = reverse/ brake ; left = left ; right = right
When Select Bodypoint is clicked, a new window is launched. This MFC was developed by Team 18 (AXCS 2023-24).
The current selected bodypoint for this control is the one with a checked box next to it. Click clear and reselect to choose another. The number of bodypoints that can be chosen for this control is stated on the right. Steering requires 2 bodypoints. Joystick and all in-game action requires one.
For JUMP, BOOST, BRAKE/REVERSE, DRIFT, BALL CAMERA, the bodypoint selected is the one used to press the buttons corresponding to the in-game action.
The current selected bodypoint for this control is the one with a checked box next to it. Click clear and reselect to choose another. The number of bodypoints that can be chosen for this control is stated on the right. Steering requires 2 bodypoints. Joystick and all in-game action requires one.
For JUMP, BOOST, BRAKE/REVERSE, DRIFT, BALL CAMERA, the bodypoint selected is the one used to press the buttons corresponding to the in-game action.
If the user has multiple cameras to take input from, then the user can select which camera they want to use. If the user is playing in a dimly-lit environment, the low-light button can be toggled ON for an enhanced experience.
The FPS option is set to ON by default. It displays the FPS rate at the bottom-right corner. If the user wishes, it can be set to OFF.
When the speech button is toggled ON, the user can use speech commands to play their games. Speech commands available for Rocket League is JUMP to jump and CAMERA to toggle ball camera.
The FPS option is set to ON by default. It displays the FPS rate at the bottom-right corner. If the user wishes, it can be set to OFF.
When the speech button is toggled ON, the user can use speech commands to play their games. Speech commands available for Rocket League is JUMP to jump and CAMERA to toggle ball camera.
Click on the ยก buttons next to each option for information. The help button ? on the top right provides more detailed description of each option.
No customisation of Gestures by the user is needed. The available gesture for Rocket League is raise eyebrows to jump.
All of the above perferences get updated in either the config JSON file or mode JSON file when Launch is clicked. The JSON files follow a specific structure. Each trigger has a particular format to store keybinds, corresponding bodypoint and other information. Each game has two JSONs for different modes: steering and joystick.
Below are a list of configurations that developers may customise.
The JSON structure is as follows and the JSON files can be found in the directory: data/modes/
Below are a list of configurations that developers may customise.
- Change which mode JSON file MotionInput uses
This can be done by changing the "mode" dictonary's value in data/config.json and data/configMFC.json. - Change positions of virtual buttons
Positions of virtual buttons (hit trigger) may be adjusted in the mode JSON files in data/mode. [0,0] is the top left of the screen. For example, if the current mode is "some_game", the position of a virtual button can be changed by accessing data/mode/some_game.json. In the "poses" array, virtual buttons are dictionaries in which the "file" key has value "hit_trigger.py". In this dictionary, the on-screen coordinates of the virtual button may be changed via the "pos" dictionary - Add Gestures
Gestures may be added in the "poses" array in the mode JSON files.
- file: the filename of the gesture (for virtual buttons it will be hit_trigger.py). The gesture must be in the data/gestures/json or data/gestures/python directory.
- action: specifies a dictionary encoding the output function to be performed when the gesture is detected.
- class: the class of the output function.
- method: the method to be called of the class.
- args: an array of arguments to be passed to the method.
-
Add Speech
New speech commands may be added to the value of the "speech" key in "some_game.json", outside the "poses" array. - Add Skins
Skins may be added to each button by adding corresponding PNG images to data/assets/triggers/rl_triggers. Two images are needed for each button: "some_action.png" and "Some_action_triggered.png", for example "jump.png" and "jump_triggered.png". Then, add "skins":"some_action.png" in "some_game.json". "some_action_triggered.png" does not need to be added.
The JSON structure is as follows and the JSON files can be found in the directory: data/modes/