- gamerant.com
- Follow Game Rant.com
- Something New
- 15 PC Games That Play Better With A Controller
- 15 Strider
- 14 Batman: Arkham Series
- 13 Castlevania: Lords Of Shadow
- 12 Halo: Spartan Assault & Spartan Strike
- 11 Streets Of Rage 4
- 10 Any Assassin’s Creed Game
- 9 Middle-Earth: Shadow Of War
- 8 Grand Theft Auto V
- 7 Rise Of The Tomb Raider
- 6 Dark Souls
- 5 FIFA 20
- 4 Cuphead
- 3 Nioh
- 2 Hollow Knight
- 1 Devil May Cry 5
- Registry data for game controllers
- Mapping scheme
- Gamepad
- RacingWheel
- ArcadeStick
- FlightStick
- UINavigation
- Button mapping
- Axis mapping
- Switch mapping
- *ButtonIndex values
- Properties mapping
- Labels
- Button labels
- Axis labels
- Switch labels
- Example registry file
gamerant.com
Follow Game Rant.com
Something New
15 PC Games That Play Better With A Controller
It might seem counterintuitive, but these PC games are much better if you use a controller instead of the old mouse and keyboard.
A keyboard and mouse configuration is suited for many PC games, yet it is intuitive to use a controller with specific genres such as sports games, racing titles and fighting games. There are pros and cons to both control schemes, depending on what style of game is being played at a given time.
There aren’t any first-person shooter (FPS) games on this list, since they are (arguably) easier with a keyboard and mouse. That being said, we have updated this list with 5 more titles that are better played using a controller, as opposed to a mouse and keyboard.
Updated on November 25th, 2020 by Derek Draven: As mentioned above, we’ve added 5 more games that benefit greatly from a controller. In almost every case, the game itself is the deciding factor, and this may differ for some people. Take the entries with a grain of salt, and see how many you agree with.
15 Strider
Playing Strider with a keyboard and mouse just feels weird. There’s no other way to describe it. This side-scrolling action platformer was built head to toe on the premise of the classic Capcom arcade title, and it definitely shows up in the gameplay. Core fundamentals are still at play, and that means using a controller to enjoy them.
The running, jumping, and slashing is fast-paced and sometimes requires quick reflexes in order to avoid damage and/or death. With a keyboard and mouse, too many things can go wrong too quickly. It’s best to stick to a controller where reflex and muscle memory are able to keep up with what’s happening on screen.
14 Batman: Arkham Series
While playing the Arkham games with a keyboard and mouse is possible (and perfectly fine), it does fall short of a controller in a few key areas. The game relies heavily on auto-targeting mechanics which makes controllers a natural fit for the gameplay, but that’s not all.
Where a controller truly shines is during combat sequences. The free-flowing fighting system relies on memory and reflexes best served by the close-knit components of a controller. It’s a bit harder to pull off complex and elongated combos with a keyboard and mouse.
13 Castlevania: Lords Of Shadow
The fast-paced nature of Lords of Shadow means that it’s better suited to gamepad control as opposed to a keyboard and mouse. Since it isn’t a game where combat consists of gunplay and precise aiming, the player can hack and slash at their leisure.
Plus, Castlevania has a long and storied past primarily on consoles where controllers were the method of play. This means the franchise has largely evolved behind that style, even as it branches outward into new 3D territory.
12 Halo: Spartan Assault & Spartan Strike
Having Halo: The Master Chief Collection on PC has been a blessing, if for no other reason than for gamers to take advantage of the coveted mouse/keyboard combo. However, other games in the franchise fare much better on the controller, including both Spartan Assault and Strike.
The top-down isometric view of the game means precision shooting isn’t nearly as necessary as it would be in an FPS title. A controller is the perfect mechanism by which to control the character while taking advantage of its excellent move/shoot system. While a keyboard/mouse combo isn’t the worst thing in the world, it’s also not as good as a gamepad.
11 Streets Of Rage 4
This one should come as no surprise. After all, the Streets of Rage franchise started out on the 16-Bit Sega Genesis console way back in the 1990s, and there weren’t very many PC fighting games of its kind at the time. Streets of Rage 4 has proven to be an excellent follow-up to the original trilogy.
Not only does it perfectly capture the feel of the original games, but it introduces several new control mechanics to spice things up. Playing the game on a keyboard is simply not enjoyable, nor should it be. Plug in a controller and experience classic button-mashing mayhem the way it was intended.
10 Any Assassin’s Creed Game
The Assassin’s Creed franchise isn’t known for its sophisticated control design. A keyboard and mouse are unnecessary when playing a game series like Assassin’s Creed. It’s neither a first-person shooter nor is it a role-playing game with complicated controls. Combat is simple, and many of the missions involve basic tasks like trailing or assassinating. After trying both peripherals, it becomes abundantly clear that Assassin’s Creed is best played with a controller.
9 Middle-Earth: Shadow Of War
In a game that requires precise movements for stealth, controls have to be its strong suit. It’s a shame that fighting someone near a wall creates camera issues that take away from the game. Middle-earth: Shadow Of War‘s controls are less complex than Batman: Arkham Knight, but more complex than Batman: Arkham City. We compare these games because of their similar combat mechanics. Putting the bow’s aiming aside, a controller undoubtedly works better for Middle-earth: Shadow Of War.
8 Grand Theft Auto V
It is debatable which peripheral is better suited for Grand Theft Auto V because it depends on the task at hand. When shooting and driving at the same time, the feel of the keyboard and mouse is superior. If you’re driving a vehicle or flying an aircraft, however, a gamepad is the better Grand Theft Auto V peripheral. In most cases, the controller beats the keyboard and mouse, unless you’re playing with certain mods.
7 Rise Of The Tomb Raider
Using WSAD on a keyboard is inferior to a controller’s thumbstick when playing Rise of the Tomb Raider. The game lets the player perform basic movements for swimming, wall climbing, and walking/running. There isn’t a wide variety of spells or weapons to switch between. Weapons like the bow, shotgun, rifle, and pistol are easily equipped with the directional pad (D-Pad). A keyboard and mouse also works, but many prefer the controller for its comfort and accessibility.
6 Dark Souls
In a difficult game like Dark Souls, you need the optimal peripheral device. Depending on what you’re most proficient at using, Dark Souls can be better with a keyboard and mouse or a controller. This is not an MMORPG that requires key bindings or macros. There are enough buttons on the controller for a seamless playthrough (excluding all the times you die).
If you’re like MezzPlays, you beat Dark Souls using a Guitar Hero controller without taking damage! Don’t blame Dark Souls because of your controller, but rather its painstaking difficulty.
5 FIFA 20
It could be said that most sports video games play better with a controller. A keyboard and mouse is awkward unless you seldom pick up a controller. FIFA 20 offers controller support for most major gamepads and controllers. However, PlayStation controllers are among the few not supported for this game. The takeaway is that FIFA 20 doesn’t require precise mouse movements, and it is counterintuitive to use a keyboard and mouse.
4 Cuphead
As one of the most difficult 2D games in the history of the PC, Cuphead is a challenge because of its speedy animations and grueling boss fights. You’ll be dumbfounded by this 193os inspired run and gun video game.
We know Cuphead is difficult, but which is better; a keyboard and mouse or controller? This game may have an antiquated appearance, but it does use modern controls. Parrying, dashing, locking in place, and using Super Art have assigned buttons. Cuphead‘s controls aren’t that complicated, so it doesn’t require a keyboard and mouse. It boils down to preference for this game.
3 Nioh
Although Nioh 2 has yet to be released on PC, Nioh is widely available on stores like Steam, Humble Bundle, and Green Man Gaming. It’s a challenging action role-playing game, so choosing the wrong peripheral could be detrimental. Nioh is not a role-playing game with a lot of buttons. It can be comfortably played with a gamepad. Connect an Xbox One or DualShock 4 controller to your PC and it will drastically enhance your experience.
2 Hollow Knight
Hollow Knight is a Souls-like, Metroid-like, and Castlevania-like. People can’t seem to agree on which game it’s the most like. For sure, Hollow Knight is a demanding game that plays better with a gamepad. A keyboard and mouse doesn’t provide an advantage when playing Hollow Knight, so you may as well stick with the controller. Good luck trying to beat this game with a keyboard and mouse; it’s no cakewalk.
1 Devil May Cry 5
This game isn’t the most difficult on this listicle, but it might have the longest learning curve. Devil May Cry 5 is unlike any of the other Devil May Cry games. The controls are different, yet it shares in common that a controller is the best option. Try using a WSAD setup, and you’ll be scrambling to defeat monsters. At the same time, Capcom has optimized keyboard and mouse experience since the previous Devil May Cry games. Still, a controller is the best option.
Registry data for game controllers
This topic is meant for manufacturers of Windows 10-compatible game controllers, and doesn’t apply to the majority of developers.
The Windows.Gaming.Input namespace allows independent hardware vendors (IHVs) to add data to the PC’s registry, enabling their devices to appear as Gamepads, RacingWheels, ArcadeSticks, FlightSticks, and UINavigationControllers as appropriate. All IHVs should add this data for their compatible controllers. By doing this, all UWP games (and any desktop games that use the WinRT API) will be able to support your game controller.
Mapping scheme
Mappings for a device with Vendor ID (VID) VVVV, Product ID (PID) PPPP, Usage Page UUUU, and Usage ID XXXX, will be read out from this location in the registry:
The table below explains the expected values under the device root location:
Name | Type | Required? | Info |
---|---|---|---|
Disabled | DWORD | No | |
Description | REG_SZ | No | A short description of the device. |
Your device installer should add this data to the registry (either via setup or an INF file).
Subkeys under the device root location are detailed in the following sections.
Gamepad
The table below lists the required and optional subkeys under the Gamepad subkey:
Subkey | Required? | Info |
---|---|---|
Menu | Yes | See Button mapping |
View | Yes | |
A | Yes | |
B | Yes | |
X | Yes | |
Y | Yes | |
LeftShoulder | Yes | |
RightShoulder | Yes | |
LeftThumbstickButton | Yes | |
RightThumbstickButton | Yes | |
DPadUp | Yes | |
DPadDown | Yes | |
DPadLeft | Yes | |
DPadRight | Yes | |
Paddle1 | No | |
Paddle2 | No | |
Paddle3 | No | |
Paddle4 | No | |
LeftTrigger | Yes | See Axis mapping |
RightTrigger | Yes | |
LeftThumbstickX | Yes | |
LeftThumbstickY | Yes | |
RightThumbstickX | Yes | |
RightThumbstickY | Yes |
If you add your game controller as a supported Gamepad, we highly recommend that you also add it as a supported UINavigationController.
RacingWheel
The table below lists the required and optional subkeys under the RacingWheel subkey:
Subkey | Required? | Info |
---|---|---|
PreviousGear | Yes | See Button mapping |
NextGear | Yes | |
DPadUp | No | |
DPadDown | No | |
DPadLeft | No | |
DPadRight | No | |
Button1 | No | |
Button2 | No | |
Button3 | No | |
Button4 | No | |
Button5 | No | |
Button6 | No | |
Button7 | No | |
Button8 | No | |
Button9 | No | |
Button10 | No | |
Button11 | No | |
Button12 | No | |
Button13 | No | |
Button14 | No | |
Button15 | No | |
Button16 | No | |
FirstGear | No | |
SecondGear | No | |
ThirdGear | No | |
FourthGear | No | |
FifthGear | No | |
SixthGear | No | |
SeventhGear | No | |
ReverseGear | No | |
Wheel | Yes | See Axis mapping |
Throttle | Yes | |
Brake | Yes | |
Clutch | No | |
Handbrake | No | |
MaxWheelAngle | Yes | See Properties mapping |
ArcadeStick
The table below lists the required and optional subkeys under the ArcadeStick subkey:
Subkey | Required? | Info |
---|---|---|
Action 1 | Yes | See Button mapping |
Action2 | Yes | |
Action3 | Yes | |
Action4 | Yes | |
Action5 | Yes | |
Action6 | Yes | |
Special1 | Yes | |
Special2 | Yes | |
StickUp | Yes | |
StickDown | Yes | |
StickLeft | Yes | |
StickRight | Yes |
FlightStick
The table below lists the required and optional subkeys under the FlightStick subkey:
Subkey | Required? | Info |
---|---|---|
FirePrimary | Yes | See Button mapping |
FireSecondary | Yes | |
Roll | Yes | See Axis mapping |
Pitch | Yes | |
Yaw | Yes | |
Throttle | Yes | |
HatSwitch | Yes | See Switch mapping |
UINavigation
The table below lists the required and optional subkeys under UINavigation subkey:
Subkey | Required? | Info |
---|---|---|
Menu | Yes | See Button mapping |
View | Yes | |
Accept | Yes | |
Cancel | Yes | |
PrimaryUp | Yes | |
PrimaryDown | Yes | |
PrimaryLeft | Yes | |
PrimaryRight | Yes | |
Context1 | No | |
Context2 | No | |
Context3 | No | |
Context4 | No | |
PageUp | No | |
PageDown | No | |
PageLeft | No | |
PageRight | No | |
ScrollUp | No | |
ScrollDown | No | |
ScrollLeft | No | |
ScrollRight | No | |
SecondaryUp | No | |
SecondaryDown | No | |
SecondaryLeft | No | |
SecondaryRight | No |
For more information about UI navigation controllers and the above commands, see UI navigation controller.
The following sections explain the contents of each of the subkeys under the Gamepad, RacingWheel, ArcadeStick, FlightStick, and UINavigation keys.
Button mapping
The table below lists the values that are needed to map a button. For example, if pressing DPadUp on the game controller, the mapping for DPadUp should contain the ButtonIndex value (Source is Button). If DPadUp needs to be mapped from a switch position, then the DPadUp mapping should contain the values SwitchIndex and SwitchPosition (Source is Switch).
Source | Value name | Value type | Required? | Value info |
---|---|---|---|---|
Button | ButtonIndex | DWORD | Yes | Index in the RawGameController button array. |
Axis | AxisIndex | DWORD | Yes | Index in the RawGameController axis array. |
Invert | DWORD | No | Indicates that the axis value should be inverted before the Threshold Percent and DebouncePercent factors are applied. | |
ThresholdPercent | DWORD | Yes | Indicates the axis position at which the mapped button value transitions between the pressed and released states. The valid range of values is 0 to 100. The button is considered pressed if the axis value is greater than or equal to this value. | |
DebouncePercent | DWORD | Yes | ||
Switch | SwitchIndex | DWORD | Yes | Index in the RawGameController switch array. |
SwitchPosition | REG_SZ | Yes | ||
IncludeAdjacent | DWORD | No | Indicates that adjacent switch positions will also cause the mapped button to report that it’s being pressed. |
Axis mapping
The table below lists the values that are needed to map an axis:
Source | Value name | Value type | Required? | Value info | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Button | MaxValueButtonIndex | DWORD | Yes |
MaxButton | AxisValue |
---|---|
FALSE | 0.0 |
TRUE | 1.0 |
Indicates that the mapped axis is bidirectional. Values of MaxButton and MinButton are combined into a single bidirectional axis as shown below.
MinButton | MaxButton | AxisValue |
---|---|---|
FALSE | FALSE | 0.5 |
FALSE | TRUE | 1.0 |
TRUE | FALSE | 0.0 |
TRUE | TRUE | 0.5 |
One of the following strings:
It indicates the position of the switch that causes the mapped axis value to be reported as 1.0. The opposing direction of MaxValueSwitchPosition is treated as 0.0. For example, if MaxValueSwitchPosition is Up, the axis value translation is shown below:
Switch position | AxisValue |
---|---|
Up | 1.0 |
Center | 0.5 |
Down | 0.0 |
Indicates that adjacent switch positions will also cause the mapped axis to report 1.0. In the above example, if IncludeAdjacent is set, then the axis translation is done as follows:
Switch position | AxisValue |
---|---|
Up | 1.0 |
UpRight | 1.0 |
UpLeft | 1.0 |
Center | 0.5 |
Down | 0.0 |
DownRight | 0.0 |
DownLeft | 0.0 |
Switch mapping
Switch positions can be mapped either from a set of buttons in the buttons array of the RawGameController or from an index in the switches array. Switch positions can’t be mapped from axes.
Source | Value name | Value type | Value info | |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Button | ButtonCount | DWORD | 2, 4, or 8 | |||||||||||||||||||||||||
SwitchKind | REG_SZ | TwoWay, FourWay, or EightWay | ||||||||||||||||||||||||||
UpButtonIndex | DWORD | See *ButtonIndex values | ||||||||||||||||||||||||||
DownButtonIndex | DWORD | |||||||||||||||||||||||||||
LeftButtonIndex | DWORD | |||||||||||||||||||||||||||
RightButtonIndex | DWORD | |||||||||||||||||||||||||||
UpRightButtonIndex | DWORD | |||||||||||||||||||||||||||
DownRightButtonIndex | DWORD | |||||||||||||||||||||||||||
DownLeftButtonIndex | DWORD | |||||||||||||||||||||||||||
UpLeftButtonIndex | DWORD | |||||||||||||||||||||||||||
Axis | SwitchKind | REG_SZ | TwoWay, FourWay, or EightWay | |||||||||||||||||||||||||
XAxisIndex | DWORD | YAxisIndex is always present. XAxisIndex is only present when SwitchKind is FourWay or EightWay. | ||||||||||||||||||||||||||
YAxisIndex | DWORD | |||||||||||||||||||||||||||
XDeadZonePercent | DWORD | Indicate the size of the dead zone around the center position of the axes. | ||||||||||||||||||||||||||
YDeadZonePercent | DWORD | |||||||||||||||||||||||||||
XDebouncePercent | DWORD | Define the size of the windows around the upper and lower dead zone limits, which are used to de-bounce the reported switch state. | ||||||||||||||||||||||||||
YDebouncePercent | DWORD | |||||||||||||||||||||||||||
XInvert | DWORD | Indicate that the corresponding axis values should be inverted before the dead zone and debounce window calculations are applied. | ||||||||||||||||||||||||||
YInvert | DWORD | |||||||||||||||||||||||||||
Switch | SwitchIndex | DWORD | Index in the RawGameController switch array. | |||||||||||||||||||||||||
Invert | DWORD | Indicates that the switch reports its positions in a counter-clockwise order, rather than the default clockwise order. | ||||||||||||||||||||||||||
PositionBias | DWORD |
Position | Reported value | After PositionBias and Invert flags |
---|---|---|
DownRight | 0 | 3 |
Right | 1 | 2 |
UpRight | 2 | 1 |
Up | 3 | 0 |
UpLeft | 4 | 7 |
Left | 5 | 6 |
DownLeft | 6 | 5 |
Down | 7 | 4 |
*ButtonIndex values
*ButtonIndex values index into the RawGameController‘s button array:
ButtonCount | SwitchKind | RequiredMappings |
---|---|---|
2 | TwoWay |
|
4 | FourWay |
|
4 | EightWay |
|
8 | EightWay |
|
Properties mapping
These are static mapping values for different mapping types.
Mapping | Value name | Value type | Value info |
---|---|---|---|
RacingWheel | MaxWheelAngle | DWORD | Indicates the maximum physical wheel angle supported by the wheel in a single direction. For example, a wheel with a possible rotation of -90 degrees to 90 degrees would specify 90. |
Labels
Labels should be present under the Labels key under the device root. Labels can have 3 subkeys: Buttons, Axes, and Switches.
Button labels
The Buttons key maps each of the button positions in the RawGameController‘s buttons array to a string. Each string is mapped internally to the corresponding GameControllerButtonLabel enum value. For example, if a gamepad has ten buttons and the order in which the RawGameController parses out the buttons and presents them in the buttons report is like this:
The labels should appear in this order under the Buttons key:
Name | Value (type: REG_SZ) |
---|---|
Button0 | Menu |
Button1 | View |
Button2 | LeftStickButton |
Button3 | RightStickButton |
Button4 | LetterA |
Button5 | LetterB |
Button6 | LetterX |
Button7 | LetterY |
Button8 | LeftBumper |
Button9 | RightBumper |
Axis labels
The Axes key will map each of the axis positions in the RawGameController‘s axis array to one of the labels listed in GameControllerButtonLabel Enum just like the button labels. See the example in Button labels.
Switch labels
The Switches key maps switch positions to labels. The values follow this naming convention: to label a position of a switch, whose index is x in the RawGameController‘s switch array, add these values under the Switches subkey:
- SwitchxUp
- SwitchxUpRight
- SwitchxRight
- SwitchxDownRight
- SwitchxDown
- SwitchxDownLeft
- SwitchxUpLeft
- SwitchxLeft
The following table shows an example set of labels for switch positions of a 4-way switch which shows up at index 0 in the RawGameController:
Name | Value (type: REG_SZ) |
---|---|
Switch0Up | XboxUp |
Switch0Right | XboxRight |
Switch0Down | XboxDown |
Switch0Left | XboxLeft |
Example registry file
To show how all of these mappings and values come together, here is an example registry file for a generic RacingWheel: