{"id":50909225,"url":"https://github.com/itsloopyo/yapyap-headtracking","last_synced_at":"2026-06-16T08:30:59.690Z","repository":{"id":362370656,"uuid":"1256567425","full_name":"itsloopyo/yapyap-headtracking","owner":"itsloopyo","description":"An OpenTrack compatible head tracking mod for YAPYAP","archived":false,"fork":false,"pushed_at":"2026-06-03T21:56:55.000Z","size":673,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-03T23:17:37.865Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itsloopyo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-01T22:42:47.000Z","updated_at":"2026-06-03T21:55:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/itsloopyo/yapyap-headtracking","commit_stats":null,"previous_names":["itsloopyo/yapyap-headtracking"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/itsloopyo/yapyap-headtracking","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsloopyo%2Fyapyap-headtracking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsloopyo%2Fyapyap-headtracking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsloopyo%2Fyapyap-headtracking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsloopyo%2Fyapyap-headtracking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itsloopyo","download_url":"https://codeload.github.com/itsloopyo/yapyap-headtracking/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsloopyo%2Fyapyap-headtracking/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34398405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-16T08:30:56.854Z","updated_at":"2026-06-16T08:30:59.685Z","avatar_url":"https://github.com/itsloopyo.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e [!CAUTION]\n\u003e ## Experimental prototype - expect missing core features\n\u003e\n\u003e This is **not** a finished mod.\n\u003e\n\u003e Current builds may only test whether head tracking can drive the camera. Bug fixes and core features like decoupled look/aim, independent reticle behavior, correct shot direction, off-screen reticle support, movement handling, and comfort tuning may be missing at this early stage of development.\n\n# YAPYAP Head Tracking\n\nHead tracking for [YAPYAP](https://store.steampowered.com/app/3834090/YAPYAP/) that lets you look around with OpenTrack or a phone tracker while mouse or controller aim stays independent, with no VR required.\n\n\u003c!-- ![Mod GIF](https://raw.githubusercontent.com/itsloopyo/yapyap-headtracking/main/assets/readme-clip.gif) --\u003e\n\n## Features\n\n- **Decoupled look and aim** - head movement rotates the view while your normal controls keep aiming.\n- **6DOF positional tracking** - lean, peek, and shift your viewpoint with supported trackers.\n- **Parallax-correct crosshair** - the crosshair follows the true aim point while the view is head-rotated.\n\n## Requirements\n\n- [YAPYAP on Steam](https://store.steampowered.com/app/3834090/YAPYAP/).\n- [OpenTrack](https://github.com/opentrack/opentrack/releases) or another tracking source that can send OpenTrack UDP data.\n- Windows 10/11, 64-bit.\n\n## Installation\n\n1. Download the latest installer ZIP from [Releases](https://github.com/itsloopyo/yapyap-headtracking/releases).\n2. Extract it anywhere.\n3. Double-click `install.cmd`.\n4. Configure OpenTrack to output UDP to `127.0.0.1:4242`.\n5. Launch the game.\n\nIf the installer cannot find your game, set `YAPYAP_PATH` to the game folder or pass the game folder as the first argument:\n\n```powershell\n$env:YAPYAP_PATH = \"D:\\Games\\YAPYAP\"\n.\\install.cmd\n.\\install.cmd \"D:\\Games\\YAPYAP\"\n```\n\n### Manual Installation\n\n1. Install [BepInEx 5 x64](https://github.com/BepInEx/BepInEx/releases) into the YAPYAP game folder.\n2. Run the game once so BepInEx creates its folders.\n3. Copy `YapyapHeadTracking.dll`, `CameraUnlock.Core.dll`, and `CameraUnlock.Core.Unity.dll` into `YAPYAP\\BepInEx\\plugins\\`.\n4. If you downloaded the Nexus ZIP, extract it into the game folder after BepInEx is installed.\n\n## Setting Up OpenTrack\n\nIn OpenTrack, set Output to `UDP over network`, set the host to `127.0.0.1`, set the port to `4242`, choose your tracker as Input, then click Start.\n\n### VR Headset Setup\n\nUse Air Link or Virtual Desktop to connect the headset to your PC, start SteamVR, then select SteamVR as the OpenTrack input.\n\n### Webcam Setup\n\nUse OpenTrack's neuralnet tracker input with your webcam, then send output through UDP to `127.0.0.1:4242`.\n\n### Phone App Setup\n\nIf your phone app smooths its own data, send directly to your PC on port `4242`. If you want OpenTrack curves or filtering, send the phone app to OpenTrack first, then relay OpenTrack output to `127.0.0.1:4242`.\n\n## Controls\n\nThe Nav-cluster and Chord columns are equivalent. Use whichever your keyboard has.\n\n| Action | Nav-cluster | Chord |\n|--------|-------------|-------|\n| Recenter | `Home` | `Ctrl+Shift+T` |\n| Toggle tracking | `End` | `Ctrl+Shift+Y` |\n| Cycle tracking mode | `Page Up` | `Ctrl+Shift+G` |\n| Toggle yaw mode | `Page Down` | `Ctrl+Shift+H` |\n\n`Page Up` / `Ctrl+Shift+G` cycles tracking mode:\n\n1. Normal head-tracked gameplay\n2. Positional tracking disabled, rotational tracking enabled\n3. Rotational tracking disabled, positional tracking enabled\n4. Back to normal\n\n## Configuration\n\nThe config file is created after the first launch at `YAPYAP\\BepInEx\\config\\com.cameraunlock.yapyap.headtracking.cfg`.\n\n```ini\n[General]\n# Whether head tracking is enabled when the game starts.\nEnabledOnStartup = true\n\n# Whether to show an on-screen notification when the plugin initializes.\nShowStartupNotification = true\n\n# true = horizon-locked yaw, false = camera-local yaw.\nWorldSpaceYaw = true\n\n[UI]\n# Whether to show notifications when OpenTrack connection is lost or restored.\nShowConnectionNotifications = true\n\n# Move the game's crosshair to where your aim points while the view is head-rotated.\nCompensateCrosshair = true\n\n[Keybindings]\n# Key to toggle head tracking on or off.\nToggleKey = End\n\n# Key to recenter head tracking.\nRecenterKey = Home\n\n# Key to cycle full, rotation only, and position only tracking modes.\nCycleTrackingModeKey = PageUp\n\n# Key to toggle world-locked vs camera-local yaw.\nYawModeKey = PageDown\n\n[Network]\n# UDP port to listen for OpenTrack data.\nUDPPort = 4242\n\n[Sensitivity]\n# Rotation sensitivity multipliers.\nYawSensitivity = 1\nPitchSensitivity = 1\nRollSensitivity = 1\n\n[Smoothing]\n# Rotation smoothing. 0 is responsive, 1 is heavy smoothing.\nSmoothing = 0\n\n[Position]\n# Enable positional tracking for lean and peek movement.\nPositionEnabled = true\n\n# Position sensitivity multipliers.\nPositionSensitivityX = 1\nPositionSensitivityY = 1\nPositionSensitivityZ = 1\n\n# Position limits in meters.\nPositionLimitX = 0.3\nPositionLimitY = 0.2\nPositionLimitZ = 0.4\nPositionLimitZBack = 0.1\n\n# Position smoothing. 0 is instant, 1 is very slow.\nPositionSmoothing = 0.15\n\n# Distance in meters from the head pivot to the tracker face point.\nTrackerPivotForward = 0.08\n```\n\n## Troubleshooting\n\n**Mod not loading**\n\n- Confirm `YapyapHeadTracking.dll` is in `YAPYAP\\BepInEx\\plugins\\`.\n- Check `YAPYAP\\BepInEx\\LogOutput.log` for `YAPYAP Head Tracking`.\n- Re-run `install.cmd` if BepInEx folders are missing.\n\n**No tracking response**\n\n- Confirm OpenTrack is running and output is UDP to `127.0.0.1:4242`.\n- Check `YAPYAP\\BepInEx\\LogOutput.log` for `OpenTrack connection established`.\n- Tracking applies during gameplay and is suppressed in menus, settings, chat, and spell wheels.\n\n**Jittery / unstable tracking**\n\n- Increase OpenTrack smoothing or the mod's `Smoothing` setting.\n- Use a stable webcam, phone mount, or headset connection.\n- Reduce noisy position input by lowering `PositionSensitivityX`, `PositionSensitivityY`, or `PositionSensitivityZ`.\n\n**Wrong rotation axis / yaw feels wrong when looking up or down at extreme angles**\n\n- Toggle between world-locked and camera-local yaw with `Page Down` or `Ctrl+Shift+H`. World-locked (default) keeps yaw horizon-stable no matter where you are pitched; camera-local follows the camera's current up-axis.\n- Recenter with `Home` or `Ctrl+Shift+T` while looking straight at the screen.\n- If pitch feels inverted, check your OpenTrack input mapping before changing mod sensitivity.\n\n## Updating\n\nDownload the new release and run `install.cmd` again. Your config is preserved.\n\n## Uninstalling\n\nRun `uninstall.cmd`. This removes the mod DLLs. BepInEx is only removed if the installer put it there. Use `uninstall.cmd /force` to remove it anyway.\n\n## Building from Source\n\nPrerequisites: .NET SDK 8+, [pixi](https://pixi.sh), and a local YAPYAP install for reference assemblies.\n\n```powershell\ngit clone --recursive https://github.com/itsloopyo/yapyap-headtracking.git\ncd yapyap-headtracking\npixi run setup\npixi run build\npixi run package\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## Credits\n\n- [maisonbap](https://store.steampowered.com/app/3834090/YAPYAP/) - developer and publisher of YAPYAP.\n- [BepInEx](https://github.com/BepInEx/BepInEx) - Unity plugin framework.\n- [OpenTrack](https://github.com/opentrack/opentrack) - head tracking software.\n- [CameraUnlock.Core](https://github.com/itsloopyo/cameraunlock-core) - shared head tracking library.\n\n## Disclaimer\n\nThis mod is not affiliated with, endorsed by, or supported by maisonbap. Use at your own risk.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsloopyo%2Fyapyap-headtracking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitsloopyo%2Fyapyap-headtracking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsloopyo%2Fyapyap-headtracking/lists"}