aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoni Aloy Torrens <aaloytorrens@gmail.com>2021-05-15 04:20:58 +0200
committerAntoni Aloy Torrens <aaloytorrens@gmail.com>2021-05-18 12:09:27 +0000
commit65e47857e8c2110d0843ecd975da12ea316eb17f (patch)
tree938b6d62dbbe20c869148e7cad026dc4fe7bbaed
parent5646bf7040755261949499136d6415d30425f50c (diff)
community/supertuxkart: add server subpackage
-rw-r--r--community/supertuxkart/APKBUILD39
-rw-r--r--community/supertuxkart/server_config.xml169
2 files changed, 204 insertions, 4 deletions
diff --git a/community/supertuxkart/APKBUILD b/community/supertuxkart/APKBUILD
index 0c195288dd3..346e67750b0 100644
--- a/community/supertuxkart/APKBUILD
+++ b/community/supertuxkart/APKBUILD
@@ -1,8 +1,9 @@
# Contributor: Bart Ribbers <bribbers@disroot.org>
+# Contributor: Antoni Aloy <aaloytorrens@gmail.com>
# Maintainer: Bart Ribbers <bribbers@disroot.org>
pkgname=supertuxkart
pkgver=1.2
-pkgrel=0
+pkgrel=1
arch="all"
url="https://supertuxkart.net/"
pkgdesc="Kart racing game featuring Tux and his friends"
@@ -23,14 +24,16 @@ makedepends="
libxrandr-dev
openal-soft-dev
sdl2-dev
+ sqlite-dev
wayland-dev
"
source="https://github.com/supertuxkart/stk-code/releases/download/$pkgver/SuperTuxKart-$pkgver-src.tar.xz
+ server_config.xml
find-directfb-include.patch
0001-network_config-use-ns_name_uncompress.patch
fix-compilation-with-latest-sdl.patch
"
-subpackages="$pkgname-static $pkgname-data::noarch"
+subpackages="$pkgname-server $pkgname-static $pkgname-data::noarch"
builddir="$srcdir/SuperTuxKart-$pkgver-src"
build() {
@@ -39,6 +42,7 @@ build() {
* ) GLES2_RENDERER=OFF ;;
esac
+ # Game
cmake -B build \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr \
@@ -46,6 +50,15 @@ build() {
-DBUILD_RECORDER=0 \
-DUSE_GLES2=$GLES2_RENDERER
cmake --build build
+
+ # Server only
+ cmake -B build-server \
+ -DCMAKE_BUILD_TYPE=None \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_RECORDER=0 \
+ -DSERVER_ONLY=ON
+ cmake --build build-server
}
check() {
@@ -57,13 +70,31 @@ package() {
DESTDIR="$pkgdir" cmake --install build
}
+server() {
+ depends="$pkgname-data"
+ cd "$builddir"
+ DESTDIR="$subpkgdir" cmake --install build-server
+ mv "$subpkgdir"/usr/bin/supertuxkart \
+ "$subpkgdir"/usr/bin/supertuxkart-server
+
+ # Remove desktop app, icons and pixmaps
+ # Data is included in data() subpackage
+ rm -r "${subpkgdir:?}"/usr/share/
+
+ install -Dm644 "$srcdir"/server_config.xml \
+ "$subpkgdir"/usr/share/supertuxkart/data/server_config.xml
+}
+
data() {
pkgdesc="$pkgdesc (data files)"
amove usr/share/supertuxkart/data
}
-sha512sums="bc7079af9b3d85b3e4839ebb3eee293fb8bfe95450165172caa28b8ad1a9e97c59618d77c2208a86090f1840aa9a4b4b6898c1053fa6f5d7dfbfe17b69536835 SuperTuxKart-1.2-src.tar.xz
+sha512sums="
+bc7079af9b3d85b3e4839ebb3eee293fb8bfe95450165172caa28b8ad1a9e97c59618d77c2208a86090f1840aa9a4b4b6898c1053fa6f5d7dfbfe17b69536835 SuperTuxKart-1.2-src.tar.xz
+104a0b6e6c7abca53b76895d8889edde7745e420e1579c46c63fbfba87c12080f248a1871a92e268f0010ec05ea3d7756072da49784a66156403050f6ec0056e server_config.xml
fee686f8eaa72e0ed93c7bf38f2375b3206fcbb914af27228ae27d69311921dd4e43a4de4aed06903364bfeb63cbae344270f3556c553d497296296fb8d6f563 find-directfb-include.patch
15c7c89a3e27164fba680b5e5a1fbcd751f5ea403774edd705601b78b0276b59720f8400e17de2741fe9367dac193bf2a05a8c4f2f94abe9d15b8231e6dbddf8 0001-network_config-use-ns_name_uncompress.patch
-e3e70f79168e8de5047d5a7fdb5c96815d8cdf19a010c0110ac90a72fa71abd811577ca80db46f08765b5bb53b77a38ef708d153eb76f7d41f627ebc46deb920 fix-compilation-with-latest-sdl.patch"
+e3e70f79168e8de5047d5a7fdb5c96815d8cdf19a010c0110ac90a72fa71abd811577ca80db46f08765b5bb53b77a38ef708d153eb76f7d41f627ebc46deb920 fix-compilation-with-latest-sdl.patch
+"
diff --git a/community/supertuxkart/server_config.xml b/community/supertuxkart/server_config.xml
new file mode 100644
index 00000000000..0f65f3609d1
--- /dev/null
+++ b/community/supertuxkart/server_config.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0"?>
+<server-config version="6" >
+
+ <!-- Name of server, encode in XML if you want to use unicode characters. -->
+ <server-name value="STK Server" />
+
+ <!-- Port used in server, if you specify 0, it will use the server port specified in stk_config.xml. If you wish to use a random port, set random-server-port to '1' in user config. STK will automatically switch to a random port if the port you specify fails to be bound. -->
+ <server-port value="0" />
+
+ <!-- Game mode in server, 0 is normal race (grand prix), 1 is time trial (grand prix), 3 is normal race, 4 time trial, 6 is soccer, 7 is free-for-all and 8 is capture the flag. Notice: grand prix server doesn't allow for players to join and wait for ongoing game. -->
+ <server-mode value="3" />
+
+ <!-- Difficulty in server, 0 is beginner, 1 is intermediate, 2 is expert and 3 is supertux (the most difficult). -->
+ <server-difficulty value="0" />
+
+ <!-- Number of grand prix tracks per game (If grand prix enabled). -->
+ <gp-track-count value="3" />
+
+ <!-- Use goal target in soccer. -->
+ <soccer-goal-target value="false" />
+
+ <!-- Enable wan server, which requires you to have an stk-addons account with a saved session. Check init-user command for details. -->
+ <wan-server value="true" />
+
+ <!-- Enable network console, which can do for example kickban. -->
+ <enable-console value="false" />
+
+ <!-- Maximum number of players on the server, setting this to a value greater than 8 can cause performance degradation. -->
+ <server-max-players value="8" />
+
+ <!-- Password for private server, leave empty for a public server. -->
+ <private-server-password value="" />
+
+ <!-- Message of today shown in lobby, you can enter encoded XML words here or a file.txt and let STK load it. -->
+ <motd value="" />
+
+ <!-- If this value is set to false, the server will ignore chat messages from all players. -->
+ <chat value="true" />
+
+ <!-- If client sends more than chat-consecutive-interval / 2 chats within this value (read in seconds), it will be ignore, negative value to disable. -->
+ <chat-consecutive-interval value="8" />
+
+ <!-- Allow players to vote for which track to play. If this value is set to false, the server will randomly pick the next track to play. -->
+ <track-voting value="true" />
+
+ <!-- Timeout in seconds for selecting karts and (or) voting tracks in server, you may want to use a lower value if you have track-voting off. -->
+ <voting-timeout value="30" />
+
+ <!-- Timeout in seconds for validation of clients in wan, currently STK will use the stk-addons server to share AES key between the client and server. -->
+ <validation-timeout value="20" />
+
+ <!-- By default WAN server will always validate player and LAN will not, disable it to allow non-validated player in WAN. -->
+ <validating-player value="true" />
+
+ <!-- Disable it to turn off all stun related code in server, it allows for saving of server resources if your server is not behind a firewall. -->
+ <firewalled-server value="true" />
+
+ <!-- Enable to allow IPv6 connection if you have a public IPv6 address. STK currently uses dual-stack mode which requires server to have both IPv4 and IPv6 and listen to same port. If STK detects your server has no public IPv6 address or port differs between IPv4 and IPv6 then it will use IPv4 only socket. For system which doesn't support dual-stack socket (like OpenBSD) you may fail to be connected by IPv4 clients. You can override the detection in config.xml at supertuxkart config-0.10 folder, with default-ip-type option. -->
+ <ipv6-connection value="true" />
+
+ <!-- No server owner in lobby which can control the starting of game or kick any players. -->
+ <owner-less value="false" />
+
+ <!-- Time to wait before entering kart selection screen if satisfied min-start-game-players below for owner less or ranked server. -->
+ <start-game-counter value="60" />
+
+ <!-- Clients below this value will be rejected from joining this server. It's determined by number of official karts in client / number of official karts in server -->
+ <official-karts-threshold value="1" />
+
+ <!-- Clients below this value will be rejected from joining this server. It's determined by number of official tracks in client / number of official tracks in server, setting this value too high will prevent android players from joining this server, because STK android apk has some official tracks removed. -->
+ <official-tracks-threshold value="0.7" />
+
+ <!-- Only auto start kart selection when number of connected player is larger than or equals this value, for owner less or ranked server, after start-game-counter reaches 0. -->
+ <min-start-game-players value="2" />
+
+ <!-- Automatically end linear race game after 1st player finished for some time (currently his finished time * 0.25 + 15.0). -->
+ <auto-end value="false" />
+
+ <!-- Enable team choosing in lobby in team game (soccer and CTF). If owner-less is enabled and live-spectate is not enabled, than this option is always disabled. -->
+ <team-choosing value="true" />
+
+ <!-- If strict-players is on, no duplicated online id or split screen players are allowed, which can prevent someone using more than 1 network AI with this server. -->
+ <strict-players value="false" />
+
+ <!-- Server will submit ranking to stk-addons server for linear race games, you require permission for that. validating-player, auto-end, strict-player and owner-less will be turned on. -->
+ <ranked value="false" />
+
+ <!-- If true, the server owner can config the difficulty and game mode in the GUI of lobby. This option cannot be used with owner-less or grand prix server, and will be automatically turned on if the server was created using the in-game GUI. The changed difficulty and game mode will not be saved in this config file. -->
+ <server-configurable value="false" />
+
+ <!-- If true, players can live join or spectate the in-progress game. Currently live joining is only available if the current game mode used in server is FFA, CTF or soccer, also official-karts-threshold will be made 1.0. If false addon karts will use their original hitbox other than tux, all players having it restriction applies. -->
+ <live-spectate value="true" />
+
+ <!-- Time in seconds when a flag is dropped a by player in CTF returning to its own base. -->
+ <flag-return-timeout value="20" />
+
+ <!-- Time in seconds to deactivate a flag when it's captured or returned to own base by players. -->
+ <flag-deactivated-time value="3" />
+
+ <!-- Hit limit of free for all, zero to disable hit limit. -->
+ <hit-limit value="20" />
+
+ <!-- Time limit of free for all in seconds, zero to disable time limit. -->
+ <time-limit-ffa value="360" />
+
+ <!-- Capture limit of CTF, zero to disable capture limit. -->
+ <capture-limit value="5" />
+
+ <!-- Time limit of CTF in seconds, zero to disable time limit. -->
+ <time-limit-ctf value="600" />
+
+ <!-- Value used by server to automatically estimate each game time. For races, it decides the lap of each race in network game, if more than 0.0f, the number of lap of each track vote in linear race will be determined by max(1.0f, auto-game-time-ratio * default lap of that track). For soccer if more than 0.0f, for time limit game it will be auto-game-time-ratio * soccer-time-limit in UserConfig, for goal limit game it will be auto-game-time-ratio * numgoals in UserConfig, -1 to disable for all. -->
+ <auto-game-time-ratio value="-1" />
+
+ <!-- Maximum ping allowed for a player (in ms), it's recommended to use default value if live-spectate is on. -->
+ <max-ping value="300" />
+
+ <!-- Tolerance of jitter in network allowed (in ms), it's recommended to use default value if live-spectate is on. -->
+ <jitter-tolerance value="100" />
+
+ <!-- Kick players whose ping is above max-ping. -->
+ <kick-high-ping-players value="false" />
+
+ <!-- Allow players exceeding max-ping to have a playable game, if enabled kick-high-ping-players will be disabled, please also use a default value for max-ping and jitter-tolerance with it. -->
+ <high-ping-workaround value="true" />
+
+ <!-- Kick idle player which has no network activity to server for more than some seconds during game, unless he has finished the race. Negative value to disable, and this option will always be disabled for LAN server. -->
+ <kick-idle-player-seconds value="60" />
+
+ <!-- Set how many states the server will send per second, the higher this value, the more bandwidth requires, also each client will trigger more rewind, which clients with slow device may have problem playing this server, use the default value is recommended. -->
+ <state-frequency value="10" />
+
+ <!-- Use sql database for handling server stats and maintenance, STK needs to be compiled with sqlite3 supported. -->
+ <sql-management value="false" />
+
+ <!-- Database filename for sqlite to use, it can be shared for all servers created in this machine, and STK will create specific table for each server. You need to create the database yourself first, see NETWORKING.md for details -->
+ <database-file value="stkservers.db" />
+
+ <!-- Specified in millisecond for maximum time waiting in sqlite3_busy_handler. You may need a higher value if your database is shared by many servers or having a slow hard disk. -->
+ <database-timeout value="1000" />
+
+ <!-- IPv4 ban list table name, you need to create the table first, see NETWORKING.md for details, empty to disable. This table can be shared for all servers if you use the same name. STK can auto kick active peer from ban list (update per minute) whichallows live kicking peer by inserting record to database. -->
+ <ip-ban-table value="ip_ban" />
+
+ <!-- IPv6 ban list table name, you need to create the table first, see NETWORKING.md for details, empty to disable. This table can be shared for all servers if you use the same name. STK can auto kick active peer from ban list (update per minute) which allows live kicking peer by inserting record to database. -->
+ <ipv6-ban-table value="ipv6_ban" />
+
+ <!-- Online ID ban list table name, you need to create the table first, see NETWORKING.md for details, empty to disable. This table can be shared for all servers if you use the same name. STK can auto kick active peer from ban list (update per minute) which allows live kicking peer by inserting record to database. -->
+ <online-id-ban-table value="online_id_ban" />
+
+ <!-- Player reports table name, which will be written when a player reports player in the network user dialog, you need to create the table first, see NETWORKING.md for details, empty to disable. This table can be shared for all servers if you use the same name. -->
+ <player-reports-table value="player_reports" />
+
+ <!-- Days to keep player reports, older than that will be auto cleared, 0 to keep them forever. -->
+ <player-reports-expired-days value="3" />
+
+ <!-- IP geolocation table, you only need this table if you want to geolocate IP from non-stk-addons connection, as all validated players connecting from stk-addons will provide the location info, you need to create the table first, see NETWORKING.md for details, empty to disable. This table can be shared for all servers if you use the same name. -->
+ <ip-geolocation-table value="ip_mapping" />
+
+ <!-- IPv6 geolocation table, you only need this table if you want to geolocate IP from non-stk-addons connection, as all validated players connecting from stk-addons will provide the location info, you need to create the table first, see NETWORKING.md for details, empty to disable. This table can be shared for all servers if you use the same name. -->
+ <ipv6-geolocation-table value="ipv6_mapping" />
+
+ <!-- If true this server will auto add / remove AI connected with network-ai=x, which will kick N - 1 bot(s) where N is the number of human players. Only use this for non-GP racing server. -->
+ <ai-handling value="false" />
+
+ <!-- If true this server will allow AI instance to be connected from anywhere. (other than LAN network only) -->
+ <ai-anywhere value="false" />
+
+</server-config>