November 11, 2018

SuperTuxKart Networking - Looking for Testers

Nearly one year after the 0.9.3 release we are getting ready for the next release. And as many might know, we have actually been very busy working on the network implementation to allow online races. As expected, this has taken a lot of time, but we have finally reached a stage that we need more testing. For now we call this an alpha test, since there are still some known bugs and some polishing is required as well, but nothing that should affect the actual network race at this stage. De facto, we have been doing alpha tests with visitors on our IRC channel for some weeks now, so we actually do not expect any major bugs anymore.

In networked races the name of the player is shown on top of the karts
We are looking for people who can compile SuperTuxKart following our instructions themselves. You don't need to be able to program in C++ or anything. The main reason for asking you to compile yourself is that if a bug should occur, we can work with you to help us finding the bug. We are at the same time busy on working on a beta release (or even release candidate??), for which we will obviously provide binaries/installers for all common platforms. We actually don't expect this to be too far away ... fingers crossed.


SuperTuxKart Game Servers

We have over 20 servers running by volunteers (in Hongkong, Chicago, Netherlands, and some other locations) for the various game modes that we support, which includes normal race, time trial, battle mode, soccer and the new capture-the-flag and free-for-all modes.

Server Selection Screen
So, if you are able and willing to compile SuperTuxKart from git, follow the instructions but switch to the stable branch 'network' first. Also make sure to compile in release mode, debug mode is often too slow for the networking. Create an online account in STK, head for the online section and search for a server with a reasonable distance to you. If you connect to the server, the ping to that server will be shown - we would recommend to stay with servers that have a ping of under 100 ms. You can try servers with higher latency, and it should still work, but you might notice more often that karts stutter or are 'teleported' around.

 

Server Creation

Or create your own server and ask some friend to join, or head to our IRC channel #supertuxkart on the FreeNode network to ask for some people to join.

Server Setup Screen
We are also interested in getting some people to run some additional servers around the world, to offer a better ping for users. An STK server can even run on a Raspberry Pi 3. You can find instructions on network configuration in the file NETWORK.md (latest version here), but feel free to contact us if you have questions.

 

Testing

We would appreciate your feedback - especially how responsive and satisfying the race was, and what ping you had to the server you were using. Please provide feedback either in our forum, on our IRC channel, and file bug reports in our issue tracker.

Network Lobby
While this is happening, we will work on the important outstanding issues, and prepare a beta release which will of course include pre-compiled binaries and installer. Our main focus will be the interface, some physics issues, and other bug fixes. We are also interested to support playing with higher latency - but realistically there is only so much you can do if you will only know that a kart turned 600 ms after it happened (if both you and the other person have to wait 300 ms for a message to or from the server). In 600 ms a kart at high speed will have traveled over 13 meters. But we still have a few things to try out and improve on.

August 1, 2018

Summer update

Hi everyone, we're back with another post about what's going on with SuperTuxKart development. While many of you will be anxious to know about the status of networked multiplayer, it will not be the focus of this post. But we can reassure you it is still a priority and that we are making progress, albeit slowly due to having few developers. Rather in this post we'll round up some of the smaller improvements that have been done since the release of 0.9.3.


Six-player vertical splitscreen

8-player splitscreen multiplayer and dividing vertically
It's now possible to play splitscreen with up to 8 players! Also you can choose to divide the screen into vertical viewports, and the UI elements will scale better according to how many players there are. Do note that you are likely to need good hardware to display everything. Thanks a lot to Ben Krajancic alias Fantasmos.

 
Bubble gum timeout indication and rescue change

Indication of bubblegum shield ending
The bubblegum shield will start flashing before the shield pops due to the time expiring, which will be helpful to know for example if you consider running over a banana to get some extra nitro while you still have the shield. Thanks again to Fantasmos.

New skidding particles
We now have cooler skidding particles thanks to QwertyChouskie.

Nicer looking rescue
Rescuing now has the bird put you down in addition to picking you up thanks to Fantasmos.


 Yellow cabbie Tux

Colorization of player kart
In the options screen you can now choose to colorize your kart differently with a slider.

Android input improvements
On first run on the Android version of the game you will now be prompted to choose if you want to use the accelerometer for steering, and the accelerometer steering also takes screen orientation into account. We also have better gamepad support, and if there's a physical keyboard available we won't show the on-screen keyboard where applicable. The normal race UI will be used if there's no touch screen present.

