Skip to content

Conversation

@sunzenshen
Copy link
Contributor

@sunzenshen sunzenshen commented Sep 23, 2025

Description

When a spectator takes over another player, display their name with the format of: "target_name (spectator_name)"
Also rearranges the scoreboard such that it looks like a takeover player is taking the place of the possessed player/bot on the scoreboard.

Toolchain

  • Windows MSVC VS2022

Linked Issues

@sunzenshen
Copy link
Contributor Author

TODO: figure out if going the route of setting the clan name in the scoreboard works better.

@sunzenshen sunzenshen changed the title Override spectator name when taking over players Display name of player taken over in scoreboard/feed Sep 24, 2025
@sunzenshen sunzenshen changed the title Display name of player taken over in scoreboard/feed Display takeover player name in scoreboard/feed Sep 24, 2025
@sunzenshen sunzenshen force-pushed the spec-player-takeover-name-replacement branch from 658aa38 to 51d2ab8 Compare September 24, 2025 05:17
@sunzenshen sunzenshen marked this pull request as ready for review September 24, 2025 05:18
@sunzenshen sunzenshen requested a review from a team September 24, 2025 05:18
@sunzenshen
Copy link
Contributor Author

sunzenshen commented Sep 24, 2025

(EDIT: Updated screenshots and context after implementing Helper for displaying full takeover context names)

With this iteration that modifies the scoreboard and killfeed, this is what the scoreboard looks like:

image

These were my settings for setting an excess amount of characters:

image

Note that with this current iteration of the PR, I am displaying the clan tag in the former-spectator's name, but not in the taken-over bot name. Let me know of your opinions on the formatting.

This is what the killfeed looks like with takeover name:

image

Note that the clan tag is not displayed. I believe this is similar to the clan tag not being displayed with normal names.

This is what ghost cap looks like:

image

I made similar refactors for VIP mode, but forgive me for not testing that without the presence of official VIP maps.

As another example, self kill seems to render fine:

image

Another example is if someone else kills you while you are taking over another player:

image

@sunzenshen sunzenshen marked this pull request as draft September 24, 2025 18:16
@sunzenshen sunzenshen marked this pull request as ready for review September 25, 2025 04:28
@sunzenshen
Copy link
Contributor Author

Based on feedback from Discord, rearranged the scoreboard such that it looks like you are assuming the identity of the taken over player:

bot_takeover_scoreboard_swap_invisibly.mp4

Under the hood, your scoreboard entry imitates the player you are hijacking, while that hijacked player's entry imitates your stats.

Known name change coverage gaps:

  • squad team name list (a.k.a stars)
  • spectator focus on a player

The reason I have omitted changing those names is because I think it's debatable whether such replacements are more useful than confusing. The argument for changing the scoreboard and killfeed names is to highlight how scores are transferred from hijacker to hijacked. (To recap earlier discussion, this is a balancing decision to mitigate the scenario of a high skill player using bots to farm experience through multiple lives in the same round, such that they consolidate experience into a single player to purchase high cost loadouts early in a match.)

It may actually be confusing to override the squad team names, because then it adds noise with picking out a teammate's name in the heat of action.
For spectator focus on a player, it's potentially confusing for a competition announcer to parse out the name of a player they are watching and commentating on, especially when the player has a name long enough to hit the max name length edge case.

If there is a desire for name overrides for those cases, I suggest implementing them in a separate PR after discussion.

DESTROYGIRL
DESTROYGIRL previously approved these changes Sep 30, 2025
Copy link
Contributor

@DESTROYGIRL DESTROYGIRL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does "SAT" mean?
Or rather what does it stand for, if anything

@sunzenshen
Copy link
Contributor Author

What does "SAT" mean? Or rather what does it stand for, if anything

I meant this to mean SATellite to imply another GITS reference. Other suggestions from Discord include "LNK" for upLiNK, or "RC" for remote control. Maybe we should poll to community and tweak this 3 letter label later?

@sunzenshen sunzenshen requested a review from a team October 1, 2025 02:53
AdamTadeusz
AdamTadeusz previously approved these changes Oct 14, 2025
@AdamTadeusz
Copy link
Contributor

I would remove most of the changes in this pr, including the operator thing, the ping changes, move GetPlayerNameWithTakeoverContext to somewhere in c_neo_player, make sure the name returned by it is less than or equal to MAX_PLAYER_NAME_LENGTH and just call it wherever we want to display a player's name with the controller, including in the squad list and in the spectator gui. I wouldn't worry about casters, I don't expect bots to be used in tournaments, and not being consistent by changing how the name is displayed in all these locations is just gonna confuse the player further.

@sunzenshen sunzenshen force-pushed the spec-player-takeover-name-replacement branch 3 times, most recently from a19aa90 to d2da76c Compare October 15, 2025 05:44
AdamTadeusz
AdamTadeusz previously approved these changes Oct 21, 2025
@AdamTadeusz AdamTadeusz requested a review from a team October 21, 2025 11:31
@sunzenshen sunzenshen force-pushed the spec-player-takeover-name-replacement branch from 25c3a7e to ba48f6c Compare October 22, 2025 04:25
@sunzenshen sunzenshen added the Enhancement New feature or request label Oct 25, 2025
@sunzenshen sunzenshen force-pushed the spec-player-takeover-name-replacement branch from ba48f6c to fc70aeb Compare October 28, 2025 06:31
AdamTadeusz
AdamTadeusz previously approved these changes Nov 9, 2025
@AdamTadeusz AdamTadeusz requested a review from a team November 9, 2025 12:15
@sunzenshen sunzenshen removed the request for review from DESTROYGIRL November 24, 2025 04:30
When a spectator takes over another player, display their name with the format of: "target_name (spectator_name)"

Swap stats on the scoreboard when taking over another player

This has the effect of making it seem like a spectator really took the place of a bot/player, while their original scoreboard place looks like them but deceased.

Helper for displaying full takeover context names

If a player is taken over by a spectator, display the full context of the takeover relationship in the killfeed, whether the taken over player is a killer, victim, or goal captor.

Get spec display class at takeover, not death

Restore spectator's class after bot takeover
@sunzenshen
Copy link
Contributor Author

sunzenshen commented Dec 5, 2025

After fixing the merge conflict, performed a quick sanity test that the player UI elements are still working as intended:

image

^
(break: different round between the two screenshots)
v

Screenshot 2025-12-04 223401

That said, I'm not 100% sure if the non-host not having a Steam avatar is a quirk of host vs non-host (or of Steam logins), or if that's some kind of issue with displaying the Steam avatar?

For the record I'm still using the -insecure multiple game client bat script:

hl2_win64.exe -game neo -insecure -allowdebug -sw -dev -multirun +sv_lan 1

DESTROYGIRL
DESTROYGIRL previously approved these changes Dec 5, 2025
Copy link
Contributor

@DESTROYGIRL DESTROYGIRL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems to work fine, and is easy to understand for me. I personally would not copy the profile picture over but we are far past the bikesheddery at this point
Also see my comment about m_iClassAtTimeOfDeath naming suggestion

@DESTROYGIRL DESTROYGIRL requested a review from a team December 5, 2025 18:57
@DESTROYGIRL DESTROYGIRL requested a review from a team December 6, 2025 11:25
@DESTROYGIRL DESTROYGIRL added the UI/HUD Relates to the HUD, NeoUI, menus, etc label Dec 9, 2025
@sunzenshen sunzenshen merged commit 16c54b9 into NeotokyoRebuild:master Dec 11, 2025
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancement New feature or request UI/HUD Relates to the HUD, NeoUI, menus, etc

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants