Kart VS Rating

Kart VS Rating V1.1-hotfix3

I made sure my file(s) follow the Submissions Guidelines
  1. Yes
Kart VS Rating, known from here on as KVR, is a server tool offering a competitive edge to Kart, along with a handful of subsystems aimed at encouraging interaction and socialization between players. There are many commands and subsystems at play, and we'll go into more detail below!

New players will start in Wood League, with a Rating of 1,000. Their Rating fluctuates depending on their finish position and the Ratings of all the other players in-game. Lower-rated players gain more from beating higher-rated players and lose less when losing against them. Conversely, higher-rated players gain less from beating lower-rated players and lose more when losing against them. Upon reaching specific thresholds, your Rank will change. The Ranks (and their minimum Rating) are as follows:

Rookie - 1
Wood - 500
Bronze - 1,500
Silver - 2,000
Gold - 3,000
Platinum - 4,000
Diamond - 5,000
Chaos Emerald - 6,500
Super Emerald - 8,000
Master Emerald - 9,500
Phantom Ruby - 9,999

On the lower left of the HUD, you'll see your lap counter, speedometer, and your Rating display, indicating your Rank, Rating, and selected character.


Perform well, and your Rating will increase!

Perform poorly, however, and your Rating will drop.

Commands (client-side):
kvr_hud (default on): Toggles Rating HUD. Disable if you just want your old speedometer back.

In addition to Easy, Normal, and Hard speeds, we now have two new speed setting to choose from: Expert and Auto! Expert speed pushes players to their limits and tests their skills on the track with enough velocity to make Sonic proud.
To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.
Auto speed is a dynamic setting where the game speed will randomly change between rounds depending on the average rating among players in the server, while also accounting for the lowest rated player in the room.

Game speed probabilities
Lowest VR playerAverage VRNormalHardExpert/Encore Hard
<1000 and ≥500≥120060%40%0%
<1000 and ≥500<1200100%0%0%

Commands (server-side):
kvr_kartspeed (default Auto): Sets the game speed for the server. Use this to set the speed of your choice. Do not use kartspeed to change game speed if you are using KVR, as kvr_kartspeed behaves nearly identical to it and interacts with it to change game speed.

kvr_solospeed (default Expert): Sets the game speed for Free Play. You can set this independently of kvr_kartspeed - good for servers with single-player modes (SPB Attack, Time Attack Leaderboards, DaytonaKart, etc)

kvr_automode (Default Original): Determines how Auto behaves for an Expert roll. Original changes to Expert Speed, and Legacy replicates MKWii and changes to Encore Hard instead.

The Rival system is an elaborate subsystem that encourages healthy competition and offers exclusive mechanics within KVR.
To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.
Chat command:
!ch: Use this, followed by a name (partial strings supported) or a node number to send a challenge. The person being challenged must then respond by challenging you to accept. Congratulations, you now have a Rival and have access to the Rival system's numerous features! If you would like to end your current Rivalry and start a new one, use !ch none.

Your Rival will have a visual indicator above them throughout the race, making them easy to spot from a distance.

Depending on the server's configuration, special music may play in lieu of the map's music. Additionally, special jingles will play when you beat, lose to, or tie with your Rival.
To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.
Commands (server-side):
kvr_rivalchance (default 50): Sets the percentage for randomly-selected Rival music to play instead of map music.

kvr_archrivalchance (default 50): If Rival music is supposed to play this round, this sets the percentage for Archrival and character themes to play instead. If you and your Rival are playing as the same racer, a special Mirror Match song will play instead!

Commands (client-side):
kvr_rmusic (default On): Toggles whether Rival music plays.

kvr_armusic (default On): Toggles whether Archrival music plays. If Off, character themes and the Mirror Match theme will still play. kvr_rmusic must be enabled.

These settings can be changed in /luafiles/KVR.cfg


Rival-exclusive sounds will play when you hit, or are hit by, your Rival. There's even an exclusive sound for when you squish them!

Want to raise the stakes? Make a bet with your Rival; winner take all!

Chat commands:
!bt: Use this, followed by a number, to place a bet with your Rival. Minimum bet is 50 points, and you can't bet more points than you or your Rival currently have. If you're feeling spicy, use !bet all to bet all but 1 of your points (assuming your opponent has enough to at least match the bet).
!by/!bn: Use these to either accept or decline a bet, respectively.
!br/!bl: Use these, followed by a number, to raise or haggle with your Rival's proposed bet, respectively. If haggling, you cannot bet less than your previous offer (if an offer was made).

kart0310 (2).png

Once a bet is made, payout is calculated at the finish alongside rating changes. Winning a bet can bolster your gains or mitigate your losses, but losing a bet could mean a one-way ticket back to Wood Rank!


Furthermore, special music will play in lieu of map music, and the music playing depends on the magnitude of the bet. Gotta set the mood for a friendly wager, right?

At the end of a race, a custom scoreboard will appear, displaying finish times while counting down to the next round. When the intermission has hit the halfway point, the scoreboard will show everyone's ratings as well as Rating gains/losses. Highlights will also be announced, with various awards randomly chosen and given to standout players of that specific category.

Commands (server-side):
kvr_inttime (default 20): Sets the intermission length (in seconds). KVR will automatically set inttime to 0 to prevent having a double intermission.
kvr_bloopers(default off): Toggles awards highlighting player's misfortune (JESUS TAKE THE WHEEL, FEARLESS LAWNMOWER, etc). Does not affect the Choke Artist award.

KVR will keep track of your player data via /luafiles/kartvr.txt. It will remember your:
  • Name
  • Rating
  • Rank
  • Win/Loss/Top Half (OK) Record
  • Rival
  • Win/Loss/Draw record vs Rival
Chat commands:
!record: Prints your race record.
!rival: Prints your Rival VS record. If you don't have a Rival, it will print a tutorial chat message on how to get one.
!wager: Lists all betting commands and their use.

Please ensure your server has read/write access to /luafiles!

Use KVR_AddRivalMusic() to add different themes to your server - you can even use this to add custom character themes to your Kart characters! Here's the template:

KVR_AddRivalMusic( {name = "lumpname", info = "song title/source", pair = {"skin"}}, -- For character themes {name = "lumpname", info = "song title/source", pair = {"skin1", "skin2"}} -- For Archrival themes {name = "lumpname", info = "song title/source"} -- For randomly-selected themes )

kvr_musiclist: Prints a list in console with all the Rival music themes, separated into General, Archrival, and Character Themes

If you want a taste of custom Rival music, check out the Sampler Pack, which includes Archrival themes for Warpstar Kirby & Meta Knight and Kiryu & Majima, along with character themes for Majima and Senator Armstrong!

KVR also has an auto-spectate feature where it sends AFK players to spectator after 20 seconds of inactivity.

Commands (server-side):
kvr_autospec (default On): Toggles the auto-spectate feature.
kvr_autospectimer (default 20): Sets how long a player can be afk for, in seconds, before being forced into spectator mode. Can be set to a value between 20 and 45.

HOSTMOD: Because of Expert Speed, Neo Scoreboard has been ported and revised to accurately display this KVR-specific speed. However, all Neo Scoreboard functionality is perfectly preserved, so your current configuration is unaffected. if HOSTMOD isn't loaded, the right half of the scoreboard will simply be blank.

Juggy's Jug of Tools: A special chat module allows KVR chat commands to function as intended without printing them to in-game chat.

Please load KVR after HOSTMOD and JuggyTools for proper functionality.

