For Game Developers

In actuality, your game doesn’t know what your controller is doing. It only sees basic inputs, such as button presses. Every trigger effect, including vibration and resistance, is handled outside the game, which is why it never feels truly connected.

If you are a game developer, modder, or even an advanced PC user, why not make your game communicate directly with DualSenseX instead of simply plugging in a controller? This is called real in-game integration, and that’s exactly what this guide is all about.

After integration, your game can control the controller in real time. When you shoot, the trigger can become harder. When you drive, it feels more natural, and during intense moments, the controller reacts instantly. These are no longer random effects; they are fully connected to what’s happening inside your game.

That’s the real purpose of this guide.

For Game Developers

Two Ways to Integrate: Text File vs UDP Compared

There are two methods to integrate your game with DualSenseX (DSX). Before we explain both methods, let’s quickly compare them to understand which one is right for your game.

Text File Method UDP Method
Simplest to set up Requires basic networking code
Works 100% with Bluetooth connection Better for real-time trigger changes
Extra blank lines increase read delay Faster, lower latency than a text file
No networking knowledge needed The port file must exist. DSX doesn’t always create it

Method 1) Text File Integration: Full Setup

Text File Integration Setup
  • LeftTrigger = (required to set the left trigger state)
  • RightTrigger = (required to set the right trigger state)
  • VibrateTriggerIntensity = (0–255, only used with the VibrateTrigger state)
  • CustomTriggerValueLeftMode = (only used with the CustomTriggerValue state)
  • CustomTriggerValueRightMode = (only used with the CustomTriggerValue state)
  • ForceLeftTrigger = (force values in parentheses, which vary by state)
  • ForceRightTrigger = (force values in parentheses, which vary by state)

All Trigger State Possibilities

  • Normal
  • CustomTriggerValue
  • GameCube
  • Galloping
  • Resistance
  • Bow
  • Machine
  • SemiAutomaticGun
  • AutomaticGun
  • Choppy
  • VerySoft
  • Soft
  • Medium
  • Hard
  • VeryHard
  • Hardest
  • Rigid
  • VibrateTriggerPulse
  • VibrateTrigger

Choosing your trigger state is only the first step. For some states, such as Resistance, Galloping, and SemiAutomaticGun, you can change the effect intensity, and that is controlled using force values.

Force Values: What the Numbers in Parentheses Mean

State Values needed Allowed ranges Example
Resistance 2 values 0–9 · 0–8 ForceLeftTrigger=(0)(0)
or
ForceRightTrigger=(0)(0)
Bow 4 values 0–8 · 0–8 · 0–8 · 0–8 ForceLeftTrigger=(0)(0)(0)(0)
or
ForceRightTrigger=(0)(0)(0)(0)
Galloping 5 values 0–8 · 0–9 · 0–6 · 0–7 · 0–255,
but not recommended to go over 40.
ForceLeftTrigger=(0)(0)(0)(0)(0)
or
ForceRightTrigger=(0)(0)(0)(0)(0)
SemiAutomaticGun 3 values 0–7 · 0–8 · 0–8 ForceLeftTrigger=(0)(0)(0)
or
ForceRightTrigger=(0)(0)(0)
AutomaticGun 3 values 0–9 · 0–8 · 0–255,
but not recommended to go over 40.
ForceLeftTrigger=(0)(0)(0)
or
ForceRightTrigger=(0)(0)(0)
Machine 6 values 0–8 · 0–9 · 0–7 · 0–7 ·
0–255 NOT recommended to go over 40.
Sixth: 0-2 in decimals, examples: 0.1, 0.8, 1.0, 1.8, 2.0, etc.
ForceLeftTrigger=(0)(0)(0)(0)(0)(0)
or
ForceRightTrigger=(0)(0)(0)(0)(0)(0)
CustomTriggerValue 7 values 0–255 each ForceLeftTrigger=(0)(0)(0)(0)(0)(0)(0)
or
ForceRightTrigger=(0)(0)(0)(0)(0)(0)(0)

17 CustomTriggerValue Sub-Modes

