Getting started
Introduction
What the DualSense Plugin for Unreal Engine does, which engines and controllers it supports, and how it fits into your project.
The DualSense Plugin for Unreal Engine gives your game full access to the PlayStation 5 controller on Windows: adaptive triggers, lightbar, player and mute LEDs, rumble and every button, from Blueprints or C++.
It is an unofficial plugin made by Altercode and sold on Gumroad.
What you get
Adaptive triggers
12 effects plus raw bytes, with parameters in readable units: trigger zones from 0 to 9 and strengths from 1 to 8.
Native input
The controller is an Unreal input device. Use it with Enhanced Input like any gamepad, plus the PS, Touchpad and Mic buttons.
Requirements
| Unreal Engine | 5.7 and 5.8 (one package per engine version) |
| Platform | Windows 64-bit only. The plugin talks to the controller through the Windows HID API. |
| Controllers | DualSense and DualSense Edge, over USB or Bluetooth. Up to 4 at the same time. |
| Project | Blueprint-only or C++. No engine changes and nothing to install for your players. |
Using Unreal Engine 5.1 to 5.6? Those engines are covered by the v1 plugin. See the v1 docs, and the migration guide when you move to 5.7 or later.
How it works
The plugin has three parts, and you only touch the last one:
- An input device. It reads the controller over HID and feeds buttons, sticks and triggers to Unreal, the same way an Xbox controller does. Enhanced Input, Input Mapping Contexts and
InputKeyevents all work. - A Game Instance Subsystem (
UDualSenseSubsystem). It keeps the output state of each controller: lightbar, LEDs, rumble and the two trigger effects. - A Blueprint node library. Every node starts with
DS. TheDS Set ...nodes change the stored state, andDS Update Outputsends it to the controller.
DS Set Lightbar Color ─┐
DS Set Trigger Effect ─┼─▶ DS Update Output ─▶ controller
DS Set Rumble ─────────┘
The state is kept between calls, so you only send what changed: setting the lightbar does not reset the triggers, and the plugin skips the write when nothing is different.