| Welcome, Guest |
You have to register before you can post on our site.
|
| Latest Threads |
Skidding Improvements / A...
Forum: Game development
Last Post: Asher3theG
2 hours ago
» Replies: 1
» Views: 27
|
I don't see any textures ...
Forum: Addon Talk
Last Post: woosh
4 hours ago
» Replies: 3
» Views: 57
|
Standalone Server help
Forum: General
Last Post: nightmareinvention
Yesterday, 09:56 PM
» Replies: 2
» Views: 74
|
STK-BLENDER
Forum: Game development
Last Post: LLS_forum
Yesterday, 05:59 PM
» Replies: 3
» Views: 292
|
More than a account in Ra...
Forum: General
Last Post: Dashy_
09-01-2026, 11:01 AM
» Replies: 0
» Views: 56
|
Some characters are in ne...
Forum: Game development
Last Post: Sven
07-01-2026, 04:21 PM
» Replies: 9
» Views: 1,712
|
Noinexu Shore track is br...
Forum: Addon Talk
Last Post: woosh
07-01-2026, 09:16 AM
» Replies: 5
» Views: 223
|
I don't like Hexley and W...
Forum: Game development
Last Post: Tuxito3000
06-01-2026, 10:41 PM
» Replies: 6
» Views: 1,248
|
Sync more types of data t...
Forum: Game development
Last Post: Alayan
06-01-2026, 09:57 PM
» Replies: 1
» Views: 135
|
Add Rocket Boost powerup ...
Forum: Game development
Last Post: jvondrashek
05-01-2026, 11:23 PM
» Replies: 2
» Views: 165
|
|
|
| The FEEL Branch (of Speed) |
|
Posted by: kadajett - 01-01-2026, 12:31 AM - Forum: Game development
- Replies (5)
|
 |
*Editing post after chatting and re-reviewing my code. Paired down to only speed lines!*
First off, happy new year all! I am writing this forum post at least partially on the 31st at 4PM!
I am pretty new to this project. The last game project I was working on announced they wouldn't be supporting Linux going forward, and that was a deal breaker. In finding a new project to contribute to, I found an amazing fun game to play! I really appreciate what everyone here is building.
I am also kadajett on Discord, so come and say hello! I have introduced myself there as much as possible in such a short time!
So, WHAT IS THE FEEL?
I started out playing the version of the game that is on the master branch. It was fun, but there were some quirks. I set out to find bugs that other people had posted first, with a goal of learning the codebase enough to form an opinion, and maybe fix some stuff.
A few days in after discovering the beautiful BalanceSTK2 branch, I learned how most of the kart, physics, map normal stuff, etc worked. With that, I started to play around with some minimal UI additions, not meant to modify gameplay at all, but meant to improve the feeling of the game. Make things feel more impactful. When you are hit, it should feel like you are hit! When you hit a zipper, you should feel like you are moving FAST. in addition to a few more things, I worked on a few new shaders to help see items on the track with my 5k widescreen, as the outlines were almost invisible. Turns out, someone had already posted an issue about this in github, so maybe I did the right thing!
Before I continue, I wanted to say that the goal of this post is to see what you all think! We can talk game design, or we can talk tech. I am happy to talk through either, since I am so new to this project, I have no right to a strongly held opinion!
what did I do?
Camera pulls back slightly during boosts
During boosts, the camera briefly pulls back to enhance the "speed" sensation, then smoothly returns.
Parameters:
- Max FOV increase: 8 degrees
- Speed threshold: 70% of max speed
- Lerp speed: 4.0 (smooth interpolation)
How it works:
1. Calculate speed_factor = (speed_ratio - 0.7) / 0.3
2. During boost, add extra factor (0.3 for nitro, 0.5 for zipper)
3. Lerp toward target FOV each frame
4. Result: subtle widening at high speed, more pronounced during boosts
Speed lines appear during nitro/zipper/skid boosts
Seen above!
You can see in the boost. This one is all technical, so I apologize.
For the non-technical, this is a boolean value based on whether the character is boosting, and what caused it. You could think of it like this equation, but you would be wrong. lol
`an=vn−vn−1`
It is far simpler. I did go the calculation route early on, but is wasn't as satisfying, as you could hit multiple zippers and sit at your max speed and never see the lines. This way, you feel FAST when you do something that should make you go FAST.
How it actually works:
Speed Lines Shader (speed_lines.frag)
Trigger: onBoostActivated() callback sets intensity
Uniforms:
- speed_intensity [0.0-1.0]: Line density and length
- boost_intensity [0.0-1.0]: Purple tint amount
- time: Animation driver
- center: Screen center (where kart is)
- inner_radius: Where lines start fading in
1. Calculate angle from screen center for each pixel
2. Divide into 60-100 radial sections (more sections at higher intensity)
3. Per-section random offset for non-uniform appearance
4. Smoothstep for anti-aliased line edges
5. Radial falloff: lines stronger at screen edges, invisible near center
6. Animation: lines move outward, fade in/out over time
7. Three layers blended for depth (60%, 30%, 20% weights)
8. At high boost intensity (>0.3): adds subtle chromatic aberration
Happy new year, everyone!
Small tidbit, moving from JS and C#, C++ here was weird. The observer pattern was new to me, but not completely foreign. Fun to learn, at least!
|
|
|
| (server mode) AI karts still driving like noobs |
|
Posted by: akiuni - 27-12-2025, 04:58 PM - Forum: General
- Replies (7)
|
 |
