kyle-emmerich / blueshift-engine

High performance C++ game engine in early development
https://noxastra.com/engine
BSD 3-Clause "New" or "Revised" License
9 stars 1 forks source link

Input subsystem #5

Closed kyle-emmerich closed 8 years ago

kyle-emmerich commented 8 years ago

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)

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.

kyle-emmerich commented 8 years ago

Gotta redo this.