
Tetra Ski
Introduction:
Tetra Ski is a project I am working on in The GApp Lab, University of Utah. The goal is to build a fully customizable universal control scheme allowing tetraplegia patients to control devices like ski-chairs, boats, bike with different means like joysticks, sip-and-puff, wireless devices, etc.
Build a game to deliver a believable experience on the devices so users could get some idea before riding the actual devices.
http://www.tvc.utah.edu/ces/tetra.php
Engine:
Unity3D
Platform:
PC
Gameplay:
Player can control the ski-chair with various devices including keyboard, joystick, sip/puff device, etc.
What did I do in this Project?
In this project, my main responsibility is to build the train senario, a.k.a. the Game to create a rather "believable" experience and make sure it works well with the universal control scheme.
Since simulating snow physics could take a huge research time, I decided to fake it with a car physics available in Unity3D samples, by adding different behaviors and modifying different parameters, I managed to build a acceptable experience out of the resources I had at hand.
I also helped on the UI setup, and the key-mapping with the Universal Control Scheme.
The video below is our latest build:

We return to Tetra-Ski on the last semester and made a lot of improvement on the game. Unlike the previous semester, this time the team size reduced to only 2 person, me and Erica, a technical artist.
During the semester, we upgraded the game engine into Unity 5, which provided a lot of visual improvement features, but at the same time causing the physics setup become unusable since there are a lot of difference between the physics system of Unity 4 and 5.
The old attempt of recreating a “believable” skiing experience in Tetra Ski was simply taking the sample vehicle project from Unity, modify the car prefab:
-
Replace the visual of the car with a ski-chair
-
Remove the motor
-
Adjust the sideway friction
With this method, we were able to prototype an experience that “looks like” a ski-chair but “drive-like” a car.
After upgrading to Unity 5.2, a lot of the variables underneath the physics system had changed. So the old method is no longer available.
And we also received request from the partner for a more “believable” experience.
So we decided to rework the physics system and this is what I did:
Setup the physical material of the ski so it has really low dynamic friction, so the ski-chair will now slide down the slope due to gravity.
And then I separate the gravity force into different forward and sideway components, so I can apply higher drag on sideway component to make the ski-chair doesn't slide sideway too much.
That's the basic part for the ski-movement, pretty straight forward, but what's been bothering me a lot is the steering part.
There are so many different factor that affect the steering, here are the ones that I came up with (probably not correct):
-
The ski angles (they have different turning radius depends on the current ski condition, i.e. pizza, french fries)
-
Current velocity of the ski-chair, i.e. ski-chair in stationary shouldn't be able to turn, higher speed should result in lower steering efficiency
-
Local Slope
-
Fall-line Slope
-
Fall-line Direction, i.e. when the ski-chair is running down hill without active steering, the ski-chair should steer itself towards the direction of the Fall-line
I calculate the steering force base on above factors and a bunch of magic numbers and then apply them by AddRelativeTorque().
And here is the final product:
Team Members:
Drew (Producer), Ahmad (Engineer), Nick (Engineer), Binoy (Engineer), Erica (Technical Artist), Will (Artist)