June 19, 2014

Kart properties and Replay System

With mid-term evaluation coming to a close, I decided to give everyone a little update on what I have done, and will do in the near future. My project exists of two big parts: differentiating in kart properties and the making of a replay system. Since I had exams this term (I'm still not done even), I decided to start with the easiest job of the two: the kart properties.

I mainly focused on the GUI support for this feature, to keep the same visibility as before, but with more information present. The result I now have (reminder: Work In Progress) looks something like this:
single player screen

multiplayer screen with 4 players

As you can see, the multiplayer screen is getting a bit full with information, so tips and comments regarding these screens are more than welcome!

The hardest objective for this part was to make sure karts are balanced (eg there is not a kart that outperforms/gets outperformed by every other kart. To cover this, I've written a script to do some batch testing, and a python script to parse and plot these data. I will be looking at numbers like average lap time, maximum speed, average position, and so on.

I'm currently testing values for 4 large classes of different karts (heavy, light, agile and fast as main properties), but feel free to compose a kart by yourself (information on how to do this can be found in the wiki)

Of course, since theory will always give a false image, I will need you to play-test karts that are deemed be balanced by me, but this will be for a later stage in the process.

When my exams are finished, and when I will continue on testing those values, I will start working on the replay system. The ultimate goal for this addition is to race against their friends' top racing times (in the form of ghost karts), and to get an online high-score combined with it. By making the replay file portable and small, this could be a nice feature to an already fun game, but more on replay later!

Feel free to leave some comments, or to contact me through IRC!



  1. Hi solistice!

    I see two issues:
    1. Concerning evaluation of the different parameters: There is a parameter you should consider. The kart's shape. Some karts are more "robust" than others and have a higher propability to win. Either evaluate this issue by running your test scipt (maybe this is only a small issue and can be ignored), before changing the karts' parameters or only use one kart model to test how different parameters alter its performance (if this is an issue to be considered).

    2. Do not change the parameters too much. Else you might get undesired problems that only show up on certain tracks. Someone had already created a branch before with karts with different parameters. I tested it and raced with a light kart and used lots of nitro when racing up a ramp at the entrance of a pyramid. As the kart was too light and could be accelerated too easily, it directly crashed into the pyramid's ceiling. In my opinion this should not have happened. Either the ceiling of the pyramid needs to the higher or the kart must not be too light.

    1. Hello and thanks for your reply!

      1. We discussed this beforehand, and for this situation, I don't think we will need to keep track of this. The bigger karts (if that's what you mean) will be heavier, and the plan is to make this weight difference visible in stuff like hitting other karts: lighter karts will experience the collision more heavily, and get "thrown around" more easy.

      2. It's never the plan to make super light weight karts, only karts that are not all the same, since this takes away bit of the fun in kart selection. When running tests, we will test it on all the tracks available before launching a given kart. When things happen like you described, this will be visible in the results (either the kart gets rescued all the time because it does some weird stuff, or their lap time is way lower than normal karts).

      Anyway, after finding karts that are correctly balanced, we will still need users to play test them, since these theory results only come from the current AI ;)

  2. is this code on github? how can we test it?

    1. This code can be found at my personal fork (https://github.com/solistice/stk-code, properties branch) but not much coding has to be done at the moment. What you can do to help now, is try some kart properties yourself as described in the wiki (cfr blog post) and play test them to see if it's enjoyable and quite realistic. When you've found such kart, you can always send the xml to me and we can test its balance in the game!

  3. I like where this is going. Two possible option for your "choose a kart design":
    show only the text speed weight speed and acceleration for the most left kart this gives a cleaner look and is possible, because all the karts are on the same height no matter how many karts are chosen (1-4).

    As for the text of the kart names meaby you can make them smaller and place them above the kart animations. This will result in a representation of the karts itself.

    1. Thanks for the feedback! Your first suggestion is great, and has been suggested before! This will most likely be done this way.

      Putting the kart name above the kart animation is also quite good, since it will indeed show the kart in it's total form (now it feels kinda split by the name!

  4. You can make stats lighter using some kind of triangular area chart, or if more stats are needed use a chart like Stepmania does for song stats.


  5. Hi, dany777 here from the forums

    I like that new idea, but could also be more things like, handling, drift, something like Most games