* Format the standard CPU and GPU profiler data as CSV, to simplify its analysis
* Include the internal identifier name of the track in the report name, or 'menu' if there is no active track. This uses the current track at the time of report saving. It is possible to keep the profiler on through multiple tracks and menus, but it's on people enabling the artist debug mode and the profiler to use it sensibly
* Stop the profiler when saving data, if it's not already stopped
* Compute, when profiling is stopped, for all integer FPS values up to 1000, three key metrics:
- The number of frames too slow to reach this FPS value
- The proportion of total time spent in frames slower than this FPS value
- The proportion of total time spent in frames beyond the maximum duration associated with this FPS value
* Compute three key indicator values:
- Steady FPS (highest FPS with no more than 1% time spent in slower frames and no more than 0.1% time spent beyond the maximum duration)
- Mostly stable FPS (highest FPS with no more than 12% time spent in slower frames and no more than 2% time spent beyond the maximum duration)
- Typical FPS (highest FPS with no more than 50% time spent in slower frames and no more than 10% time spent beyond the maximum duration)
* Save an additional 'perf-report' containing this new data
Traditional performance measurements, such as average FPS and 1% lows (which are typically based on the 1% slowest frames, not on the 1% slowest gameplay time), are flawed because they unduly reward outputting more fast frames. Increasing the number of fast frames without speeding up the slow frames is useless when it comes to making the game feel smooth, which is especially critical in a racing game.
Missing features:
- Displaying a summary of the performance test instead of the normal end screen
- Confirm to the user that the report has been successfully saved
- And more advanced options.
* Use explicit activation and desactivation functions for the profiler to improve code clarity and robustness
* In the pause dialog, only display the 'back to race' and 'exit' buttons in benchmark mode
* Relabel the buttons in the pause menu in benchmark mode
* Use 'Performance test' in user-facing texts to ensure better translations
* Fix parts of the UI disappearing when leaving the pause menu in benchmark mode
Additional known issue introduced in the previous benchmark commit:
* With big text sizes, the performance test button overflows in the graphics settings.
* Add a button in the graphics options to start a benchmark
* Added logic to play a custom replay for benchmarking
* Added logic to automatically start and end the profiling as the race starts and ends, when in benchmark mode
* Disable the profiler drawings in benchmark mode, they take additional resources and are useless
* Keep the race going when the pause menu is opened, as it would otherwise distort the results
* Added logic to clean up the profiler data each time profiling is switched back from off to on. This avoids multiple profiling sessions piling up in one report, for example when benchmarking tw
* Added a sped up Black Forest replay for use during the benchmark
Missing features and known issues:
* The end screen should display a benchmark result summary instead of a normal end screen
* Entering and leaving the pause menu in benchmark mode makes some parts of the race UI disappear
* The end screen should send the player back to the graphics settings, not the main menu
* Pausing and quitting can leave the profiler enabled when it should not be
* The options in the pause menu should be customized in benchmark mode
* The replay used for benchmarking should be configurable in a data file
* Automatically testing multiple graphics settings and providing an overall summary
* And more advanced options.
* Use error icon in crash report dialog
Found this change when going through old folders, looks like it never made it in.
* Update crash error message
Improve grammar; avoid reports for one-off errors; link to proper subforum (id 17 is STK General)
* Add more functionality to the debug menu
Includes:
* Front of kart view
* Inverse side of kart view
* Change to kart #9 or #10
* Attachments for AI karts
* Fix enumeration value not handled in switch for debug camera
* More enhancements to the debug menu, part 2
Includes:
* Restore access to the anchor/anvil powerup
* Clear the current powerup or attachment
* Change to kart #11 or #12
* Flatten karts as if they were hit by a swatter
* Block most of the view with plungers
* Enable executing some keypress actions from the debug menu in a new sub-menu
Includes:
* Rescuing karts from menu
* Pausing the game from menu (but keypresses will cause the game to crash)
* Moved "To next kart" menu entry to be right below "To previous kart" for easier reach
* Change print kart positions to info level, better labeling of side kart views
* Prevent crashes when trying to use 'Behind wheel view' on a ghost kart
* Add close button to the debug slider dialog, and a function to enable/disable spinners
* Make it easier to read and select kart camera targets from the debug menu
* Add another dialog (reusing the debug slider code) to allow the user to select
from a slider the kart number to change to
* The 11th and 12th target slots have been removed to make the submenu cleaner,
but the 9th and 10th slots have been left in place
* The predefined slots (1st place to 10th place) actually use numbers
* Improve the appearance of the FPS (frames per second) counter
* Shift the position closer to the center, so that in-race kart icons are not obscured
* The box and text position adapt based on the screen resolution
* Use a thin black border for the font, and make the font white-colored
* Decrease the font scaling to 0.7, so that other UI elements can be seen more easily
* Improve debug keyboard shortcuts handling, rearrange some shortcuts
Most shortcuts are now handled by Debug instead of InputManager directly
Other changes include:
* Fix moving right in 1st-person view not working
* Change the 1st-person view shortcuts to work more like in Blender
* Add more keyboard shortcuts for quickly seeing the top and sides of a kart
* The key to show player list in soccer mode no longer needs to be held down
* Rearrange some shortcuts to flow more naturally
New list of debug keyboard shortcuts:
* F1 - Normal view
* F2 - Top view
* F3 - Right side of kart view
* F4 - Left side of kart view
* F5 - 1st-person view
* F6 - Reload SP textures
* F7 - Next kart
* F8 - Previous kart
* F9 - Show player list in soccer mode
* Q - Move 1st-person view camera down
* E - Move 1st-person view camera up
* R - Rotate 1st-person view camera right
* F - Rotate 1st-person view camera left
* Exit demo mode when there also are no dialogs active; fixes related crashes
* Improve the debug menu, various fixes to some menu items, and mouse-accessible actions
Includes:
* Debug menu opens at the cursor position, but not at off-screen places
* Ensure that the debug menu stays (almost) within the actual window
* Middle mouse button can also be used to access the debug menu
* Move all items into submenus, rearrange most submenus to keep a compact size
* Add ability to set powerup and nitro amount by debug slider dialog
* Label the some commands with the new keyboard shortcuts
* Screenshots can now be saved via the debug menu
* Texture reloading can now be done via the debug menu
* Add more debug shortcut keys, change many of the existing ones
The full shortcuts list will be explained later
Includes:
* Use Control and Shift keys to fit more shortcuts onto fewer keys
* Label the debug menu items with the keys that can be used to activate them
* Fix more debug menu items causing game crashes in certain situations
* Add help message dialog to tell users the list of static/debug shortcuts; incomplete
* Slightly alter the free margins that the debug menu can appear in
* Render target textures (RTT) can now be dumped via the debug menu
* Replace the 10th kart camera target with the last kart camera target
* Switch the shortcuts used for activating history save and manual replay saving
* Finish labelling the remaining debug actions, complete the debug keys help dialog
Unfortunately, the now unused tutorial message dialog has been repurposed for this use,
and the font sizes greater than 'Large' will cause some text to draw outside the dialog
* Document the remaining command-line parameters, clean up some of them
This adds another method that will print out the previously undocumented debug options
Rename --gamepad-visuali[s,z]ation to --gamepad-visuals
Also fix some comments related to the user config, including the game mode numbers
* The AI cannot handle the anvil powerup anymore, but it won't spam logs anymore
* WIP support for Nintendo Switch
* OpenAL is usable
* Remove some debug code, add manual crash when DEBUG_NXLINK is on
* Remove more debug logs
* Support touch, account name detection, language detection. Remove resolution settings
* Stylistic changes
* SFXManager: update on main thread
* Add build script, remove crypto.hpp changes, disable opengl recorder on switch
* make: use sudo where needed, libs=>lib, portlib=>portlibs
* make: build harfbuzz with freetype
* main: remove DEBUG_NXLINK
* socket_address: this comment is no longer relevant
* Fix indentation in SDL, remove extra debug logs from InputManager
* InputManager: make log debug, not info
* CMakeLists: add mbedtls include dirs on switch
* main: deinitialize stuff
* main_loop: fix format