Hello
I've configured a LAN server to play with friends, all is okay, the server is providing races in supertux level. However, I want to add some AI karts when to few persons are connected (e.g. when there is only 2 human players, the server adds 3 AI players). It's working fine but AI karts are very weak, they seems to be novice players.
I've tried everything, including settings last-speed-cap="0:5.0" (speed x5) in stk_config.xml but nothing changed. Please, can someone tell me what to do to improve those IA karts, at least to SuperTux level) ?
Server start:
./run_game.sh --server-config=/opt/stk/server-lantest2.xml --disable-polling
Client start:
./run_game.sh --connect-now=127.0.0.1:2759 --network-ai=3 --no-graphics --difficulty=3 --disable-polling
Note that if I try to move stk_config.xml somewhere else and add the parameter 'stk-config=..." the client doesn't find the file:
[error ] StkConfig: FATAL ERROR while reading '':
[fatal ] StkConfig: Cannot find file
Thank you
Here is the content of server-lantest2.xml:
<?xml version="1.0"?>
<server-config version="6" >
<!-- Name of server, encode in XML if you want to use unicode characters. -->
<server-name value="Super Nouille Prime" />
<!-- 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="2759" />
<!-- <server-port value="5684" /> -->
<!-- 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="3" />
<!-- 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" /> -->
<wan-server value="false" />
<!-- Enable network console, which can do for example kickban. -->
<!-- <enable-console value="false" /> -->
<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" />
<!-- Maximum number of players in the game, all other players on the server are spectators. Specify 0 to allow all players on the server to play. -->
<max-players-in-game value="0" />
<!-- 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="Welcome to Super Nouille Prime STK Server" />
<!-- 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="25" />
<!-- 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="25" />
<!-- 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" /> -->
<validating-player value="false" />
<!-- 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="false" />
<!-- 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="false" />
<!-- No server owner in lobby which can control the starting of game or kick any players. -->
<owner-less value="true" />
<!-- 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="1" />
<!-- Automatically end linear race game after 1st player finished for some time (currently his finished time * 0.25 + 15.0). -->
<auto-end value="false" />
<!-- 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="true" /> -->
<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" />
<!-- If true, server will send its addon karts real physics (kart size, length, type, etc) to client. If false or client chooses an addon kart which server is missing, tux's kart physics and kart type of the original addon is sent. -->
<real-addon-karts value="true" />
<!-- 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" />
<!-- 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" /> -->
<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" /> -->
<state-frequency value="20" />
<!-- 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="true" />
<!-- If true this server will allow AI instance to be connected from anywhere. (other than LAN network only) -->
<!-- <ai-anywhere value="false" /> -->
<ai-anywhere value="true" />
</server-config>
|
|
|
I created the SuperTuxKart Wiki on Miraheze |
|
Posted by: stkfan2008 - 22-12-2025, 12:57 PM - Forum: Other creations
- Replies (6)
|
 |
Hello everyone, today I'm here to show you a project I decided to start as my small contribution to the SuperTuxKart community: the SuperTuxKart Wiki. As the name suggests, it's a wiki, or rather, an encyclopedia about the game. I originally considered reviving the SuperTuxKart Wikia (stk.fandom.com), but many people told me it was better to create a wiki from scratch. Besides, its only administrator has been active since 2016, which is about a decade. So in the end, I decided reviving that wiki wasn't worth it and created the wiki on Miraheze instead.
At the moment, being a newly created wiki, it has practically nothing and is a blank canvas, although I have already been creating the infoboxes and I have drafts of several articles in Google Docs, in addition to a lot of files from various versions of SuperTuxKart on my laptop. And even though I started the wiki as a fan project and not official, several people told me I should ask the team what they think about it, as a kind of permission, I guess.
You can access the wiki by going to supertuxkart.miraheze.org and here's the logo I made for the wiki, I hope you like it:
|
|
|
|