kyle-emmerich / blueshift-engine

High performance C++ game engine in early development

Home Page:https://noxastra.com/engine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Input subsystem

kyle-emmerich opened this issue · comments

The input subsystem is important because a game without input is just a simulator. It goes without saying that the input subsystem should be at least in a prototype stage before the first usability test occurs.

There are multiple input devices that the game engine should register and provide access to:
(in order of importance, descending)

  • Mouse
  • Keyboard
  • Xbox 360 controller
  • Joystick
  • VR headset

However, exposing access to individual input devices is not enough. Games typically have actions triggered by input. By implementing this at the engine level and doing it properly, game developers can be saved a lot of headaches. However, this is one of those things that most devs don't trust the engine to do, so it has to be really damn good.

The input system implements devices as generic interfaces implementing certain capabilities. Because of this, devices may be passed unsafely at runtime to a manager that can read the capabilities implemented and allow action triggers to be fired by the device. The manager should handle bindings in a generic way and allow any action to be bound to any device capable of triggering it in one way or another.

The input system must also save these bindings in a configuration file that can be copied for each user profile. By providing these tools, the game developer must only develop a compatible interface for modifying bindings and the rest will be simple.

Gotta redo this.