Skip to content

Commit 83706fc

Browse files
authored
Merge pull request #5 from kimden/command-manager-prototype
Command manager and latest updates
2 parents f2f1f79 + f60dc75 commit 83706fc

File tree

1,736 files changed

+373766
-62444
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,736 files changed

+373766
-62444
lines changed

.github/workflows/apple.yml

+33-10
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ jobs:
3232
- name: Download cctools
3333
run: |
3434
cd /opt
35-
wget https://github.com/supertuxkart/dependencies/releases/download/preview/cctools.tar.xz
36-
tar xf cctools.tar.xz
35+
wget https://github.com/supertuxkart/dependencies/releases/download/cctools/cctools-14.1.tar.xz
36+
tar xf cctools-14.1.tar.xz
37+
rm cctools-14.1.tar.xz
3738
- name: Restore timestamps
3839
run: |
3940
wget https://github.com/MestreLion/git-tools/archive/refs/heads/main.zip
@@ -92,7 +93,7 @@ jobs:
9293
make -j4
9394
mv bin ../${{ steps.sysroot.outputs.lowercase }}-${{ matrix.arch }}
9495
- name: Upload binaries
95-
uses: actions/upload-artifact@v2
96+
uses: actions/upload-artifact@v4
9697
with:
9798
name: ${{ steps.sysroot.outputs.lowercase }}-${{ matrix.arch }}
9899
path: ${{ steps.sysroot.outputs.lowercase }}-${{ matrix.arch }}
@@ -130,16 +131,28 @@ jobs:
130131
echo "${{ env.release_name }}"
131132
echo "${{ env.release_pre }}"
132133
- name: Download binaries
133-
uses: actions/download-artifact@v2
134-
- name: Run dylibbundler and archive
134+
uses: actions/download-artifact@v4
135+
- name: Mask developer name
136+
run: |
137+
echo "::add-mask::${{ secrets.MAC_DEVELOPER_NAME }}"
138+
- name: Import certificates
139+
if: ${{ env.release_tag != '' }}
140+
uses: apple-actions/import-codesign-certs@v1
141+
with:
142+
p12-file-base64: ${{ secrets.MAC_DEVELOPER_ID_P12_FILE }}
143+
p12-password: ${{ secrets.MAC_DEVELOPER_ID_P12_PASSWORD }}
144+
- name: Run dylibbundler and sign STK
135145
if: ${{ env.release_tag != '' }}
146+
env:
147+
developer_id: "Developer ID Application: ${{ secrets.MAC_DEVELOPER_NAME }} (${{ secrets.MAC_DEVELOPER_TEAM }})"
136148
run: |
137149
wget https://github.com/supertuxkart/dependencies/releases/download/preview/dependencies-macosx.tar.xz
138150
tar xf dependencies-macosx.tar.xz
139151
HOMEBREW_NO_AUTO_UPDATE=1 brew install dylibbundler
140152
lipo -create ./macosx-x86_64/supertuxkart.app/Contents/MacOS/supertuxkart ./macosx-arm64/supertuxkart.app/Contents/MacOS/supertuxkart -output ./macosx-arm64/supertuxkart.app/Contents/MacOS/supertuxkart
141153
chmod 755 ./macosx-arm64/supertuxkart.app/Contents/MacOS/supertuxkart
142-
dylibbundler -od -b -x ./macosx-arm64/supertuxkart.app/Contents/MacOS/supertuxkart -d ./macosx-arm64/supertuxkart.app/Contents/libs/ -p @executable_path/../libs/ -s dependencies-macosx/lib
154+
install_name_tool -change libcurl.4.dylib @rpath/libcurl.4.dylib ./macosx-arm64/supertuxkart.app/Contents/MacOS/supertuxkart
155+
dylibbundler -od -b -x ./macosx-arm64/supertuxkart.app/Contents/MacOS/supertuxkart -d ./macosx-arm64/supertuxkart.app/Contents/libs/ -p @executable_path/../libs/ -s ./dependencies-macosx/lib -ns
143156
# We use SDL_Vulkan_LoadLibrary for 10.9 compatibility, so otool -L supertuxkart has no libMoltenVK.dylib
144157
cp ./dependencies-macosx/lib/libMoltenVK.dylib ./macosx-arm64/supertuxkart.app/Contents/libs/
145158
cd ./macosx-arm64/supertuxkart.app/Contents/Resources/data
@@ -148,10 +161,20 @@ jobs:
148161
rm stk-assets-full.zip
149162
cd ../../../../..
150163
mv ./macosx-arm64/supertuxkart.app SuperTuxKart.app
151-
# Use Ad Hoc certificate for now, use Apple developer certificate after STK is on App Store later
152-
codesign --force -s - SuperTuxKart.app/Contents/libs/*.dylib
153-
codesign --force --deep -s - SuperTuxKart.app
154-
zip -r SuperTuxKart-${{ env.release_tag }}-mac.zip SuperTuxKart.app
164+
codesign --force --sign "$developer_id" SuperTuxKart.app/Contents/libs/*.dylib
165+
codesign --force --options=runtime --deep --sign "$developer_id" SuperTuxKart.app
166+
- name: "Notarize release build"
167+
if: ${{ env.release_tag != '' && github.ref != 'refs/heads/master' }}
168+
run: |
169+
ditto -c -k --sequesterRsrc --keepParent SuperTuxKart.app tmp.zip
170+
xcrun notarytool submit tmp.zip --apple-id ${{ secrets.STK_NOTARIZATION_USERNAME }} \
171+
--password ${{ secrets.STK_NOTARIZATION_PASSWORD }} \
172+
--team-id ${{ secrets.MAC_DEVELOPER_TEAM }} --wait
173+
xcrun stapler staple SuperTuxKart.app
174+
- name: Archive
175+
if: ${{ env.release_tag != '' }}
176+
run: |
177+
ditto -c -k --sequesterRsrc --keepParent SuperTuxKart.app SuperTuxKart-${{ env.release_tag }}-mac.zip
155178
- name: Create release
156179
if: ${{ env.release_tag != '' }}
157180
uses: ncipollo/[email protected]

.github/workflows/linux.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ jobs:
126126
$CXX --version
127127
mkdir "build"
128128
cd "build"
129-
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSERVER_ONLY=$SERVER_ONLY -DCHECK_ASSETS=off -DBUILD_RECORDER=off;
129+
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSERVER_ONLY=$SERVER_ONLY -DCHECK_ASSETS=off -DBUILD_RECORDER=off -DNO_SHADERC=on;
130130
- name: Configure bulid (macos)
131131
if: ${{ matrix.os == 'macos-latest' }}
132132
env:

.github/workflows/windows.yml

+18-11
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
strategy:
1414
fail-fast: true
1515
matrix:
16-
arch: [i686, x86_64, aarch64]
16+
arch: [i686, x86_64, armv7, aarch64]
1717
os: [windows-latest, ubuntu-latest]
1818
runs-on: ${{ matrix.os }}
1919
steps:
@@ -31,6 +31,8 @@ jobs:
3131
echo "cmake_arch=Win32" >> $GITHUB_ENV
3232
elif [ ${{ matrix.arch }} = "x86_64" ]; then
3333
echo "cmake_arch=x64" >> $GITHUB_ENV
34+
elif [ ${{ matrix.arch }} = "armv7" ]; then
35+
echo "cmake_arch=ARM" >> $GITHUB_ENV
3436
else
3537
echo "cmake_arch=ARM64" >> $GITHUB_ENV
3638
fi
@@ -83,8 +85,10 @@ jobs:
8385
sudo wget https://github.com/supertuxkart/dependencies/releases/download/preview/mxe_static_mingw.zip
8486
sudo unzip mxe_static_mingw.zip
8587
sudo rm mxe_static_mingw.zip
86-
- name: Install MinGW for aarch64
87-
if: ${{ matrix.os == 'ubuntu-latest' && matrix.arch == 'aarch64' }}
88+
# For libfl.so.2
89+
sudo apt install -y libfl-dev
90+
- name: Install MinGW for armv7 or aarch64
91+
if: ${{ matrix.os == 'ubuntu-latest' && ( matrix.arch == 'armv7' || matrix.arch == 'aarch64' ) }}
8892
run: |
8993
cd /
9094
sudo wget https://github.com/mstorsjo/llvm-mingw/releases/download/20210423/llvm-mingw-20210423-msvcrt-ubuntu-18.04-x86_64.tar.xz
@@ -120,17 +124,17 @@ jobs:
120124
cd build
121125
cmake .. -G "Visual Studio 17 2022" -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} -A ${{ env.cmake_arch }} -DCHECK_ASSETS=OFF
122126
- name: Configure bulid for MinGW (i686 or x86_64)
123-
if: ${{ matrix.os == 'ubuntu-latest' && matrix.arch != 'aarch64' }}
127+
if: ${{ matrix.os == 'ubuntu-latest' && matrix.arch != 'armv7' && matrix.arch != 'aarch64' }}
124128
run: |
125129
mkdir -p build
126130
cd build
127131
cmake .. -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCHECK_ASSETS=OFF -DUSE_DIRECTX=ON
128-
- name: Configure bulid for MinGW (aarch64)
129-
if: ${{ matrix.os == 'ubuntu-latest' && matrix.arch == 'aarch64' }}
132+
- name: Configure bulid for MinGW (armv7 or aarch64)
133+
if: ${{ matrix.os == 'ubuntu-latest' && ( matrix.arch == 'armv7' || matrix.arch == 'aarch64' ) }}
130134
run: |
131135
mkdir -p build
132136
cd build
133-
cmake .. -DLLVM_ARCH=aarch64 -DLLVM_PREFIX=/llvm-mingw -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-llvm-mingw.cmake -DCHECK_ASSETS=OFF -DUSE_DIRECTX=ON
137+
cmake .. -DLLVM_ARCH=${{ matrix.arch }} -DLLVM_PREFIX=/llvm-mingw -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-llvm-mingw.cmake -DCHECK_ASSETS=OFF -DUSE_DIRECTX=ON
134138
- name: Build for MSVC
135139
if: ${{ matrix.os == 'windows-latest' }}
136140
working-directory: build
@@ -145,21 +149,21 @@ jobs:
145149
mv COPYING tools
146150
- name: Upload binaries of MinGW
147151
if: ${{ matrix.os == 'ubuntu-latest' }}
148-
uses: actions/upload-artifact@v2
152+
uses: actions/upload-artifact@v4
149153
with:
150154
name: ${{ matrix.arch }}
151155
path: build/bin/*
152156
- name: Upload stk-code/data
153157
# We only need to upload stk-code/data once
154158
if: ${{ matrix.os == 'ubuntu-latest' && matrix.arch == 'i686'}}
155-
uses: actions/upload-artifact@v2
159+
uses: actions/upload-artifact@v4
156160
with:
157161
name: data
158162
path: data
159163
- name: Upload stk-code/tools
160164
# We only need to upload stk-code/tools once
161165
if: ${{ matrix.os == 'ubuntu-latest' && matrix.arch == 'i686'}}
162-
uses: actions/upload-artifact@v2
166+
uses: actions/upload-artifact@v4
163167
with:
164168
name: tools
165169
path: tools
@@ -209,7 +213,7 @@ jobs:
209213
echo "${{ env.release_name }}"
210214
echo "${{ env.release_pre }}"
211215
- name: Download MinGW binaries and data
212-
uses: actions/download-artifact@v2
216+
uses: actions/download-artifact@v4
213217
- name: Generate .pdb files
214218
if: ${{ env.release_tag != '' }}
215219
run: |
@@ -238,11 +242,14 @@ jobs:
238242
mv tools/run_game.bat SuperTuxKart-${{ env.release_tag }}-win
239243
mkdir SuperTuxKart-${{ env.release_tag }}-win/stk-code/build-i686
240244
mkdir SuperTuxKart-${{ env.release_tag }}-win/stk-code/build-x86_64
245+
mkdir SuperTuxKart-${{ env.release_tag }}-win/stk-code/build-armv7
241246
mkdir SuperTuxKart-${{ env.release_tag }}-win/stk-code/build-aarch64
242247
mv i686 SuperTuxKart-${{ env.release_tag }}-win/stk-code/build-i686/bin
243248
mv x86_64 SuperTuxKart-${{ env.release_tag }}-win/stk-code/build-x86_64/bin
249+
mv armv7 SuperTuxKart-${{ env.release_tag }}-win/stk-code/build-armv7/bin
244250
mv aarch64 SuperTuxKart-${{ env.release_tag }}-win/stk-code/build-aarch64/bin
245251
# libwinpthread-1.dll is useless because we statically link
252+
rm -f SuperTuxKart-${{ env.release_tag }}-win/stk-code/build-armv7/bin/libwinpthread-1.dll
246253
rm -f SuperTuxKart-${{ env.release_tag }}-win/stk-code/build-aarch64/bin/libwinpthread-1.dll
247254
- name: Start packaging STK
248255
if: ${{ env.release_tag != '' }}

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -89,5 +89,7 @@ lib/openssl
8989
lib/harfbuzz
9090
lib/sdl2
9191
lib/mbedtls
92+
lib/astc-encoder
93+
lib/shaderc
9294

9395
.DS_Store

CHANGELOG.md

+86-10
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,88 @@
11
# Changelog
22
This file documents notable changes to SuperTuxKart across versions since its inception.
33

4-
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.
4+
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.
55

66
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.
77

8+
## SuperTuxKart 1.5 (TBD, still unfinished)
9+
10+
### Networking
11+
* Improve track-voting logic when no majority is achieved, by kimden
12+
13+
### General
14+
* Make the game's window resizable in all the screens, by CodingJellyfish (previously, most UI screens did not support resizing)
15+
* New benchmark mode, by Alayan:
16+
- Can be run with a few clicks, allowing to easily test the performance of various settings or to compare different systems
17+
- Robust performance metrics that better reflect the impact of varying frametimes than Average FPS and 1% Lows.
18+
* Fix incorrect unlock information in Story Mode after a Grand Prix, by CodingJellyfish
19+
* 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
20+
* Fix drive-on sound from materials being played when the game is paused, by Alayan
21+
* Fix a crash trying to read replays when the random starting position setting is enabled, by Alayan
22+
* Handle track names with spaces in the replay reader, by Alayan
23+
* Various tweaks, bugfixes and code-quality improvements
24+
25+
### Graphics
26+
* Improve the accuracy of the framerate limiter, by Benau
27+
* 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)
28+
* Add some graphical effects for legacy video drivers, by Benau
29+
* Ensure fragment shaders use high precision, to avoid rendering issues with some drivers, by zmike
30+
* Fix a related precision issue causing black artifacts with GL_ES, by CodingJellyfish
31+
* Fix other shader issues that could produce black artifacts in specific situations, by CodingJellyfish
32+
* Various improvements to the automatic computations of Level of Detail (LoD) distances, by Alayan
33+
* Improve draw call performance in some situations, by CodingJellyfish
34+
* Enable new higher LoD and shadows settings, by Alayan
35+
* Integrate LoD (Geometry Detail) settings in the graphics presets, by Alayan
36+
* Prefer displaying a lower quality LoD model over switching to a higher quality one when too close, by Alayan
37+
38+
### User Interface
39+
* Add a new Display tab in the Settings, by Alayan
40+
* Allow to rate addons with a keyboard or a controller, and notify when trying to rate an addon while not logged in, by CodingJellyfish
41+
* Fix an issue that prevented to go up with a scrollbar using a trackpad, by CodingJellyfish
42+
* Improve the typing bars, especially for the coal theme, by Alayan
43+
* Greatly improve UI layout for 'tall' resolutions (greater height than width), by CodingJellyfish
44+
* Improve font scaling, by CodingJellyfish
45+
* Various enhancements, by Qwertychouskie and others
46+
47+
### Mobile
48+
* 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
49+
50+
## SuperTuxKart 1.4 (31. October 2022)
51+
### General
52+
* Lap trial mode, by mrkubax10
53+
* Fix parachute powerup, by heuchi
54+
* Fix gyroscope on walldriving surface, by Benau
55+
* Enable ARMv7 build for Windows, by Benau
56+
* Restore macOS <= 10.14 support, by Benau
57+
* Avoid triggering other goal lines when the goal is already scored, by kimden
58+
59+
### Graphics
60+
* Items and stars animation, by Semphris
61+
* LOD optimization, by Benau
62+
* Implement HiDPI support in SDL2 properly, by Benau
63+
* Beta Vulkan renderer, by Benau
64+
* Make sky particle always fall vertically, by Benau
65+
66+
### Tracks and modeling
67+
* Updated Konqi, by ZAQraven99
68+
* New Godette kart, by ZAQraven99
69+
* Updated Battle Island and Cave X, by Typhon306
70+
* Fix broken invisible wall in Antediluvian Abyss, by Benau
71+
* New textures in Shifting Sands, by KartOym
72+
* Balanced starting positions in all official soccer fields, by Crystal
73+
74+
### Networking
75+
* Add track searching to network track screen, by Benau
76+
* Make limit of players in game configurable, by Waldlaubsaengernest
77+
* Allow using real addon karts (same hitbox and kart type as in local game), by Benau
78+
79+
### User Interface
80+
* Add left side ghost replay difficulties, by ldoyenard
81+
882
## SuperTuxKart 1.3 (28. September 2021)
983
### Networking
1084
* Server bookmarks, by Benau
85+
* Background download of addon packs, by Benau
1186

1287
### Graphics
1388
* 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.
@@ -35,6 +110,7 @@ For similar reasons, and because some features are vastly more complex than othe
35110
* Many small menu and dialogs improvements, by RQWorldblender and others
36111
* Usability and functionality improvements to the debug menu, by RQWorldblender
37112
* Clickable URLs in text, by Benau
113+
* Add a rainbow background to the color picker, making it more intuitive, by riso
38114

39115
#### In-race UI
40116
* Add visual and sound feedback when a timed challenge or timed game is about to end, by mrkubax10 and Alayan
@@ -49,8 +125,8 @@ For similar reasons, and because some features are vastly more complex than othe
49125
* Ancient Colosseum Labyrinth, by Typhon306
50126
* Improved Las Dunas Soccer, by Benau
51127
* Add lap line extensions to Hacienda, Old Mine, Ravenbridge Mansion and Shifting Sands, by Benau
52-
* New Pepper kart, by McRavenINDo
53-
* Improved Adiumy, Emule, GNU and Sara karts, by McRavenINDo
128+
* New Pepper kart, by ZAQraven99
129+
* Improved Adiumy, Emule, GNU and Sara karts, by ZAQraven99
54130

55131
## SuperTuxKart 1.2 (27. August 2020)
56132

@@ -101,7 +177,7 @@ For similar reasons, and because some features are vastly more complex than othe
101177

102178
### Tracks and modeling
103179
#### Karts
104-
* New version of Kiki, by Typhon306 and McRavenINDo
180+
* New version of Kiki, by Typhon306 and ZAQraven99
105181
* Improved karts, by Crystal
106182
* Pidgin, Puffy
107183
* Improved beastie animation, by D_ft Kid
@@ -175,24 +251,24 @@ For similar reasons, and because some features are vastly more complex than othe
175251
* Several changes or fixes to ensure proper behavior (input, screen-scaling, and more)
176252

177253
### User Interface
178-
* Show tips for players when loading and after race ends, by dumaosen
179-
* Better scaling of many many UI elements to large resolutions, by dumaosen and others
254+
* Show tips for players when loading and after race ends, by CodingJellyfish
255+
* Better scaling of many many UI elements to large resolutions, by CodingJellyfish and others
180256
* Show country flags for servers and players in online multiplayer, by Benau
181257
* Add a new option to change font size on the fly, by Benau and deveee
182-
* Add icons for the available options in the race result screens, by dumaosen
258+
* Add icons for the available options in the race result screens, by CodingJellyfish
183259
* Make the highscore list scrollable, by deveee
184260
* Display all the relevant info in the challenge dialog in Story Mode, by Alayan
185-
* New challenge selection interface, by dumaosen
261+
* New challenge selection interface, by CodingJellyfish
186262
* Show the number of ranking points won or lost after a ranked race, by Benau
187263
* Separate blurring visual effects from the main graphics presets, by Alayan
188264
* Fix incorrect text resizing in the help menu, by Benau
189-
* Make the custom random GP option more prominent in the track selection screen, by dumaosen
265+
* Make the custom random GP option more prominent in the track selection screen, by CodingJellyfish
190266
* Improvements to the scrollbars, by QwertyChouskie
191267
* Allow sorting lists with the keyboard, by Benau
192268
* Allow tooltip drawing outside of menus, by deveee
193269
* Prevent some font scaling blur caused by non-integer offsets, by Benau
194270
* Add a (configurable) limit to chat message frequency, by GuillaumeBft and Benau
195-
* Allow to explicitly set the flip direction of tabs, by dumaosen
271+
* Allow to explicitly set the flip direction of tabs, by CodingJellyfish
196272
* Allow to download addons from the server lobby interface, by Benau
197273
* Allow to filter installed and non-installed addons in the addons screen, by Alayan
198274
* Many minor tweaks and bugfixes

0 commit comments

Comments
 (0)