NeoFPS Input System
Overview
NeoFPS is built from the ground up to facilitate developing first person shooters for PC and console.
In order for NeoFPS' input system to work it requires a number of custom project settings to be applied. For more information see the Input Settings page.
Unity's existing input system has a number of shortcomings when designing a control scheme. This has led Unity to develop a new input system which is currently in testing.
NeoFPS extends the current input system to address a number of its problems. It adds features such as:
- Runtime bindable keys
- Consistent gamepad profiles
- Mouse smoothing and accleration
- Input contexts (character, menu, etc).
Once Unity's new input system is in full release the NeoFPS system will be adapted to that. You can also completely replace the NeoFPS input system if you have an input solution that you prefer. Look at the existing input handlers to see which properties and methods they access and use these with your preferred system.
Input Contexts
In order to categorise inputs and control which inputs are active at any time, NeoFPS makes use of input contexts. These contexts are defined in the FpsInputContext
generated constant through the [NeoFpsInputManager][6] asset. Each input handler defines its input context in script and its inputs will only be processed if its context is either None or if no higher priority context is active. Context priority is simply based on the constant value, with higher numbers being higher priority. A context becomes active when one or more input handlers with that context are active. For example, if a UI element has a InputMenu handler attached to it, then when the UI element is active all character input will be blocked.
Keyboard
NeoFPS is preset with a full WASD control scheme, but any keys can be remapped from the in-game menu. The available buttons and their default key bindings can be specified in the [NeoFpsInputManager][6] asset.
At the top of the input bindings menu is a drop down to reset to defaults. This also allows you to select a keyboard layout. Resetting to a different keyboard layout will map the keys so that the hand positions match a Qwerty keyboard. Available keyboard layouts currently include:
- Qwerty
- Azerty
- Qwertz
- Dvorak
- Colemak
To request more keyboard layouts, please contact support via the discord, or using support@neofps.com
Mouse
NeoFPS features detailed mouse support with inverse look, smoothing and acceleration.
Smoothing
Mouse smoothing is performed with a weighted average system. You can customise the number of frames to look back as well as the weighting to apply in the MouseAndGamepadAimController behaviour.
Acceleration
Acceleration can be customised via the MouseAndGamepadAimController behaviour, including setting limits and whether the acceleration is linear or quadratic.
Gamepads
Gamepad support in Unity can be quite complicated, with the same gamepad being mapped differently across platforms.
For more information see the Unity Wiki
NeoFPS maps all of the available axes and buttons of the gamepad and wraps them up into preset profiles. The player can then choose between these profiles from the in-game menus.
On console those profiles might be fairly minimal such as standard and south paw. On standalone builds there might be a number more options as more individual controllers are supported. You can set up your own gamepad profiles via the [NeoFpsInputManager][6].