Rigid sub-modes
  • OFF
  • Rigid
  • Rigid A
  • Rigid B
  • Rigid AB
Pulse sub-modes
  • Pulse
  • Pulse A
  • Pulse B
  • Pulse AB
VibrateResistance sub-modes
  • VibrateResistance
  • VibrateResistance A
  • VibrateResistance B
  • VibrateResistance AB
Vibrate Pulse sub-modes
  • Vibrate Pulse
  • Vibrate Pulse A
  • Vibrate Pulse B
  • Vibrate Pulse AB

Examples of Trigger States in Text file

Here are a few ready-to-use examples of trigger states in text files. Mix and match the different types to achieve your desired results.

Apply Normal State

LeftTrigger=Normal
RightTrigger=Normal

Apply Rigid State

LeftTrigger=Rigid
RightTrigger=Rigid

Apply VibrateTrigger State for the Right Trigger

LeftTrigger=Normal
RightTrigger=VibrateTrigger
VibrateTriggerIntensity=40

GameCube for the Left Trigger and CustomTriggerValue State for the Right Trigger

LeftTrigger=GameCube
RightTrigger=CustomTriggerValue
CustomTriggerValueRightMode=VibrateResistance B
ForceRightTrigger=(10)(255)(0)(0)(0)(0)(0)

CustomTriggerValue State for Both Triggers

LeftTrigger=CustomTriggerValue
RightTrigger=CustomTriggerValue
CustomTriggerValueLeftMode=Rigid A
CustomTriggerValueRightMode=VibrateResistance B
ForceLeftTrigger=(10)(255)(0)(0)(0)(0)(0)
ForceRightTrigger=(10)(255)(0)(0)(0)(0)(0)

VibrateTrigger State for the Right Trigger and CustomTriggerValue for the left

LeftTrigger=CustomTriggerValue
RightTrigger=VibrateTrigger
VibrateTriggerIntensity=10
CustomTriggerValueLeftMode=Rigid A
ForceLeftTrigger=(10)(255)(0)(0)(0)(0)(0)

Machine State for the Left Trigger

RightTrigger=Machine
ForceLeftTrigger=(0)(9)(7)(7)(10)(0.0)

Resistance State for the Right Trigger

RightTrigger=Resistance
ForceRightTrigger=(0)(8)

AutomaticGun State for the Right Trigger and GameCube for the Left Trigger

LeftTrigger=GameCube
RightTrigger=AutomaticGun
ForceRightTrigger=(0)(8)(15)

Batch File

How to use it

  • Download the zip file and attach the .bat file to your game folder.
  • Open the batch file and edit it:
    • Replace GAMENAME with your game name.
    • Replace TEXTFILENAME.txt with your text file name (don’t forget to add the .txt).

Important

  • The batch file and the text file must be in the same folder (directory) as your game.
  • The batch file finds the text file based on its own location.

When you start the game

  • First, run the batch file.
  • It will open DualSenseX and pass it 2 parameters (game name + text file).
  • DualSenseX will then read your text file to apply trigger effects.

If you are playing a game where the trigger effects need to change many times per second, then the UDP method is the better choice.

How to Use Batch File

Method 2) UDP Integration

The UDP method sends trigger instructions directly through a local connection. You don’t need to create or read a text file. It is faster than the text file method. You can use it for games where you need to change the trigger effects many times per second.

To get started, download the official UDP example project directly from the DualSenseX GitHub repository.

Before using UDP, you must manually create the file C:\Temp\DualSenseX\DualSenseX_PortNumber.txt and write only the number 6969 inside it. DSX listens on localhost at port 6969 by default, and your game sends trigger instructions to that address. DSX does not always create this file automatically, so if it is missing, UDP integration will silently fail even if you have set up everything correctly.

Wrapping Up

The text file method is slower because the game first writes the file, and then DSX reads and processes it. It is useful for slower-paced games, such as simulation or casual games, where players do not need trigger effects to update instantly.

On the other hand, UDP works much faster because the game communicates directly with DSX. So, it is a better choice for fast-paced games, such as racing, shooters, and action games, where trigger effects need to switch instantly.