Changes by CrystalDaEevee:
- Fix some UI elements that were incorrectly using the base Cartoon variant instead of the correctly contrasted Cartoon Coal variant
- Use a dark table-header to fix contrast issues
- Fix Licenses.txt
- Use new 'base theme name' and 'variant name' values for skins to determine spinner values
- Ensure the skin is correctly set based on the values of both spinners
- Keep the options in the 'variant' spinners correct when updating the base spinner, as different base themes may have different variants (or no variants)
- Many other small changes to make it all work smoothly.
- Rename the folders of the classic skins, as the order of variants is determined by folder name alphabetic order. Using the same structure as with the cartoon skins ensure the variant order is the same.
- Also remove some redundant comments that were missed in the previous commit.
Remaining:
- Tidying up the code
- Ensure that if a variant exists in both the previous 'base theme' and the new 'base theme', switching the base theme while this variant is active doesn't reset to the default variant.
Instead of duplicating the general skin-making advice in all 12 stkskin.xml files, centralize it in one place.
Also correct header comments regarding the theme names.
The variants use the same accent colors as variants of the standard skin : blue (ocean), green (forest), black (coal), pink (ruby), yellow (desert). Made by CrystalDaEevee with help from QwertyChouskie (base theme advice, original cartoon theme) and myself (forest screenshot, advice regarding screenshots, initiative to get it merged)
- The code starting a tutorial race was duplicated in three places. Consolidate it in one place.
- When launching the tutorial from the overworld, use the last used input device instead of the keyboard
- Restore the old cmake policy. The new way to replace that code suggested by the cmake manual fails CI, and debugging MSVC fantasies without a local install is a nightmare.
- Restrict this policy setting to MSVC as that's the only compile path that needs it, avoiding the warning for non-MSVC builds.
- Add missing define guards
- Remove some extraneous includes
This gets rid of deprecation warnings. Cmake 3.6 has been out for almost 8 years by now, so this requirement should not cause undue trouble to people trying to compile the game.
- Call autoComputeLevel to make the LoD distance for on-track items (bananas, nitro, gifts, etc.) depend on the user settings
- Ensure that the distance is reasonably high even on the lowest settings
A basic restart of the screen does not reinitialize what's needed to properly update anisotropic filtering. Therefore, ensure a full restart is done, but avoid showing the user a resolution confirmation dialog afterwards.
Also use a new applySettings function to avoid having two places to update when changing the code that manages applying updated graphics settings.
- Add a new dialog that gives some information and asks for the user's preferences
- Ensure that one and only one of the 'Performance', 'Balanced' and 'Graphics quality' checkboxes is active
- Add a new button in video settings to access this dialog
Also:
- Since draw distance is used to account for the object's size, have parameters depending on geometry detail correct for it. The minimum switch distance increases slightly with each geometry detail level.
- Clarify what the formula spreading the distances for each LoD level does
- Adjust slightly the auto-LoD multipliers.
Based on the alerts for timed challenges:
- Change the timer color when an elimination is coming shortly
- Play a sound when an elimination is coming shortly
Add all significant changes since the release of 1.4 that will be included for the 1.5 release.
The changelog for 1.4 remains incomplete and will be updated later.
Doing additional checks every frame was wasteful, and this change will also allow to easily adapt this logic to account for an object's size.
Also fix and improve comments
The SFX manager and SFXOpenAL would check if SFXs are enabled before pausing (looping) sound effects, so disabling SFXs in the options would fail to stop looping SFxs.
Furthermore, 'OnSoundEnabledBack' would pause all looping SFXs. This commit checks for the pause status of the World (if applicable) to decide if the looping SFXs should be immediately resumed (networking) or not (real pause).
Also clean some comments and move some code around.
This patch doesn't address sound resuming when going from the pause menu to the options in networked mode, whereas it doesn't in a normal race. This is what caused the bug to trigger in the first place, but it's very minor by itself and the design of the SFX code could have triggered other future issues too.
- It is visually more pleasant to have a low quality model than to have a sudden popping from the high quality one appearing when already close
- This also boosts performance
The latest version was bugged as it removed all standard objects, but removing only objects marked by track-makers removed almost nothing of note, and bugs would sometimes remove normal objects. Fix#5052. Fix#5066. This makes #5063 moot.
- Increase the effect preventing LoD objects from popping at very short distances
- Add comments to all the steps and other clarifications
- Update the multiplier values to be approximately equally spaced geometrically
Same approach as with the options screen: managing all the generic includes needed by all help screens in one place and adding a new standalone 'switchTab function
It makes a lot of sense there too, and it makes the UI settings less crowded. This allows also to put the label as a section title, fixing an overflow that happened with some translations when using the very large font size.
* Use a new file for includes to reduce redundancy between option files
* Remove some unnecessary includes
* Reorder some includes
* Increase spacing in the graphics settings screen
* Increase spacing in the audio settings screen
Use a 'drawTeamScorers' function to reduce code duplication and make it easier to understand what's going on. Some minor clean-up has also been done, but more could be done, especially regarding variables that had to be recreated in the new separate function.
- Remove excessive indentations in race_result_gui.cpp
- Move the bulk of the displayPostRaceInfo function into new functions: displayHighscores, displayLapDifficulty and displayChallengeInfo
- Add comments for the closing braces of functions, for the closing braces of some large code blocks, and explaining some functions
- Increase the Auto-LoD distance on tracks with a low scene complexity (fix#5065)
- Increase the Auto-LoD distance when the old formula gives a too low base distance (small objects). This helps with some of the worst popping issues for comparatively little performance cost.
- Make the LoD distance auto-compute code clearer by moving the settings-related multiplier after the squaring step
- Also fix a couple of unrelated warnings about comparison between signed and unsigned integers
With the existing engine and tracks, when the framerate is rather GPU-limited, the performance cost of increasing LoD distance is minor. It becomes more significant at higher framerates when the CPU can be more of a limiting factor, but it also noticeably enhances the player experience by removing the distracting 'popping' when an object visibly changes shape or appears because of LoD.
- Lowest is changed from 0.75 to 0.8
- Low is reduced to 0.8, just like Lowest. The difference is now only the display of optional geometry objects, but it's a big difference.
- Medium is changed from 1.25 to 1.3
- High is changed from 1.3 to 1.8
- Very high is changed from 1.8 to 2.4
- Ultra is changed from 3.0 to 3.2
- Ensure that optional geometry objects are properly removed. This provides a massive performance boost, at the cost of visuals. Benchmark on graphics 2 with lowest geometry level: bugged has 202 steady FPS, 230 mostly stable FPS, fixed has 427 steady FPS, 495 mostly stable FPS.
- Restrict the removal of objects based on geometry detail to the lowest geometry level. This ignore the different levels of geometry removal that track authors can set for objects, and which was mostly unused: all objects marked for removal at any level are either all removed or all kept.
The assert could be triggered when a new sign-in request was sent before the first one was resolved, usually when using the enter key to request the sign in. Since it can happen in normal operations to have the player profile status different from signing out or signed out, an assert is incorrect.
Also fix server-only compilation for the previous commit.
* 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.
- Customize the race result screen to offer three options : leave to main menu, save test data, and return to video settings
- Ensure all three options do as they say
- Ensure that the benchmark mode and the profiler are always turned off when leaving through the end screen
* 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.
* Quick cull invisible LOD nodes
* Reduce dynamic cast
* Fix for Vulkan
Maintainer's comment: Helps only in select tracks and more in already fast frames than in the more problematic slow frames, but an improvement nonetheless.
Add 3 new setting values, increasing the distance at which a lower level of detail is used by factors of 1.6, 2.0 and 3.0 (default is 1.25). This allows players for which getting enough FPS is not an issue to reduce pop-in and improve the looks of tracks.
In local testing with a strong CPU and a weak GPU, the performance impact of increasing the view distances is small and well worth it, but this may vary from system to system. More testing is needed on different systems, but this suggests room to increase minimum, default and maximum values in future releases.
This patch also slightly changes the auto-computation of LoD distance, making the transition around a distance of 250 smoother.
Update to Cantarell 0.303.
Upstream releases only include VF files now.
This single weight file was extracted from debian package fonts-cantarell_0.303.1-1_all.deb
- Change the colors of the background and borders of the textbox to ensure they always contrast with each other
- Make the color of the textbox cursor the same as the skin's text color - this ensure it always has good contrast
- Offset the display of text slightly in the textbox. This avoids the cursor 'blending in' with the textbox border
- Correctly format the log to display the actual UID
- Fix getReplaydIdByUid being called with an UID of 0, when no replay to compare has been selected
- If there is 2 or 3 karts in the GP, karts in 2nd and (if any) 3rd place display a sad animation
- If there is 4 karts in the GP, the kart in 3rd displays a sad animation
- If there is 5 karts or more in the GP, all karts on the podium display a happy animation
The first kart in the GP always displays a happy animation even if alone.
- Fix a bug that made the last lap SFX played only if music was on.
- Fix the behavior of the music volume adjustment when the last lap SFX is played. Previously, the music volume was only adjusted when the music volume was above a certain threshold, but when it was above that threshold, the adjustment was too strong.
- Set the minimum sound volume to 0.025f instead of effectively 0.1f. This is particularly helpful for headphone users.
- Make the step between each volume setting exponential.
- Add parameters to remember the parameters of the audio spinners.
- Increase the default number of values the audio spinners can take from 10 to 15. Old config files will keep using 10.
- Set the default values to 10 (spinners), which translates to 0.2678 (volume fraction) instead of 0.6 (previous default)
Not displaying a win message when there is only one kart was intended behaviour. A win requires the possibility of a loss. However, displaying the finishing rank with only one kart is ugly.
* Update soccer_world.cpp
edited getRescueTransform function in soccer_world.cpp so that the rescue bird places the kart towards the ball in soccer, as requested by many players.
- Add and use new icons
- Make some labels more explicit
- Properly document copyright of both the new icons, and the icons used to make them
- Note that the Cartoon icons fall under the same copyright as all other Cartoon icons, so no licenses.txt update is needed
`setLabel()` does not work in `beforeAddingWidgets()`, use `setText()` instead as was originally used when the code was written.
This fixes a regression introduced in 0ace825d5f (almost exactly 10 years ago!)
In UX, back/cancel/etc buttons usually go on the left, while forward/confirm/etc go on the right. (Note that even the icon for "Back" is a leftwards-pointing arrow.) STK put the Back arrow button on general screens in the upper left corner, but before this commit, put back/cancel/etc on the right in dialogs and such. This commit fixes things to be in line with standard UX conventions, and also in line with the pre-existing upper-left corner Back button placement on screens in STK.
https://ux.stackexchange.com/a/63239
Since we only show one button at first, make it centered. (This is the continue button that switches from displaying race results to overall GP results.)
Fixes most of the occurrences of these warnings in the terminal/log:
[warn ] LayoutManager: Statically sized widgets took all the place!!
Removing these spacers did not make a difference in actual layout/spacing according to my testing.
`text_align="top"` isn't even valid, `top` is only valid for `text_valign`. Not sure how this got messed up in the first place, but this finally fixes it.
* Hide the cursor during gameplay
The cursor will show back up whenever:
- The mouse is moved
- The game is paused
- The race finished
This is probably not the best implementation, but it's a start.
* Wrap mouse display code in PT_MAIN checker
* Moved mouse display code to updateGraphics
* Protect SDL calls with #ifndef SERVER_ONLY
---------
Co-authored-by: Semphris <semphris@protonmail.com>
this fixes opaque shadow rendering on drivers that implement
mediump as 16bit
fixes#4855
Signed-off-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Like other versions before, gcc 13 moved some includes around and as a
result <stdexcept> and <cstdio> are no longer transitively included.
Explicitly include them for std::runtime_error and snprintf.
- Fix capitalization of "Standard" in kart and track selection screens
- Fix both "All" and "Standard" in random GP screen
- Code style/documentation/consistency improvements
From Apple:
Starting with Xcode 14, bitcode is no longer required for watchOS and
tvOS applications, and the App Store no longer accepts bitcode
submissions from Xcode 14.
Xcode no longer builds bitcode by default and generates a warning message
if a project explicitly enables bitcode: “Building with bitcode is
deprecated. Please update your project and/or target settings to disable
bitcode.” The capability to build with bitcode will be removed in a future
Xcode release. IPAs that contain bitcode will have the bitcode stripped
before being submitted to the App Store. Debug symbols for past bitcode
submissions remain available for download. (86118779)
Run directly it fails with: `./make.sh: 203: Syntax error: "(" unexpected`
A scan on https://www.shellcheck.net/ shows too many issues, this needs to be redesigned a lot to be clean of bashisms
vkCmdBeginRenderPass: Hazard WRITE_AFTER_WRITE vs. layout transition in
subpass 0 for attachment 1 aspect depth during load with loadOp
VK_ATTACHMENT_LOAD_OP_CLEAR.
1. Remove pow in shader and do srgb conversion in code
2. Fix setGreen and setBlue order
3. Multiply particle color first like vertex color in the other shaders
4. Fix incorrect smoothstep
It used to work in 1.2 because the top of the invisible wall was
not covered, which will affect height map calculation. Now we
ignore physics only objects when doing the height map calculation.
* 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)
My general strategy of getting ports to work on Haiku is to just take advantage
of whatever makes things work on FreeBSD by adding an additional condition and
then fixing up things later once it compiles successfully. This generally
works, as Haiku contains FreeBSD headers for compatibility and code that
takes other operating systems into account other than Windows, Linux and OS X
and has a higher degree of POSIX compatibility tends to work on FreeBSD and
Haiku. This strategy is not perfect, and this commit proves it.
Haiku is the successor of BeOS, which, in turn, shows similarities to macOS
every now and then, as the company almost acquired Be, Inc., but later chose to
acquired NeXT, Inc. instead.
`xdg-open` is not available on Haiku by default the same way it is on
FreeBSD and Linux. With that in mind, this should fix URLs, which do
not not work properly on Haiku. Actually, nevermind, I forgot that there
is actually a package available that adds support for them. But still.
The less dependencies, the better, probably. This is also how other
packages with ports available on Haiku solve this problem.
- add size and display settings for powerup icon in user settings
- move minimap display settings in user settings
- fix some comments in stk_config.xml
Winget relies on this value to get the version of a program.
If it's missing winget will just download the newest version even if the program is up to date.
See https://github.com/microsoft/winget-cli/issues/1255
Anything not provided or defined by a skin will be used from the defined base skin, if specified.
For example, if a skin provides a base_theme of "cartoon", any icons/buttons/etc. not provided by the skin will be pulled from "cartoon".
font_manager->loadFonts() needs data from the GUI skin. Move this initialization to after we naturally have the data, instead of doing an extra dummy initialization just to get this data.
Explicitly pass STATIC to tinygettext add_library() call to make sure
it's always built as static, even when distro's cmake is configured to
build libs shared by default.
- Fix a bug that prevented the alert sound from playing in timed Story Mode challenges.
- Extend the visual alert (colored time) to the last 15 seconds (previously 5). The sound alert remains limited to the last 5 seconds.
- Switch from yellow to orange for the timer when 5 seconds are left and the sound alert starts playing.
- Significant code simplification (tested for non-regression in soccer, FFA, story mode timed challenge)
I had previously suggested a pull request for it. However, the main issue with my original pull request was that it didn’t contain some packages I already had installed. So, I’ve corrected on misspelled package name, and added the remaining ones.
The /usr/share/pixmaps location is considered a legacy location for
application icons; since the application icons are already installed in
the global XDG hicolor theme, then simply stop installing the 512px one
in the legacy pixmaps location.
* RichPresence: support addon tracks and karts
* RichPresence: use 'Story Mode' for internal tracks
* RichPresence: only cache is assets has data
* RichPresence: update RPC after asset list retrieved
* RichPresence: move AssetRequest processing to main thread
* WIP RPC support
* Might have windows support now, don't peek
* Windows support
* RichPresence: __SWITCH__ => DISABLE_RPC (for MOBILE_STK support)
* RichPresence: Handle JSON strings according to spec, support for addons icon
* RichPresence: use translated difficulty name
* RichPresence: disable when client_id=-1
* RichPresence: thread connection, show server name on RPC
* RichPresence: destroy on close
* RichPresence: don't compile methods at all if DISABLE_RPC
* RichPresence: fix windows compile (untested)
* RichPresence: fix for mac
* RichPresence: Linux needs MSG_NOSIGNAL still
* RichPresence: fix memory leaks, don't spam update while not connected
* RichPresence: free thread on terminate
* RichPresence: handle initial registration
* RichPresence: fix compiler warning
The player kart, difficulty, game mode, and reverse are no longer static values
Also ensure that there is a value pressed when exiting demo via a keypress
* 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
* Enable LoD autocompute
* bring back the autocompute lod function
* Add the area as main function to compute the lod level
* Bring back the area based auto lod computation
Co-authored-by: samuncle <samuncle06@gmail.com>
* Add in-game high score selection screens, based on the ghost replay screens
Its functionality is basic for now, mainly to let players have a central place to view
their high scores
Other things to improve:
* Allow sorting the high score entries by criteria
* Allow deleting high score nodes and possibly entries
* Use better icons
* The string for the high scores title in the track info screen can now be translated
* Refine in-game high score selection screens
Includes:
* High score info dialog now shows track and setup information
* A race can be started with the displayed setup, using the current player and kart
* Icon to access the screen now placed between the tutorial and achievements buttons
* It is possible to delete a specific high score group or all of the high score groups
* Change the order of some columns to make them easier to hide for non-linear modes
* The list will now filter out enpty high score groups
* Replace bomb icon (as used in the help menu) with the full object version from STK 0.8
It has been edited to remove most of the transparency in the object itself
* Implement column clicking in the high score selection screen, and minor GUI fixes
Note that high score entry sorting is not yet working properly
Includes:
* Top right buttons replaced by button bar containing them; fixes unreliable clicking
* High score manager has some one-line functions moved into its header file
* High scores can be sorted by some criteria
* Sorting is done before every time high scores are saved
* Fix header define names for the high score info dialog
* Fix high score sorting, reorganize its associated code
* More refinements to the high score selection screen
Includes:
* Clearing high scores no longer causes memory leaks
* The manual refresh button has been removed, as it has been deemed useless
* Remove unused header files for the high scores information dialog header
* The high scores box in the track information screen no longer has '='
* Fix pressing escape key in the high score information dialog crashing the game
Also remove unused widget variables and unnecessary function overrides
* Do not write high scores for races that have 0 laps and/or have no real karts
* Allow passing a parameter to prevent high scores from temporarily being written
This setting lasts only as long as the game runs; it is useful during track and
kart animation testing, where unwanted high score entries should not be written
* Force update sources.cmake, as new source files are being added for high scores screens
* Fix memory leak and strings
Co-authored-by: Benau <Benau@users.noreply.github.com>
* Open the confirm dialog if exiting the grand prix editor with changes by escape key
* When launching the tutorial, use the last used device instead of the first keyboard
* When launching story mode, use the last used device instead of the first keyboard
* Make the kart color selection dialog more consistent with other dialogs
Includes:
* Add an icon button bar with containing actions to apply changes or to cancel them
* The kart only shows its straight frame, without animation; it is slightly smaller
* Adjust the vertical space between widgets, to try keeping the kart size larger
* Use a button bar for the video settings and custom camera settings dialog
A lot of old options for materials.xml format where flagged as deprecated. They are now removed. Addons will not break but might have a few visual artifacts. They should be upgraded by artists to the new structure.
The blender exporter was also cleaned.
* Added GitHub actions worlkflow file for Linux
Also includes content needed for macOS, but macOS builds are disabled because harfbuzz can't seem to install properly
* Change license of GitHub Actions workflow file to CC0
Co-authored-by: Semphris <semphris@protonmail.com>
We can see what is the feedback if it's fast enough for users. It still looks much better than without advanced lighting even when resolution is lower.
IMO auto scale doesn't have much sense on desktop computers, because advanced lighting was enabled by default for a long time and graphics level 3 should be fast enough as it is. And still now rtts scale it's easily configurable in options.
I fixed deactivated "render resolution" spinner when you enter graphics options when advanced lighting is disabled.
I also added a function that reads dpi on android and it sets rtts scale based on this value. SDL is not initialized yet in this place, so getDisplayDPI() is not possible.
Auto mode adjusts based on your display's DPI in order to hit a target DPI. Currently it will default to Always Full for render resolution, but High Quality or even Quality might make a good default, community testing is needed.
* few improvements of option UI
* small fix
* show the correct spinner text when not activated
* camera name for translation
* clean the code (loop camera spinner)
* Allow setting [again] track reverse mode via command line
* Make composer field in music information files optional
* Add support for loop end of music
* Remove print statements used for checking current music play time
* Support playing different music on race results screen
Also make them configurable in stk_config.xml
* Allow configuring grand prix win/lose and feature unlocked music in stk_config.xml
* Fix coding indentation style
* Fix warning when scrolling track screenshots in grand prix results
* Display the rank a player kart finishes in if not in 1st place
* Add gamerzilla support to achievements.
* Move all gamerzilla code into one file. Should we want to support another achievement system like Steam, it can be isolated to the WebAchievementsStatus class.
* Add WebAchievementsStatus files.
* Add version number to achievements file. Update graphics. Generate achievement list from internal system.
We should let VSync/m_max_fps (which defaults to 120) do their job. If a monitor has a refresh rate even slightly higher than 60FPS (e.g. 60.0007FPS), throttling will introduce stutters, even more so at modern high refresh rates (75, 90, 120, etc.)
This also cleans up the code, e.g. the var name `m_throttle_fps` was also being used in the main loop for a different function, despite having the same var name.
With the font size set to "Very Large" and the theme set to "Cartoon", the Apply button went slightly outside of the main box. This fixes that by putting the two checkboxes on the same row, which saves a bit of valuable horizontal space.
This improves things for #4378 but is not a comprehensive solution. It also includes unrelated improvements to this screen.
- Switch from 2 track rows to 3 track rows. This allows to show more tracks at once. Nonetheless amount of white space between track pictures is still significant. Showing the track name below each track is part of the issue, as it needs space on the bottom and margins on the side to avoid track names overflowing onto each other. Word-wrap for track title would incur a small vertical cost while gaining a lot of horizontal space. Alternatively, the track names could be hidden and only shown on hover (like the game's main track selection screeen).
- Select the standard set of tracks by default instead of all.
- Reduce the amount of vertical spacing for the buttons below the track picker.
- Group laps/reverse and ok/cancel vertically instead of horizontally. This creates clear visual blocks, as the reduced vertical spacing didn't work out well otherwise.
- Add a new selected track picture. The selected track's name is always shown as title, but some users may miss it or not know track names well enough. Now, which track is going to be added to the GP when clicking ok is obvious.
- When selecting a different track, change the lap number to the track's default.
The raw score remain used in the core of the formula for expected scores computations.
Also improve the handling of disconnects on rating, with new RD floors
(and so public rating penalty) for recurring disconnects (>= 3 in the last 64 races).
The raw score is less penalized than before, as it's not needed and
make expected score computations more reliable.
2020-08-27 21:43:16 +02:00
1919 changed files with 427988 additions and 182894 deletions
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update && brew bundle; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo mkdir -p /usr/local/include/; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo ln -s /System/Library/Frameworks/OpenGL.framework/Versions/A/Headers/ /usr/local/include/GL; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export CMAKE_PREFIX_PATH=/usr/local/opt/freetype/:/usr/local/opt/curl/:/usr/local/opt/libogg/:/usr/local/opt/libogg/:/usr/local/opt/libvorbis/:/usr/local/opt/openssl\@1.1/:/usr/local/opt/glew/:/usr/local/opt/fribidi/:/usr/local/opt/harfbuzz/; fi
script:
- mkdir "build"
- cd "build"
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then /usr/local/opt/cmake/bin/cmake .. -DFREETYPE_INCLUDE_DIRS=/usr/local/opt/freetype/include/freetype2/ -DUSE_SYSTEM_GLEW=1 -DOPENAL_INCLUDE_DIR=/usr/local/opt/openal-soft/include/ -DOPENAL_LIBRARY=/usr/local/opt/openal-soft/lib/libopenal.dylib -DFREETYPE_LIBRARY=/usr/local/opt/freetype/lib/libfreetype.dylib -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSERVER_ONLY=$SERVER_ONLY -DCHECK_ASSETS=off -DBUILD_RECORDER=off; fi
- if [[ "$TRAVIS_OS_NAME" != "osx" ]]; then cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSERVER_ONLY=$SERVER_ONLY -DCHECK_ASSETS=off -DBUILD_RECORDER=off; fi
This file documents notable changes to SuperTuxKart across versions since its inception.
It should be kept in mind that some versions have a less complete changelog than others, and that this changelog do not list the details of the many small bugfixes and improvements which together make a significant part of the progress between releases.
It should be kept in mind that some versions have a less complete changelog than others, and that this changelog does not list the details of the many small bugfixes and improvements which together make a significant part of the progress between releases.
For similar reasons, and because some features are vastly more complex than others, attributions of main changes should not be taken as a shortcut for overall contribution.
## SuperTuxKart 1.5 (TBD, still unfinished)
### Networking
* Improve track-voting logic when no majority is achieved, by kimden
### General
* Make the game's window resizable in all the screens, by CodingJellyfish (previously, most UI screens did not support resizing)
* New benchmark mode, by Alayan:
- Can be run with a few clicks, allowing to easily test the performance of various settings or to compare different systems
- Robust performance metrics that better reflect the impact of varying frametimes than Average FPS and 1% Lows.
* Fix incorrect unlock information in Story Mode after a Grand Prix, by CodingJellyfish
* Make the progression of audio levels geometrical and increase default steps, allowing to set lower audio levels and better accuracy for low audio levels (especially useful for headphone users), by Alayan
* Fix drive-on sound from materials being played when the game is paused, by Alayan
* Fix a crash trying to read replays when the random starting position setting is enabled, by Alayan
* Handle track names with spaces in the replay reader, by Alayan
* Various tweaks, bugfixes and code-quality improvements
### Graphics
* Improve the accuracy of the framerate limiter, by Benau
* Add more maximum framerate options to the built-in framerate limiter, by Benau (this does not affect physics, which run at 120FPs independetly of graphical FPS)
* Add some graphical effects for legacy video drivers, by Benau
* Ensure fragment shaders use high precision, to avoid rendering issues with some drivers, by zmike
* Fix a related precision issue causing black artifacts with GL_ES, by CodingJellyfish
* Fix other shader issues that could produce black artifacts in specific situations, by CodingJellyfish
* Various improvements to the automatic computations of Level of Detail (LoD) distances, by Alayan
* Improve draw call performance in some situations, by CodingJellyfish
* Enable new higher LoD and shadows settings, by Alayan
* Integrate LoD (Geometry Detail) settings in the graphics presets, by Alayan
* Prefer displaying a lower quality LoD model over switching to a higher quality one when too close, by Alayan
### User Interface
* Add a new Display tab in the Settings, by Alayan
* Allow to rate addons with a keyboard or a controller, and notify when trying to rate an addon while not logged in, by CodingJellyfish
* Fix an issue that prevented to go up with a scrollbar using a trackpad, by CodingJellyfish
* Improve the typing bars, especially for the coal theme, by Alayan
* Greatly improve UI layout for 'tall' resolutions (greater height than width), by CodingJellyfish
* Improve font scaling, by CodingJellyfish
* Various enhancements, by Qwertychouskie and others
### Mobile
* Don't keep the rescue button active after it stops being touched, when the finger keeps touching the screen (e. g. to handle the steering wheel), by S0nter
## SuperTuxKart 1.4 (31. October 2022)
### General
* Lap trial mode, by mrkubax10
* Fix parachute powerup, by heuchi
* Fix gyroscope on walldriving surface, by Benau
* Enable ARMv7 build for Windows, by Benau
* Restore macOS <= 10.14 support, by Benau
* Avoid triggering other goal lines when the goal is already scored, by kimden
### Graphics
* Items and stars animation, by Semphris
* LOD optimization, by Benau
* Implement HiDPI support in SDL2 properly, by Benau
* Beta Vulkan renderer, by Benau
* Make sky particle always fall vertically, by Benau
### Tracks and modeling
* Updated Konqi, by ZAQraven99
* New Godette kart, by ZAQraven99
* Updated Battle Island and Cave X, by Typhon306
* Fix broken invisible wall in Antediluvian Abyss, by Benau
* New textures in Shifting Sands, by KartOym
* Balanced starting positions in all official soccer fields, by Crystal
### Networking
* Add track searching to network track screen, by Benau
* Make limit of players in game configurable, by Waldlaubsaengernest
* Allow using real addon karts (same hitbox and kart type as in local game), by Benau
### User Interface
* Add left side ghost replay difficulties, by ldoyenard
## SuperTuxKart 1.3 (28. September 2021)
### Networking
* Server bookmarks, by Benau
* Background download of addon packs, by Benau
### Graphics
* Introduce render resolution scaling for the modern renderer, by QwertyChouskie and Deve. For users with limited GPU power, this allows to get significant performance (FPS) gains at the cost of image quality. It can also allow additional graphics effects at the same performance. This is especially useful for users with high-resolution and high-DPI screens. The scaling only affects the 3D scene, the UI remains crisp at full-resolution.
* Simplification through removal of unused deprecated graphical effects, by Samuncle
* Many updates to texture-related code, by Benau
* Auto-compute Level of Detail distances for 3D models set to use LOD depending on track complexity, by Samuncle. The geometry level parameter allows partial control over the drawing distances.
* Improved screen space reflection, by QwertyChouskie
### General
* Switch port, by Mary
* Gamepad force feedback support, by Mary
* Highscore screen, by RQWorldblender
* Grand Prix highscores, by mrkubax10
* Updates to the bundled tinygettext library, by Benau
* Enable custom skidding sounds for karts, by Benau
* Greatly sped up loading of tracks with many checklines through optimization, by heuchi
* And many bugfixes and enhancements too small or specific to be detailed
### User Interface
* Display the skin-appropriate iconset without having to restart, by Benau
* Fix some issues with the options menu when used during a pause, by Benau
* Add a confirmation dialog before closing the game through the "go back" key/button, by Benau
* In the result screen, display the race position with a number with 10 karts or more, by mrkubax10
* In the result screen, display the challenge result and the requirements met or failed, by CodingJellyFish
* Many small menu and dialogs improvements, by RQWorldblender and others
* Usability and functionality improvements to the debug menu, by RQWorldblender
* Clickable URLs in text, by Benau
* Add a rainbow background to the color picker, making it more intuitive, by riso
#### In-race UI
* Add visual and sound feedback when a timed challenge or timed game is about to end, by mrkubax10 and Alayan
### Mobile
* Fix a precision issue that caused artefacted shadows, by icecream95 and Benau
#### iOS
* Use MojoAL instead of OpenAL, which iOS currently has issues with, by Benau
### Tracks and modeling
* Alien Signal, by Samuncle
* Ancient Colosseum Labyrinth, by Typhon306
* Improved Las Dunas Soccer, by Benau
* Add lap line extensions to Hacienda, Old Mine, Ravenbridge Mansion and Shifting Sands, by Benau
* New Pepper kart, by ZAQraven99
* Improved Adiumy, Emule, GNU and Sara karts, by ZAQraven99