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)
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.3
## SuperTuxKart 1.5 (TBD, still unfinished)
### Networking
*Server bookmarks by Benau
*Improve track-voting logic when no majority is achieved, by kimden
### General
*Switch port by Mary
*Gamepad force feedback support by Mary
*Highscore screen by RQWorldblender
*Improved screen space reflection by QwertyChouskie
*Render resolution changing by Deve and QwertyChouskie
*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
*Alien Signal by Samuncle
*Ancient Colosseum Labyrinth by Typhon306
*New Pepper kart by McRavenINDo
*Improved kart Adiumy, Emule, GNU and Sara by McRavenINDo
*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
## SuperTuxKart 1.2 (27. August 2020)
@@ -69,7 +177,7 @@ For similar reasons, and because some features are vastly more complex than othe
### Tracks and modeling
#### Karts
* New version of Kiki, by Typhon306 and McRavenINDo
* New version of Kiki, by Typhon306 and ZAQraven99
* Improved karts, by Crystal
* Pidgin, Puffy
* Improved beastie animation, by D_ft Kid
@@ -143,24 +251,24 @@ For similar reasons, and because some features are vastly more complex than othe
* Several changes or fixes to ensure proper behavior (input, screen-scaling, and more)
### User Interface
* Show tips for players when loading and after race ends, by dumaosen
* Better scaling of many many UI elements to large resolutions, by dumaosen and others
* Show tips for players when loading and after race ends, by CodingJellyfish
* Better scaling of many many UI elements to large resolutions, by CodingJellyfish and others
* Show country flags for servers and players in online multiplayer, by Benau
* Add a new option to change font size on the fly, by Benau and deveee
* Add icons for the available options in the race result screens, by dumaosen
* Add icons for the available options in the race result screens, by CodingJellyfish
* Make the highscore list scrollable, by deveee
* Display all the relevant info in the challenge dialog in Story Mode, by Alayan
* New challenge selection interface, by dumaosen
* New challenge selection interface, by CodingJellyfish
* Show the number of ranking points won or lost after a ranked race, by Benau
* Separate blurring visual effects from the main graphics presets, by Alayan
* Fix incorrect text resizing in the help menu, by Benau
* Make the custom random GP option more prominent in the track selection screen, by dumaosen
* Make the custom random GP option more prominent in the track selection screen, by CodingJellyfish
* Improvements to the scrollbars, by QwertyChouskie
* Allow sorting lists with the keyboard, by Benau
* Allow tooltip drawing outside of menus, by deveee
* Prevent some font scaling blur caused by non-integer offsets, by Benau
* Add a (configurable) limit to chat message frequency, by GuillaumeBft and Benau
* Allow to explicitly set the flip direction of tabs, by dumaosen
* Allow to explicitly set the flip direction of tabs, by CodingJellyfish
* Allow to download addons from the server lobby interface, by Benau
* Allow to filter installed and non-installed addons in the addons screen, by Alayan
@@ -79,6 +79,10 @@ To build the in-game recorder for STK, you have to install
libopenglrecorder from your distribution, or compile it yourself from [here](https://github.com/Benau/libopenglrecorder).
Compilation instruction is explained there. If you don't need this feature, pass `-DBUILD_RECORDER=off` to cmake.
### Shaderc for Vulkan support
You need to compile [Shaderc](https://github.com/google/shaderc) for vulkan support in SuperTuxKart if you are not building for Windows or macOS. If you don't need this feature, pass `-DNO_SHADERC=on` to cmake.
### Compiling
To compile SuperTuxKart, run the following commands inside `stk-code` directory
To Build SuperTuxKart on Windows, follow these instructions:
To Build SuperTuxKart on Windows follow these instructions:
1. Download and install Visual Studio from here: [Visual Studio - Download](https://www.visualstudio.com/downloads/). The free Visual Studio Community edition works fine. Remember to select "Desktop development with C++" in the installer.
@@ -150,7 +154,7 @@ Open your file browser and find somewhere you want to put the development versio
4. If you got the stable version, download the Windows dependencies package from [SuperTuxKart on GitHub - Dependencies Releases](https://github.com/supertuxkart/dependencies/releases), find the stk-code version there and download the `dependencies(arch).zip` as needed and unpack the archive into the `stk-code` directory.
5. If you got the development version go to SuperTuxKart-dev in your file browser, then visit [SuperTuxKart on GitHub - Dependencies latest preview release](https://github.com/supertuxkart/dependencies/releases/tag/preview)
and unpack the archive into the `stk-code` directory. Download `i686` if you use Win32 generator of MSVC, `x86_64` for x64 and `aarch64` for ARM64.
and unpack the archive into the `stk-code` directory. Download `i686` if you use Win32 generator of MSVC, `x86_64` for x64, `armv7` for ARM and `aarch64` for ARM64.
6. Download CMake from here: [CMake - download page](https://cmake.org/download/), install it; once CMake is installed, double click on the CMake icon on your desktop, and point it towards your `stk-code` directory in the 'Where is the source code' field, and point 'Where to build the binaries' to a new directory called `build` or `bld` inside the stk-code directory.
@@ -180,7 +184,7 @@ Visual Studio 2013| 13
2. Download a source package from either [SuperTuxKart on GitHub](https://github.com/supertuxkart/stk-code/releases) or [SuperTuxKart.net - Source Control](https://supertuxkart.net/Source_control)
NOTE: the `stk-code` and `stk-assets` directories **must** be in the same directory, `stk-assets` is not needed if you download the full source tarball `(SuperTuxKart-version-src.tar.xz)`.
3. Download the Windows dependencies package from [SuperTuxKart on GitHub - Dependencies latest preview release](https://github.com/supertuxkart/dependencies/releases/tag/preview)
and unpack the archive into the `stk-code` directory. Download `i686` if you use Win32 generator of MSVC, `x86_64` for x64 and `aarch64` for ARM64.
and unpack the archive into the `stk-code` directory. Download `i686` if you use Win32 generator of MSVC, `x86_64` for x64, `armv7` for ARM and `aarch64` for ARM64.
4. Download CMake from here: [CMake - download page](https://cmake.org/download/); and install it. Navigate to the `stk-code` directory; and create an directory called "build":
```cmd
@@ -196,12 +200,34 @@ and unpack the archive into the `stk-code` directory. Download `i686` if you use
6. Now that CMake finished configuring and creating the necessary files for the build, run the build command in the same directory:
```cmd
msbuild.exe SuperTuxKart.sln
```
```cmd
msbuild.exe SuperTuxKart.sln
```
SuperTuxKart can now be run as `bin\Debug\supertuxkart.exe` or `bin\Release\supertuxkart.exe`
## Building SuperTuxKart on Windows using LLVM MinGW
1. Get the LLVM Mingw archive [here](https://github.com/mstorsjo/llvm-mingw/releases/latest), get the `*-msvcrt-i686.zip or` `*-msvcrt-x86_64.zip` depending on whether you have an Intel / AMD 32 or 64-bit Windows. If you are using ARM64 Windows get the `*-msvcrt-i686.zip` should be fine (untested). After downloading extract it as `C:\llvm-mingw` so `C:\llvm-mingw` contains `bin`, `include`, `lib`, etc.
2. Get Ninja [here](https://github.com/ninja-build/ninja/releases/latest), download the `ninja-win.zip` and extract the `ninja.exe` from the archive to `C:\llvm-mingw`. If you are not using Intel / AMD 64-bit Windows use [this link](https://packages.msys2.org/package/mingw-w64-i686-ninja) and extract `mingw32\bin\ninja.exe` inside the `tar.zst`.
3. Download a source package from either [SuperTuxKart on GitHub](https://github.com/supertuxkart/stk-code/releases) or [SuperTuxKart.net - Source Control](https://supertuxkart.net/Source_control)
NOTE: the `stk-code` and `stk-assets` directories **must** be in the same directory, `stk-assets` is not needed if you download the full source tarball `(SuperTuxKart-version-src.tar.xz)`. Also make sure they lie within the C drive.
4. Download the Windows dependencies package from [SuperTuxKart on GitHub - Dependencies latest preview release](https://github.com/supertuxkart/dependencies/releases/tag/preview)
and unpack the archive into the `stk-code` directory. Download `i686` if you compile for Intel / AMD 32-bit, `x86_64` for Intel / AMD 64-bit, `armv7` for ARM 32-bit and `aarch64` for ARM 64-bit version of Windows.
6. Download CMake from here: [CMake - download page](https://cmake.org/download/), install it; once CMake is installed, double click on the CMake icon on your desktop, and point it towards your `stk-code` directory in the 'Where is the source code' field, and point 'Where to build the binaries' to a new directory called `build` inside the stk-code directory.
7. Press the `Add Entry` button and add the values below:
8. Press 'Configure'; CMake will ask you if it is OK to create the aforementioned directory, press `Yes`. Choose `Ninja` from `Specify the generator for this project`, choose `Specify toolchain file for cross-compiling` then press `Next`. Specify the toolchain file which is located in `stk-code\cmake\Toolchain-llvm-mingw.cmake` and press `Finish`. If no error appears then press 'Generate'
9. Once inside the build directory using command line `cmd.exe` or PowerShell:
```cmd
C:\llvm-mingw\ninja.exe
```
SuperTuxKart can now be run as `bin\supertuxkart.exe`.
## Building SuperTuxKart on macOS
### Getting Started
@@ -227,7 +253,9 @@ Add ` -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9` for 10.9 compatibility.
By default, the executable that is produced is not ready for distribution. Install <https://github.com/auriamg/macdylibbundler> and run:
[](https://web.libera.chat/?channels=#supertuxkart)
# See [`README.cat`](README.cat)
SuperTuxKart is a free kart racing game. It focuses on fun and not on realistic kart physics. Instructions can be found on the in-game help page.
The SuperTuxKart homepage can be found at <https://supertuxkart.net/>. There is also our [FAQ](https://supertuxkart.net/FAQ) and information on how get in touch with the [community](https://supertuxkart.net/Community).
@@ -22,7 +24,7 @@ To run SuperTuxKart, make sure that your computer's specifications are equal or
* Ideally, you'll want a joystick with at least 6 buttons.
## License
The software is released under the GNU General Public License (GPL) which can be found in the file [`COPYING`](/COPYING) in the same directory as this file. Information about the licenses for the artwork is contained in `data/licenses`.
The software is released under the GNU General Public License (GPL) which can be found in the file [`COPYING`](COPYING) in the same directory as this file.
---
@@ -37,4 +39,4 @@ The export utilities perform the needed transformation, so in Blender you just
## Building from source
Building instructions can be found in [`INSTALL.md`](/INSTALL.md)
Building instructions can be found in [`INSTALL.md`](INSTALL.md)
// Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated.
namespaceproject.getProperty('package_name')
// buildToolsVersion is no longer needed https://developer.android.com/studio/releases/gradle-plugin.html#behavior_changes_1
// Quote:
// Build Tools 27.0.3 or higher. Keep in mind, you no longer need to specify a version for the build tools using the android.buildToolsVersion property—the plugin uses the minimum required version by default.