An unofficial MelonLoader mod that adds OpenTrack-compatible head tracking to Firewatch: look around by moving your head while your mouse still controls aim.
- Decoupled look and aim - head tracking moves the camera; aim stays on your mouse/controller
- 6DOF positional tracking - lean and peek with head position
- Firewatch (Steam or Xbox/MS Store)
- OpenTrack or a compatible head tracking app (smartphone, webcam, or dedicated hardware)
- Windows 10/11 (64-bit)
- Download the latest release from the Releases page
- Extract the ZIP anywhere
- Double-click
install.cmd - Configure OpenTrack to output UDP to
127.0.0.1:4242 - Launch the game
The installer automatically finds your game via Steam registry lookup and Xbox/MS Store paths. If it can't find the game:
- Set the
FIREWATCH_PATHenvironment variable to your game folder, or - Run from command prompt:
install.cmd "D:\Games\Firewatch"
If you prefer to install manually or the installer doesn't work for you:
- Download MelonLoader v0.5.7 (v0.6.x is not compatible with Firewatch's Unity 2017 Mono runtime)
- Extract the MelonLoader zip into your Firewatch game folder (next to
Firewatch.exe) - Launch the game once to initialize MelonLoader, then close it
- Download the Nexus release ZIP (the one ending in
-nexus.zip) - Extract it into your game folder -
FirewatchHeadTracking.dlllands inMods/and theCameraUnlock.Core*.dllfiles land inUserLibs/ - Configure your tracker to output UDP to
127.0.0.1:4242 - Launch the game
- Download and install OpenTrack
- Configure your tracker as input
- Set output to UDP over network
- Host:
127.0.0.1, Port:4242 - Start tracking before launching the game
No special hardware needed - OpenTrack's built-in neuralnet tracker uses any webcam for 6DOF face tracking.
- In OpenTrack, set the input to neuralnet tracker
- Select your webcam in the tracker settings
- Set output to UDP over network (
127.0.0.1:4242) - Start tracking before launching the game
- Recenter in OpenTrack via its hotkey, and press Home in-game to recenter the mod as needed
This mod includes built-in smoothing for network jitter, so if your tracking app already provides a filtered signal you can send directly from your phone to the mod on port 4242 without needing OpenTrack on PC.
- Install an OpenTrack-compatible head tracking app
- Configure it to send to your PC's IP on port 4242 (run
ipconfigto find it) - Set the protocol to OpenTrack/UDP
With OpenTrack (optional): If you want curve mapping, a visual preview, or extra filtering, route through OpenTrack. Since the mod already listens on 4242, OpenTrack's input needs a different port. Set OpenTrack's input to "UDP over network" on a different port (e.g. 5252), set its output to 127.0.0.1:4242, and point your phone app at port 5252. Make sure your firewall allows incoming UDP on the input port.
Two equivalent binding sets - use whichever your keyboard has.
| Action | Nav-cluster | Chord |
|---|---|---|
| Recenter | Home |
Ctrl+Shift+T |
| Toggle tracking | End |
Ctrl+Shift+Y |
| Cycle tracking mode | Page Up |
Ctrl+Shift+G |
| Toggle yaw mode | Page Down |
Ctrl+Shift+H |
| Toggle reticle follow | Insert |
Ctrl+Shift+U |
Page Up / Ctrl+Shift+G cycles tracking mode:
- Normal head-tracked gameplay
- Positional tracking disabled, rotational tracking enabled
- Rotational tracking disabled, positional tracking enabled
- Back to normal
Page Down / Ctrl+Shift+H toggles yaw mode:
- World-space yaw (default): yaw rotates around the world up-axis. Looking down at your feet and moving your head left/right still pans across the floor like a compass turn - "up" stays a constant.
- Camera-local yaw: yaw rotates around the camera's current up-axis. At extreme pitch this rolls the view, which some players prefer for aerial / zero-G content.
The Ctrl+Shift+<letter> chords are provided for keyboards without a navigation cluster (laptops, 60% / TKL layouts). Both bindings fire the same action.
Settings are stored in UserData/MelonPreferences.cfg under the [HeadTracking] section. The file is created on first run with sensible defaults.
[HeadTracking]
UdpPort = 4242
# Keybindings (Unity KeyCode names)
# See https://docs.unity3d.com/ScriptReference/KeyCode.html
RecenterKey = Home
ToggleKey = End
TrackingModeKey = PageUp
YawModeKey = PageDown
ReticleToggleKey = Insert
# Yaw mode: true = horizon-locked yaw (default), false = camera-local
WorldSpaceYaw = true
# Sensitivity (multipliers, 0.1-3.0)
YawSensitivity = 1.0
PitchSensitivity = 1.0
RollSensitivity = 1.0
InvertPitch = false
# Smoothing (0.0-1.0, remote connections add a minimum of 0.15)
Smoothing = 0.0
# Position tracking (meters)
PositionEnabled = true
PositionSensitivityX = 1.0
PositionSensitivityY = 1.0
PositionSensitivityZ = 1.0
PositionLimitX = 0.30 # side-to-side
PositionLimitY = 0.20 # up/down
PositionLimitZ = 0.40 # forward lean
PositionLimitZBack = 0.10 # backward lean (smaller to prevent clipping through player model)
PositionSmoothing = 0.15
InvertPositionX = false
InvertPositionY = false
InvertPositionZ = false
# Reticle
ShowReticle = true # repositions the game reticle to follow the mouse aim pointMod not loading:
- Make sure you ran the game once after installing MelonLoader so it could initialize
- Verify
version.dllexists in the game folder - Verify
FirewatchHeadTracking.dllis inMods/and bothCameraUnlock.Core*.dllfiles are inUserLibs/ - Check
MelonLoader/Latest.logfor errors
No tracking response:
- Verify your tracker is running and sending to
127.0.0.1:4242 - Press End to make sure tracking is enabled
- Check the MelonLoader console for error messages
- Check that your firewall isn't blocking UDP port 4242
Jittery / unstable tracking:
- Increase the
Smoothingvalue (e.g. 0.1 to 0.3) - Reduce sensitivity in your tracking software
- Ensure stable lighting if using face tracking
Wrong rotation axis:
- Toggle
InvertPitchin the config if vertical look is reversed - Adjust the per-axis sensitivity multipliers in
MelonPreferences.cfg
Yaw feels wrong when looking up or down at extreme angles:
- Try toggling between world-locked and camera-local yaw with
Page Down(orCtrl+Shift+H). World-locked (default) is horizon-stable; camera-local follows the camera's current up-axis.
Download the new release and run install.cmd again. Your config is preserved.
Run uninstall.cmd from the release folder. This removes the mod DLLs. MelonLoader is only removed if the installer put it there. To force-remove MelonLoader anyway:
uninstall.cmd /force
git clone --recurse-submodules https://github.com/itsloopyo/firewatch-headtracking.git
cd firewatch-headtracking
# Build and install to game
pixi run install
# Build only
pixi run build
# Package for release
pixi run packageMIT License - see LICENSE for details.
- Campo Santo / Panic - Firewatch
- MelonLoader - Mod framework
- Harmony - Runtime patching library
- OpenTrack - Head tracking software
This mod is not affiliated with, endorsed by, or supported by Campo Santo or Panic. "Firewatch" is a trademark of Campo Santo / Panic. Use this mod at your own risk; no warranty is provided.