Skip to content

Conversation

@JamesVanBoxtel
Copy link
Contributor

Repost of this commit since it was reverted.

The Debug Settings system provides runtime-configurable debug features through a UI overlay. Settings are persisted to config.debug and can be accessed anywhere via the DebugSettings singleton.

Also provide a way to generate the debug menu and surface it from a debug button.

To support this new button and future overlays, add a root element to the game so we can order overlays

Updated Bool Selector to size correctly
Updated Style Selector creation to make sure sizing and layout is right Reload main menu when you come back to it
Make navigation stack a UIElement so it works with touch handling

Fixes #697

Repost of this commit since it was reverted.

The Debug Settings system provides runtime-configurable debug features through a UI overlay. Settings are persisted to config.debug and can be accessed anywhere via the DebugSettings singleton.

Also provide a way to generate the debug menu and surface it from a debug button.

To support this new button and future overlays, add a root element to the game so we can order overlays

Updated Bool Selector to size correctly
Updated Style Selector creation to make sure sizing and layout is right
Reload main menu when you come back to it
Make navigation stack a UIElement so it works with touch handling

Fixes panel-attack#697
@JamesVanBoxtel JamesVanBoxtel added this to the 25.1 milestone Oct 31, 2025
local InputCompression = require("common.data.InputCompression")
local ReplayV3 = require("common.data.ReplayV3")
local MatchRules = require("common.data.MatchRules")
local DebugSettings = require("client.src.debug.DebugSettings")
Copy link
Collaborator

@Endaris Endaris Nov 8, 2025

Choose a reason for hiding this comment

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

We should not introduce a dependency to the client here as it means that we would have to deploy client code on the server which does not make sense.
I think ideally Match should have its own internal debug configuration that is always set on construction and defaults to non-debug values, e.g.

Match.debug = {
  enabled = false,
  vsFramesBehind = 0
}

The client can then update the match configuration from its client configuration after it was created and Match only needs to check values internally that are guaranteed to exist.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Fixed

@JamesVanBoxtel JamesVanBoxtel merged commit 7fd334e into panel-attack:beta Nov 9, 2025
2 checks passed
@JamesVanBoxtel JamesVanBoxtel deleted the debugSettingsReborn branch November 13, 2025 17:41
Endaris added a commit to Endaris/panel-game that referenced this pull request Nov 18, 2025
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.

In debug build, menu doesn't fit in one screen

2 participants