Skip to content

Native spectator overlay - #2071

Open
nullsystem wants to merge 17 commits into
NeotokyoRebuild:masterfrom
nullsystem:SpecOverlay
Open

Native spectator overlay#2071
nullsystem wants to merge 17 commits into
NeotokyoRebuild:masterfrom
nullsystem:SpecOverlay

Conversation

@nullsystem

@nullsystem nullsystem commented Aug 16, 2026

Copy link
Copy Markdown
Collaborator

Description

Works with demos and live, native implementation of the competitve spectator overlay which have player cards side-to-side on screen. Features, coloring, and fades/animations as close to the likeness of the websocket overlay, but not completely exact.

Off by default, use cl_neo_hud_spectator_overlay_enabled 1 to turn it on.

  • DONE: Show full equipments (like in OG:NT websocket overlay)
  • DONE: Linux+Windows: Check 1440p, 4k. Use x0.75/x0.5 from 1080p
  • DONE: Alter avatar for dead player's avatar
  • DONE: Check Windows (fonts)
  • DONE: Spec binding for overlay
  • TODO: Separate PR: Top area team name + logos [WIP] Native spectator overlay - Team top area info #2085
  • TODO: Separate PR: NeoUI setting UI to toggle + setup team name + logos

Toolchain

  • Windows MSVC VS2022
  • Linux GCC Distro Native Arch/GCC 16

Works with demos and live, native implementation of the competitve
spectator overlay which have player cards side-to-side on screen.
Features, coloring, and fades/animations as close to the likeness
of the websocket overlay, but not completely exact.

* TODO: Show full equipments (like in OG:NT websocket overlay)
* TODO: Check Windows (fonts)
* TODO: Check 720p, 1440p, 4k. Use x0.75/x0.5 from 1080p
* TODO: Separate PR: Top area team name + logos
* TODO: Separate PR: NeoUI setting UI to toggle + setup team name + logos
* Also moved x[round kills] to on top of avatar
* Reorder XP/Death on NSF side
Mainly for higher res like 1440p and 2160p/4k
CAvatarImage altered so it generated a dead avatar variant where the
colors is brightened, saturated, and grayscaled to red.
@nullsystem nullsystem changed the title [WIP] Native spectator overlay Native spectator overlay Aug 17, 2026
@nullsystem
nullsystem requested a review from a team August 17, 2026 22:35
@nullsystem
nullsystem marked this pull request as ready for review August 17, 2026 22:36
The menu isn't scaled for higher res properly so just let it have its
own variant of Default for now.
@Agiel Agiel added the Tournament Priority Issues to be prioritized for the upcoming NT;RE tournament label Aug 18, 2026

@AdamTadeusz AdamTadeusz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

doesn't compile with client server unity build disabled, missing include:
#include <vgui_controls/ImageList.h>

@nullsystem
nullsystem requested review from a team and AdamTadeusz August 18, 2026 17:09
@nullsystem nullsystem added the New Changes for Reviewers New changes has been made. This label is mostly to notify reviewers. label Aug 18, 2026
@nullsystem

nullsystem commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator Author

@AdamTadeusz Fixed non-unity build and applied the more aliased looking outline for the round-kill + hp text.

0a655c9
d8ea890

AdamTadeusz
AdamTadeusz previously approved these changes Aug 19, 2026
Comment thread game/neo/resource/ClientScheme.res Outdated
Comment thread src/game/client/neo/ui/neo_hud_spectator_overlay.h Outdated
Comment thread game/neo/scripts/HudLayout.res Outdated
Comment thread src/game/client/neo/ui/neo_hud_spectator_overlay.cpp Outdated
Comment thread src/game/client/neo/ui/neo_hud_spectator_overlay.cpp Outdated
@AdamTadeusz
AdamTadeusz requested a review from a team August 19, 2026 12:55
@nullsystem

Copy link
Copy Markdown
Collaborator Author

@AdamTadeusz New changes: c92eb32

AdamTadeusz
AdamTadeusz previously approved these changes Aug 19, 2026
@AdamTadeusz
AdamTadeusz requested a review from a team August 19, 2026 18:43
Now all CAvatarImage will also generate a dead texture as well as normal
one at the same time rather than requiring a separate var + fetch. So
one fetch for two avatar textures now. Also apply dead texture in
scoreboard.
@nullsystem

Copy link
Copy Markdown
Collaborator Author

New commits, fixing merge conflicts and improving dead avatar handling:

d1e24ee
70e32c1
009eda6

AdamTadeusz
AdamTadeusz previously approved these changes Aug 20, 2026
@AdamTadeusz
AdamTadeusz requested a review from a team August 20, 2026 08:51
Similar to top hud spec binds but for overlay. Also the players order in
card array now changed to make sure it's Jinrai team first always.
@nullsystem

nullsystem commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator Author

Added spec bindings for overlay: be0a98f

Also most of CNEOHud_SpectatorOverlay::UpdateStateForNeoHudElementDraw diff is just indenting to be inside of iPutTeam loop.

Now both share the same binds but when overlay enabled will use overlay
to deal with binds and disable top hud, if overlay disabled the top hud
deals with it.
@nullsystem

Copy link
Copy Markdown
Collaborator Author

Binding now shared with top HUD: f3aa76a

Disables top HUD if overlay's on and bindings deals to overlay.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

New Changes for Reviewers New changes has been made. This label is mostly to notify reviewers. Tournament Priority Issues to be prioritized for the upcoming NT;RE tournament

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants