Qiping Yan | Computer Science and Engineering | University of Nevada, Reno
School Projects -- 1 Switch Super Tuxkart

Project Name: 1 switch Super Tuxkart
Class: CS791M: Player Game Interaction (2010)
Team: Bugra Oktay , Bing Dong Li, Qiping Yan
Implementation: C++ in a Linux box
Description: In this project, we modified an existing open source car racing game called SuperTuxKart, to make it accessible for users with motor impairments. Our modifications resulted in a one-switch version of this racing game. User studies showed that the new control structure is easy to use and the game is still fun to play.
Racing games generally require more interaction because of the continuous changes in the environment like the orientation of the car, positions of the opponents, road borders, etc. Therefore it is very difficult for users with motor impairments to play this type of game. Even though there are a lot of commercial racing games, none of them are accessible for people with motor impairments. We chose the SuperTuxKart, which is an open source racing game to work on. In the following chapters of this report, we will explain our strategies, the modifications made; we will talk about our usability study and we will inform the reader about the contributions of team members.


To better explain our strategies, we divided this chapter into two parts: Menus and In-game Controls.


For having an accessible menu structure, we simplified the menus as much as possible. We simplified the way to start a race by removing:

  1. Screen elements such as insignificant tabbed structures
  2. Menu items such as credits, networking
  3. Dialogue that are standing in the way

Secondly, we used the strategy to scan over the menu items each time a user accesses a menu. We set the skipping delay to 1 second which means a menu item is highlighted (selected) for a second before passing to the next menu item so that the user can press the button to select it in this time period.

In-game Controls

Initially, we designed two different modes of control for the game which were steering control and power-up Control. In steering control, the user was allowed to control the steering of the kart where all of the other issues related to game play such as accelerating, using power-ups etc. were handled by artificial intelligence (AI). In power-up control, the user was allowed to control the power-ups where all others were handled by AI. However, after the user studies (which will be explained in the upcoming chapter), we decided to abandon this approach and combine these two control modes into a single mode.
Our new approach lets user to steer the kart until it collects a power-up package. Once a power-up is acquired, the steering control is passed to AI automatically, letting the player use the power-up whenever he/she wants. When all of the power-ups are consumed, the user is given the steering controls again.
For the steering, we used the following strategy:

1-Move straight until button press
When pressed:
2-Steer right until button press
When pressed:
3-Move straight until button press
When pressed:
4- Steer left until button press
When pressed:
5-Go to step 1

We did not use other strategies like scanning among the possible directions to go or holding the button to steer in a direction (and releasing it to go to the opposite direction) because we decided this strategy is allowing easier interaction while not exhausting the user by making him/her hold the button almost half of the time. It is also hard to go straight using these alternative methods.

For firing power-ups, we used a quite straightforward approach like firing the power-up at button press (if there is any power-ups).

Considering the possibility of getting out of the track we also added an automatic rescue feature to our design where a kart is put back on the track if it gets out of the track or starts to go in the wrong way.