SyncR is a server-side SourceMod plugin for TF2 jump servers to assist rocket syncs.
Learning and executing syncs are tremendously difficult due to lack of visibility of the rocket due to aiming and ping limitations on a remote server. To mitigate these effects, the player must adjust their timing but learning this is inconsistent and difficult.
This plugin provides three visual and one audio feedback mechanisms:
- Visual
- The rocket time-to-impact is visualized via a colored laser emitted in front of the rocket (green to yellow and rose to red)
- Player body overlapping with an existing rocket changes the laser to blue, i.e. for triple syncs (cyan to blue)
- Crit rocket particles are attached to rockets launched sufficiently close to another
- Player predicted landing positions are visualized on the ground in the form a ring
- Distance to impact for the player and rockets are shown in a chart on the right of the screen - Audio
- Similar to crit particles, upon firing a rocket amounting to a close sync to an existing rocket, a crit rocket sound plays. Test trials indicate this feedback to be very satisfying for some learning players.
Server ConVars:
syncr_laser [0/1] - Show colored laser pointer
syncr_laser_all [0/1] - Show colored laser pointer of all players using SyncR
syncr_laser_hide [0/1] - Hides laser pointers when looking up
syncr_chart [0/1] - Show distance to impact chart
syncr_ring [0/1] - Show landing prediction ring
syncr_crit [0/1] - Show sync crit particle
syncr_sound [0/1] - Play sync crit sound
syncr_rave [0/1] - Toggles disco/rave lasers for bored admins
syncr_warn_distance [Default: 440.0] - Imminent rocket impact distance to warn with red
syncr_threshold [Default: 30.0] - Distance required between rockets for crit feedback -- Set to 0 to disable
Plugin dependencies: SourceMod 1.12.163+,
SMLIB,
SyncR can be toggled by a player using
/syncr, while admins with the slay flag can toggle for a player using
/setsyncr <name>.
Coding is done by me while the JumpBOT recordings from the videos were done by
Fractal and
Aurora.
The project code is open-source GPLv3 and available to download via
https://github.com/geominorai/syncr
Changelog:
0.9.0 - 9/14/2023- Add support for Cow Mangler rocket projectiles
- Update to SourceMod Transitional Syntax
- Switch to enum structs
- Renamed vector variables to better represent type
- Remove unnecessary convar value caching
- Additional refactoring
- Update plugin URL
- Remove Updater
- Remove redundant license text from source file
- Migrated repository to GitHub
0.8.8 - 5/2/2015- Fixed gravity-related bug hiding the prediction ring
0.8.7 - 5/1/2015- Removed debug write to console
0.8.6 - 4/30/2015- Fixed possible crash when activating SyncR
0.8.5 - 4/28/2015- Added distance to impact chart for the player character (PC) and rockets (R#)
- Added landing prediction ring for predicted player ground impact
- Enabled spectator view of a player using syncr laser, ring, and chart without requiring cvar syncr_laser_all=1
- Reduced server and client load by lowering refresh rate
- Fixed the occasional player unable to use syncr
- Fixed the command sm_setsyncr notifying the wrong player
- Removed need to set cvar syncr_laser_all for syncr_rave to be visible
- Increased default for cvar syncr_warn_distance=440
- Added cvars syncr_chart[0/1] (default 1) and syncr_ring[0/1] (default 1) to control visibility of the new prediction features
- Calculations of distance between rockets (to compare cvar syncr_threshold) now weighs horizontal (0.7) and vertical disparities separately (0.3)
0.7.1 - 11/28/2014- Fixed access permissions for toggling SyncR on other players
- Added admin command sm_setsyncr requiring admin slay flag
0.7.0 - 11/28/2014- Fixed an occasional bug where rockets are missing lasers
- Tightened timings for syncr_threshold=30 and syncr_warn_distance=150
- Added cvar syncr_laser_hide [0/1] (default 1) that hides the lasers when looking up at rockets during a sync
- Added configuration file under cfg/sourcemod/syncr.cfg
- Added support for Updater
- Minor code cleanup
0.6.0 - 11/18/2014