Check Github Repo here sNaticY/dcs-helicopter-assist: Helicopter assist for DCS, including auto rudder, balance assistant, hover assistant
 
	Video tutorial and show case coming soon!
 
	
		DCS Helicopter Assist
	
	Lightweight helicopter assist for DCS. It reads live flight telemetry from DCS via Export.lua (UDP), applies stabilization and assist logic, and writes control outputs to a vJoy virtual joystick (X/Y for cyclic, RZ for rudder).
 
	This document covers:
 
	
		Prerequisites
	
	
		Get DCS helicopter assist (GitHub Releases or run from source)
	
	
		vJoy setup
	
	
		DCS Export.lua setup
	
	
		How to run and use (hotkeys, modes)
	
	
		How to modify config (config.json)
	
	
		1) Prerequisites
	
	
		Windows 10/11
	
	
		DCS World (stable or open beta)
	
	
		vJoy driver installed and at least one device enabled
		
			
				Download: http://vjoystick.sourceforge.net/site/
			
		
	
	If you run from source (instead of the EXE):
 
	
		Python 3.9+ (64-bit recommended)
	
	
		Python packages: numpy, pyvjoy, keyboard
	
	Install packages:
 
	py -m pip install numpy pyvjoy keyboard
	
		 
	
	Note: pyvjoy may need Administrator privileges to access the vJoy driver.
 
	
		2) Get DCS Helicopter Assist
	
	Option A — Download prebuilt (recommended):
 
	
		Go to the GitHub Releases page:
		
			
				https://github.com/sNaticY/dcs-helicopter-assist/releases
			
		
	
	
		Download the latest DCSHelicopterAssist.zip for Windows.
	
	
		Extract it to a folder you trust (e.g., C:\Games\DCSHelicotperAssist).
	
	
		Ensure config.json is in the same folder as the EXE so you can edit it.
	
	
		Continue to vJoy setup and DCS Export.lua setup below.
	
	Tips:
 
	
		First run may trigger SmartScreen; choose “More info” → “Run anyway”.
	
	
		If vJoy output doesn’t move, try running the EXE “As Administrator”.
	
	Option B — Run from source (Python):
 
	
		Clone or download this repository into a folder (e.g., C:\Games\DCSHelicotperAssist).
	
	
		Install Python requirements:
		
			py -m pip install numpy pyvjoy keyboard
			
				 
			
		
	
	
		Continue to vJoy setup and DCS Export.lua setup below.
	
	
		Run:
		
			py helicopter_assist.py
			
				 
			
		
	
	
		3) vJoy setup
	
	Open “vJoyConf” (vJoy Configuration) and configure a device:
 
	
		Enable Device ID: choose one ID (default in config.json is 3)
	
	
		Axes: enable X, Y, Rx (others optional/unused)
	
	
		Buttons: not required
	
	
		POV: none required
	
	
		Apply/Save
	
	In DCS Controls, bind the vJoy device axes:
 
	
		Helicopter Pitch → vJoy Axis Y
	
	
		Helicopter Roll → vJoy Axis X
	
	
		Helicopter Rudder → vJoy Axis RX
	
	Recommendations:
 
	
		Unbind your physical joystick axes directly from DCS to avoid double control. The app reads your physical joystick and outputs to vJoy; DCS should only read vJoy.
	
	
		Optional: Bind your physical joystick axes with modifiers TOGGLE_PAUSE_HOTKEY so you can temporarily by pass the assist and control directly with physical joystick
	
	
		Do not invert axes in DCS. The app already writes Y as inverted when sending to vJoy.
	
	You can change the vJoy device ID in config.json (see section 7).
 
	
		4) DCS Export.lua setup
	
	This project includes Export/Export.lua which sends telemetry to the app via UDP.
 
	
		Locate your DCS Saved Games Scripts folder:
	
	
		Stable: %USERPROFILE%\Saved Games\DCS\Scripts
	
	
		Open Beta: %USERPROFILE%\Saved Games\DCS.openbeta\Scripts
	
	
		
			Backup your existing Export.lua if present.
		 
	
	
		
			Copy project file:
		 
	
	
		From: c:\Games\HelicopterAssist\Export\Export.lua
	
	
		To: %SavedGames%\DCS...\Scripts\Export.lua
	
	Export.lua sends JSON lines at 50 Hz to 127.0.0.1:28777 by default. If you run the app on another machine, change the target in Export.lua and config.json, and allow UDP in the firewall.
 
	What is exported:
 
	
		Linear velocity (Vx,Vy,Vz) in world coordinates (m/s)
	
	
		Linear acceleration (Ax,Ay,Az) in world coordinates (m/s²)
	
	
		Pitch, Roll, Yaw (rad)
	
	
		PitchRate, RollRate, YawRate (rad/s)
	
	
		World position (PosX, PosY, PosZ) in meters (x=East, y=Up, z=North)
	
	The Python side parses these in dcs_telemetry.DcsTelemetry.
 
	
		5) Running and usage
	
	Running the EXE:
 
	
		Double-click the HelicopterAssist.exe (place config.json next to it).
	
	
		Start a DCS mission; Export.lua begins sending telemetry automatically.
	
	Running from source:
 
	py helicopter_assist.py
	
		 
	
	If vJoy doesn’t move:
 
	
		Confirm vJoy device ID matches config.json
	
	
		Confirm Export.lua is in Saved Games\DCS...\Scripts and a mission is running
	
	
		Try running as Administrator
	
	Hotkeys (defaults; configurable in config.json):
 
	
		Toggle Rudder Assist: F8
	
	
		Toggle Cyclic Assist Mode: F9
		
			
				Each press cycles: OFF → ON → HOVERING → OFF …
			
			
				OFF: vJoy outputs pass through your manual inputs (after smoothing/curves)
			
			
				ON: assist blends with your inputs; stabilization helps rate/attitude
			
			
				HOVERING: adds stronger hold to help steady hover
			
		
	
	
		Pause (hold): Left Ctrl
		
			
				While held, outputs are blocked
			
			
				On release, assist modules reset to avoid bumps
			
		
	
	Sounds:
 
	
		On: short high beep
	
	
		Hover: double mid beep
	
	
		Off: short low beep
	
	Manual input:
 
	
		Your joystick inputs are smoothed and shaped (expo) before assist and vJoy output.
	
	
		Enjoy flying!
	
HelicopterAssist.zip