freeman/Ashnal - Custom intermission scoreboard to accurately reflect rating changes, along with Honorable Mentions/Highlights
Snu - Rival indicator code and framework (used with permission)
DarkyBenji & CGB - HUD code for rating display and framework for speed switch and
Expert Speed via FreshKart and CGB 200cc
Tyron - Framework for Rival music module via Hornmod, and Hostmod Neo Scoreboard stuff
Shiho - Rival indicator sprites
fickle - Rival system framework via Combi
Pepperdork - Rating system groundwork
Togen, Ashnal, Lighto - Valuable feedback
Jugador - Chat module interop
Callmore, freeman - Scorekeeper framework
The Lab regulars - Playtesting and feedback
Moonlane Club, Scyther's Stream Server, Interdimensional Circuit - Playtesting
and feedback
Mystery Jayne - Playtesting, feedback, and listening to me gush about codemonkey

  • Maps with changes in music will clash with the Rival system where falling off/respawning or using a power item (Grow/Invincibility) will play the specified music in the sections with music changes instead of the Rival music (if playing before) once the effects wear off. (Example: Respawning in Lap 2 of Splashdown will trigger the default music in the section instead of continuing to play the Rival music theme (if one was playing).)
  • When changing to Expert speed from a non-Hard speed, hardcode will print the usual indication of the transition to Hard, but not before KVR prints the indication of switching to Expert.

Unless the source of a given code block comes from a reusable mod available to the public (eg Friendmod, HOSTMOD, Combi, etc), the code written for this mod is non-reusable.

Reusable sources:

Juggy's Jug of Tools:
Extension type
File size
11.3 MB
MD5 Hash
First release
Last update
4.75 star(s) 4 ratings

Share this resource

Latest updates

  1. Hotfix #3

    Fixed a bug where setting kvr_solospeed to Hard while in Expert would not change the game speed...
  2. Hotfix #2 (last update for a while, I swear lmao)

    - Fixed a typo preventing archrival music from playing if it rolled during an active rivalry.
  3. 1.1 hotfix

    - HUD code cleanup - Accidentally attempted to define kvr_archrivalchance a second time; has...

Latest reviews

Very awesome mod! Definitely gives me the feeling of superiority!

Having trouble with setting up custom Rival and Archrival songs. Maybe you can give me some assistance so I don't get lost every time?
Upvote 0
If you want more player interactivity on your kart server (or an elo system that adapts kartspeed to the players average elo) then this addon is for you!
I especially recommend this addon for competitive servers, but it also works great on casual servers!

The rival music features can be a bit controversial seeing as it's loaded by the server, but it's done in a way to emphasize the rivalries between certain character choices and leave control to the owners of the game servers.
Rival music can be disabled in favor of a different music system, so it isn't too much of an issue. Really, it's up to your individual tastes.
If you put the effort into crafting music lists tailored to your character list and stages, you could make something magical with rival music.

Overall, I think these features are amazing. If you host a kart server, you can't go wrong with this addon!
Upvote 0
This entire thing is a marvel, a mad scientist experiment gone right. I enjoy it even in a more casual setting when in my private server because it incentivizes improvement but also you totally could just rob someone of their entire stock blind if they're cocky.
Upvote 0
This is an excellent addon for netgames, it really helps up the stakes competitively and I always personally loved ratings systems in games like this. The honorable mentions being separated from edits of Hostmod and moved here is also immensely appreciated!

There are some concerns and changes I would make to the addon, however, main concern being how custom music is loaded. I would much rather have the music be loaded on the client side than the host's, saving valuable download times and allowing freedom to customize things, like Dynmusic.
I also got to play this online and two things I heard are that a HUD toggle for the ranking & speedometer would be nice, and for the rival music volume to be upped- as it's apparently quiet.

Thank you for the release, it's been fun using this and I hope these concerns get addressed alongside any future updates!
I'll look into Rival music being upped volume-wise. However, I'm not sure if I want to make Rival music client-side, primarily because of how I designed it. The KVR_AddRivalMusic function was intended for servers to coordinate with their communities (since a lot of the 24/7 servers have dedicated Discord) regarding the music. I could however, as a compromise, look into audio quality, to lower the overall download size.

As far as a HUD toggle, I can definitely look into making a client-side toggle!
Upvote 2