Miscellaneous notes
  • The handicap option is now better at evening things out for two human players at different skill levels
  • The sound effect in nitro challenge when you reach the required amount now works if you have used nitro during the race, and a new one has been added for when you go under it again if you spend some nitro
  • Finish times are now more correctly calculated, especially for ghosts in ghost replays
  • If you try to connect your account to the Internet and you have the option disabled, you will now be prompted to enable it
  • A nitro boost bug has been fixed: if you stop pressing the nitro button quickly, the nitro will keep boosting your kart for the duration of the minimum consumption time (previously, the nitro was used but the speed boost stopped)

April 19, 2018

Everything is shiny!

Hi

A quick retrospective into last year

2017 was an amazing year for SuperTuxKart, we had tremendous support from our community to Greenlight us in five days and our lead artist released the 0.9.3 version live at the Blender conference. You can watch the event here. 0.9.3 also brought SuperTuxKart to Android.

Behind the doors we are busy and ready to take the game to the next level. On the rendering side we have a couple of exciting things to share with you. We are going to take a journey into the wonderful world of light and shadow.

Improved Rendering Engine

Some solutions that worked in the past are slowing becoming a burden going forward. Over the past few months, a lot of work has been ongoing on Antarctica, SuperTuxKart's graphical engine, in particular thanks to our developer Benau.

This work will be released in a future version of the game, though we do not yet know which version or when the release will occur.

Better performance

Let's put it straight, performance is important for us. And while it is hard for our small team to rival the powerful engines used by AAA games, we are working hard to make things as good as we can with the resources at our disposal. The new engine is more optimized and in most scenarios will see slightly improved performance.

Physically Based Rendering

One of the highlights of the new version is an improved materials system. This new system should make it easier for artists to create good-looking tracks, by allowing them to easily use content creation software and tweak materials properties such as roughness, glow or metallic look.

The version of Antarctica that will power the upcoming version of SuperTuxKart will use a PBR renderer. It will become very easy to setup complex materials. Instead of learning a brand new system you just have to answer these questions:
  • What is the color of the surface (without any shadows, just the pure color)?
  • Is the surface polished?
  • Is the surface a metal?
  • Is the surface glowing?
To illustrate here is a screenshot taken in Substance Painter and one in SuperTuxKart's new renderering engine.

You will be able to create your assets in another PBR engine/renderer like Blender's Eevee or Substance Painter and directly import your assets in SuperTuxkart.

Custom shaders

While we expect the majority of content creators to use the default shaders that are provided with the game, we also want to empower advanced creators by allowing them to create their own custom shaders. It will be possible to easily add shaders, each object can have up to 6 textures in slots and "unlimited shared textures".

An example of a road shader with procedural texture blending
We plan to provide a set of preset shaders in addition to the generic one, to allow quickly creating a nice looking road with skidmarks etc. We'll share more in the coming months.

New file format

While this was already introduced in the last version of SuperTuxKart we extended the format to include high quality bitangent which removed a couple of bugs regarding normal map shading. We now use the same technique that is used by any modern game engine (Blender, Unreal, Unity, etc) so the shading will look perfect.

Everything is shiny, what does it mean?

Now let's go in-depth and see how rendering works and how we came here.


A brief history of light

Our epic journey starts 8 minutes ago in the core of a giant plasma ball tirelessly emitting light particles.
Source: NASA Solar Dynamics Observatory
Roughly 10⁴⁵ photons are leaving the sun every second. A "tiny" portion of those particles reach our beloved planet, bounce all around the place billions of times and finally reach our eyes where they trigger a reaction which is what we "see".

When the photons are bouncing around, they will react differently depending on the surface, sometimes they are absorbed, sometimes they are scattered around or they can even go through a material like glass.

Those slight differences are causing the whole diversity of colors and materials in our world. If something appear red it's only because the surface of the object absorb most of the incoming light except red.

Why does it matter for SuperTuxKart?

Well, in video games we are trying to simulate this phenomenon to provide a believable environment to the player. When you drive in SuperTuxKart and explore our tracks, the computer has to somehow emulate this, to be able to show you a picture.
The first approach would be to simply cast billions of light rays just like in reality.

While this approach works (it's called ray tracing) and can provide amazing results it has a huge drawback. It's costly in term of performance. It's mostly used in movies and one frame can take up to 5 hours to be computed, not really compatible with an interactive game. People already complain about performance in our game, imagine if now you should wait 2 hours after pressing the start button just to see the first picture.

In our video game if we want to reproduce the world we need to think outside of the box.

In 1975 Bui Tuong Phong revolutionized the world by publishing "Illumination for computer generated pictures", a paper describing how it was possible to compute an approximation of lighting fast enough to be carried in real time. It became known as the Phong Shading.
While the algorithm wasn't physically accurate, it could approximate with a reasonable degree of accuracy how light behaves in the real world.

This model (or usually a variant of it called Blinn Phong) is what 99.9% of 3D games are using to render pictures. While it has several advantages it also introduce some inconveniences. This was the technique used by SuperTuxKart up until version 0.8.2.
  • Phong works only for local pixel (objects won't cast shadows)
  • It doesn't take into account advanced things like the influence of other objects in the scene.
In order to address those limitations we started to implement our own engine and in 2015 after two years of development we were ready to show to the world the first version of Antarctica. Using a modern approach with Bidirectional Reflectance Distribution Function (BRDF) and Image Based Lighting (IBL).
  • Ability for objects to cast shadow on themselves and others
  • The sky will light the scene and influence the overall hue
  • Light will scatter with fog producing halos
It's already an improvement over the previous version. Artists could use textures to influence the specularity (how much an object reflect light) and the glossiness (how much "spread out" it is).

However, there were still some issues. This model separate materials by two categories, the ones that reflect light, like plastic and metal and the ones that are matte, like fabric, however in nature this distinction doesn't exist.
Previous light model in Antarctica
It was impossible to properly emulate how metal reacts to light and it forces artists to learn an unique way custom to our game in order to create materials. It requires a lot of iterations and it was impossible to preview in Blender or other software what you were doing.

This previous implementation is still powering the last version released to date. However aware of the limitation we went back to the drawing board and started to plan improving our rendering technology.

Going PBR

In the new version of Antarctica the artist can easily emulate the whole range of materials by simply defining how the surface looks. Just like in reality if you polish a surface enough it will eventually become a mirror and it will start to reflect the surrounding environment.

Even bricks are a bit shiny, yes they have a rough surface but nonetheless the model will accurately emulate the physical property of any materials.


Metals are a special case, since their color will influence the reflection color, hence the metal map. Parts that are metallic will use the color of the object as one of the components of their reflection.

The emit map is the same as before (if the surface is emitting light). There are no changes.

Light model in the new Antarctica





Empowering the artist beyond textures and geometry

We now have a model which is accurate, reflects the real physical world and how it behaves. One last remaining part was allowing an artist to create specialized shaders. While generic shaders are okay in 90% of cases, there can be specific situations where you want to have a custom shader like a lava flow.



Currently it's still a bit difficult to write shaders but we plan to offer a bunch of predefined components to allow you to quickly set up your own shaders.

Why is it worth it?

Since the PBR model is more or less a standard you can create an asset in Blender, paint it in Substance Painter, try it in Blender's Eevee and then load it in SuperTuxKart and it will have the same look. You can follow a tutorial about texturing for PBR shaders in Unity and apply the same concepts in SuperTuxKart.

Basically the whole library of tutorials, online courses on real time PBR can be applied to SuperTuxKart. It sounds way better than learning a custom system that is only used in a specific game.

We want to allow people from other backgrounds to quickly contribute and create art for our beloved game.

We will show you more in the coming months and we hope you are as excited as we are for 0.9.4!

November 20, 2017

SuperTuxKart 0.9.3 released

After months of work, we are proud to announce the final release for SuperTuxKart 0.9.3, the latest version of the kart racing game!

Official poster child Tux in his grown-up form

Official trailer video


This new version brings in several new tracks, karts and features. Some of the highlights include new tracks "Cornfield Crossing" a track set in a farm; "Candela City", a nighttime track in an European city; and "Las dunas stadium", a new arena for battle mode. Most of those tracks have been part of previous gift packages, and as promised we are now making them available for everyone.

Cornfield Crossing


Another major news is that for the first time, SuperTuxKart is available on Android! You can find it in the Google app store.
Or you can download it from SourceForge.

Our karts have also been updated, including new graphical effects such as headlights and exhaust smoke. Several karts have also been updated: Wilber, Hexley and Konqi have been updated, and a new kart was added: Kiki, the mascot for Krita.

Konqi and Kiki

You can also support us and get 3 upcoming maps by donating to the project. Our lead artist Samuncle handcrafted one track and two arenas especially for Halloween.

On top of that, the game has received countless bugfixes and improvements, including physics improvements and graphical optimisations that should help performance and load times. 

Many of you will undoubtedly be curious to hear about networked multiplayer. This feature has been in development for quite some time and a lot of progress has been made. We even had a LAN-only version in a playable state, but when testing it on various hardware platforms and environments, too many people reported unacceptable stuttering, so we have decided not to pursue this any further and wait for the WAN version (which will of course also work in a LAN). But stay tuned for more information on networked games in a future release!


And from the feedback we heard we also know that many people are waiting for the Steam release of SuperTuxKart. We can also give some updates about this: we have done some initial work to get SuperTuxKart working in a Steam environment, so it can pick up your username, and even your avatar. But the main issue we have is actually a legal one: in order to publish a game on Steam we need to have a company. And while it is reasonable easy to create a small company in Australia, the main problem is the liability: what if SuperTuxKart should have a bug, wiping out a user's data, and we then get sued? Obviously no one of us wants to risk their private assets because of that (admittedly an unlikely and extreme case). So we need proper legal advice (with all its assorted costs) before we can proceed with the Steam release 😭

Candela city


You can find the downloads for your favorite platform on our website at https://supertuxkart.net/Download. As always, if you wish to contribute, you can check our Get Involved portal to contribute art, code or translations, or donate and receive a gift package as our thanks for your contribution.

The full changelog for this version can be found below:

  • Reduced RAM and VRAM usage, reducing load times by Auria and Benau
  • New mesh format optimized for space and hardware skinning
  • Code refactoring of both render pipelines by Benau and Elderme
  • New karts Wilber and Hexley by Jymis
  • New karts Kiki and updated Konqi by Benau
  • New tracks Cornfield Crossing and Candela City by samuncle
  • Physics improvements and various physics bugfixes by hiker
  • Kart GFX improvements (exhaust and headlight)
  • In-game screen recording powered by libopenglrecorder, created by Benau
  • High quality mipmap generation by Stragus
  • New smoother camera by Auria
  • New Grand Prix win scene
  • Gamepad configuration bugfixes
  • 3 Strikes Battle: added spare tire karts
  • Various improvements (wall driving fixes, parachutes, GP points, cannon fixes, colorization shader)


The SuperTuxKart team

October 28, 2017

SuperTuxKart Halloween Update [Release Candidate]

Today, after more than one year of continuous hard work, we are ready to share with you the last big update before going on Steam, SuperTuxKart 0.9.3-rc1 dubbed the "Halloween Update".

Let's start with the most exciting news: We are finally on Android and you can get the game on Play Store or by downloading the apk from our website if you prefer.

Before reviewing the features in this release, a quick look to the future: Network support is well underway and many of the problems with stuttering that we experienced have been solved by hiker, who is working on polishing this code for integration into our main source tree (currently it's sitting in a separate branch). There's a lot of work still to do, but when network play will be fully-featured, we'll be ready to release it publicly. Our resources are being stretched rather thinly, so all help, programming and artistic, is very much appreciated. Check out the Get Involved page on our wiki for information if you are interested in joining the team. (The artists' documentation has also been updated since our last release to help you create your own tracks.) We appreciate your patience.

A lot of changes were made in one year. We have new tracks, new arenas, new effects and a lot of improvements behind the scenes.

New gift package specially for Halloween

What would be Halloween without pumpkins and a spooky mansion? We completely redesigned the old Mansion and made two brand new arenas specially for this update.

 
Ravenbridge Mansion
Beastie, the BSD mascot, and Gavroche, mascot of MediaGoblin, welcome you to their haunted house.... kind-of. They're actually the only ones doing the haunting in this former witch's house-built-on-a-graveyard-turned-into-a-sanatorium-turned-into-an-asylum-made-into-a-racetrack (whew!).

But what's the fun of staying inside at night? Explore the winding trail through the swamps, illuminated by the will-o'-the-wisps' eerie, flickering light. But stay on the trail, or you'll soon get stuck in the miry mud.

 Interesting factoid: Will-o'-the-wisp in German is "Irrlicht" (the namesake of the 3D engine our Antarctica Engine is based on).

Pumpkin's park
The spooky site of a derelict amusement park, this arena would surely be frightening enough on its own. But for the real thrill, play a few rounds of battle mode here and experience a whole new definition of exciting as your friends (or AI karts) pop out from around the corners.



 
Alien Signal


A sinkhole makes the perfect spot for this gigantic radio dish. Whether the alien signals you hear are friendly or hostile… well, perhaps you should be more concerned about the hostility of those you're battling against in this arena. There isn't a lot of space to hide in a big radio dish, but if you prefer the ambush tactic, the datacenter underneath might be what you're looking for.

As always, our gift package is available under the terms of the CC-BY-NC-SA 4.0 license to our sponsors who donate more than USD $3.99. In a future release, these tracks will be available in the core game as CC-BY-SA 4.0.

New tracks and karts in the core game

Speaking of the core game, when we started the gift package program one of the most important pledges we made was to use it to improve the core game and make sure it will benefit the community as a whole.

Candela City

Candela City is STK's Paris, filled with lights and sounds to explore, and a spectacular firework display over an equally spectacular tower.


Candela was formerly part of the gift package we provided to donators beginning with version 0.9.1, and is now, as promised, part of the full game. This track replaces Shiny Suburbs, which is now available as a downloadable add-on.

Las Dunas Stadium
Since it's difficult to hand out candy over the internet, we decided to give you the next best thing, Las Dunas Arena for Battle Mode, inspired by real-world Las Angeles and Las Vegas and only a short distance from "Ploppywood" a major movie studio.

Las Dunas Arena and the Las Dunas Soccer Field were part of the gift package for 0.9.2. The soccer field remains part of the gift package for this version.

Cornfield Crossing
With Cornfield Crossing, you're treated to a tour of a farm in the heartland of the "United Countries of Amerigo" at harvest-time. Feel free to relax and enjoy the autumn sun or watch the harvesting equipment in a place where tradition meets innovation—but don't let your guard down or you might be taken by surprise on your way to the barn! This track replaces Bovine Barnyard, which is now also moved to Add-Ons.



We have two karts (Wilber and Hexley) that have been updated thanks to jymis.
Benau, one of our programmers created his first two karts included in the main game. Kiki, the mascot from the Krita project is now part of our playable characters, and he also created an updated Konqi.

New Features and bug fixes

We've also been busy adding numerous smaller features on the programming side of things
  • To help you navigate in the dark, karts now have headlights that are automatically turned on during night time.
  • A lot of the annoying physics bugs were corrected by hiker. Karts should no longer bump randomly against walls.
  • Karts have also exhaust smoke coming out of their pipes.
  • Benau also implemented HSV colorization to add some variety to our scenery. Our vegetation is now more varied since it can have random greenish hues!
  • For the YouTubers among us, we now have a built-in screen recorder that can record smooth video without the problems of an external program. More instructions are available on our wiki. The recorder works on both Windows and Linux, but we cannot support this feature on macOS at this time.
  • As well as adding the recorder, Benau also worked on various graphical engine improvements. After some fixes, we now have hardware skinning when supported by the underlying hardware stack. As a side-effect of hardware skinning, instanced objects can now have a set of multiple animations, and one animation will play for each instance. As an example of this new feature, the monkeys of Cocoa Temple were taught how to clap, do frontflips, and throw bananas.
  • Auria and Benau improved loading times, RAM, and VRAM usage by implementing a lazy-loading system for textures. Now, textures are loaded as needed by tracks or the GUI, rather than loading everything regardless of necessity. 
  • Benau created a custom 3D mesh format to replace our use of BlitzBasic B3D files. This means drastically reduced file sizes and no more skeletal animation bugs for karts like Adiumy. Add-ons using B3D will still work, but new addons won't work with STK 0.9.2 or earlier.
  •  QwertyChouskie modified Cocoa Temple to make it suitable for the Grand Prix winning cutscene, Alayan designed and implemented a new system for counting points in Grands Prix.
  • Eldermé refactored our rendering engine to improve code quality. Stragus from the #opengl channel on Freenode, in addition to serving as our OpenGL advisor, contributed a high-quality mipmap generator.
  • AI karts can now drive on walls, thanks to Benau, and non-vital track details can be disabled (Geometry detail level in settings).
  • Many fixes to the legacy (OpenGL 2.x) rendering pipeline by deveee and Benau. Now our players with older hardware can enjoy the game a bit more easily.
  • Auria fixed camera jittering caused by code that constantly tried to correct camera movement to match kart speed.
  • Auria and hiker fixed problems configuring gamepad buttons on Linux.
  • Some shaders are compiled at the main menu to reduce lag when opening kart selection screen.
  • Three Strikes Battle now has additional lives appearing that you can pick up if you have fewer than three lives.

Now, it wouldn't be Halloween without real fears! For us, the scariest part is that we're making the release candidate version our major release, so it's extra important to tell us about any issues you encounter on the forum so they can be fixed before the true, final release. Thanks! :)


Download links


You can download the 0.9.3-RC1 binaries on sourceforge at : https://sourceforge.net/projects/supertuxkart/files/SuperTuxKart/0.9.3-rc1/


If you run into problems, please post on the forum, drop by on IRC, or file a bug report on GitHub. Instructions on how to provide a useful bug report can be found on the wiki.

We hope you will have a lot of fun while playing SuperTuxKart!

The SuperTuxKart Team