Skip to content

Add support for a modern 3D ping system (useful for e.g. MvM and Competitive) - #2077

Open
pr0jesse wants to merge 2 commits into
ValveSoftware:masterfrom
pr0jesse:qol/3d-ping
Open

pr0jesse wants to merge 2 commits into
ValveSoftware:masterfrom
pr0jesse:qol/3d-ping

Conversation

@pr0jesse

@pr0jesse pr0jesse commented Sep 12, 2026

Copy link
Copy Markdown

Description

https://steamcommunity.com/sharedfiles/filedetails/?id=3800232546

Adds a contextual 3D ping system for non-verbal communication.

Pings use the existing TF2 party system by default. Optional team-wide pings can be enabled server-side.

Ping targeting, validation, classification, and recipient routing are handled by the server. Rendering and notification settings are configurable client-side.

Supported targets include:

  • world locations
  • friendly and enemy players
  • friendly and enemy buildings
  • health pickups
  • ammo pickups
  • MvM robots
  • Sentry Busters
  • tanks

Party and team pings

Party pings are the default.

Team-wide pings require:
tf_3dping_team_allowed

Players can separately choose whether to send and receive team pings.

Spy handling

To avoid exposing hidden Spy information:

  • cloaked Spies cannot ping
  • there is a 2-second lockout after decloaking
  • Spies disguised as the enemy team cannot ping
  • hidden enemy Spies are excluded from ping target classification

Spectators and SourceTV

Spectator and SourceTV support are disabled by default.

They can be enabled with:
tf_3dping_spectator_allowed
tf_3dping_sourcetv_allowed

Party-only pings are not exposed to spectators or SourceTV. SourceTV uses the broadcast relay/cameraman's observed team, since individual viewer camera state is not exposed server-side.

Configuration

Player-facing settings are available through Advanced Options, including size, opacity, sound, colors, team send/receive options, and the master enable toggle.

No default gameplay key is forced. tf_ping is available in Keyboard settings and can be bound normally.

Example:
bind "mouse3" "tf_ping"

Server settings

  • tf_3dping_team_allowed
  • tf_3dping_spectator_allowed
  • tf_3dping_sourcetv_allowed
  • tf_3dping_cooldown
  • tf_3dping_lifetime
  • tf_3dping_max_range
  • tf_3dping_burst_count
  • tf_3dping_burst_window
  • tf_3dping_burst_lockout
  • tf_3dping_aim_tolerance_angle
  • tf_3dping_team_range
  • tf_3dping_cluster_window
  • tf_3dping_cluster_count

Showcase

Frog Fortress 2 - Direct3D 9 - 64 Bit 13_09_2026 21_53_16 Frog Fortress 2 - Direct3D 9 - 64 Bit 13_09_2026 21_53_25 Frog Fortress 2 - Direct3D 9 - 64 Bit 13_09_2026 21_53_56 Frog Fortress 2 - Direct3D 9 - 64 Bit 13_09_2026 21_54_11 Frog Fortress 2 - Direct3D 9 - 64 Bit 13_09_2026 21_54_24 Frog Fortress 2 - Direct3D 9 - 64 Bit 13_09_2026 21_55_21 Frog Fortress 2 - Direct3D 9 - 64 Bit 13_09_2026 21_58_15 showcasev2 settings2 settings3

Demo videos

OUTDATED, see Youtube videos for up to date showcase (more coming soon)
https://github.com/user-attachments/assets/24f51460-d351-4807-8a12-76f775dc8271

Watch the full video(s) here:
Advanced Settings showcase
https://youtu.be/lMPr-N9jisw

Gameplay
https://youtu.be/OnGlYSuF8Fc

OUTDATED videos:

Advanced Settings showcase
[YouTube link]

Gameplay 1
https://youtu.be/3IiDYS0I8ZI

Gameplay 2
https://youtu.be/5NMuXThWQt4

@KimmyTF2

Copy link
Copy Markdown
Contributor

Pings for the whole team would be the most helpful, as nowadays people just don't communicate that often. To avoid a spam of pings from everyone on the team, ideally only teammates in close proximity would see each other's pings, if it's possible to implement.

@pr0jesse

Copy link
Copy Markdown
Author

Pings for the whole team would be the most helpful, as nowadays people just don't communicate that often. To avoid a spam of pings from everyone on the team, ideally only teammates in close proximity would see each other's pings, if it's possible to implement.

I decided against that server side ON as default, but it's up to Valve in the end. MvM and Competitive I'd say default on on official servers!

@pr0jesse
pr0jesse force-pushed the qol/3d-ping branch 2 times, most recently from 7f2b236 to dc5c6df Compare September 12, 2026 17:16
Lets players ping a location in the world (default and hostile marker
types), server-authoritative with cooldown/burst limiting. Delivered to
the sender's current party by default, with an optional off-by-default
server-side team-wide broadcast scope.
@pr0jesse pr0jesse changed the title Add support for a modern 3D ping system (useful for e.g. MvM and Competitive) Add contextual 3D ping system Sep 12, 2026
@bakugo

bakugo commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Mmm, delicious slop

@pr0jesse

Copy link
Copy Markdown
Author

(Im new to github, PRs, and coding as a whole, sorry for all these tweaks I'm still learning)

@pr0jesse pr0jesse changed the title Add contextual 3D ping system Add support for a modern 3D ping system (useful for e.g. MvM and Competitive) Sep 12, 2026
@pr0jesse

Copy link
Copy Markdown
Author

Reworking the icons according to feedback

@Chickenman456

Copy link
Copy Markdown

This is a really cool idea that I wouldn't mind being implemented, even if it was only restricted to friend parties or mvm.

@pr0jesse

Copy link
Copy Markdown
Author

Working on better icons which fit more with vanilla TF2. Will update soon + more cleanup.
image

Add the expanded ping icon set and MvM-specific target types.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants