Language used VB.NET
Technologies used .NET Framework, DirectX 9.0, Remote Method Invocation, GDI Plus
Brief Description Driving Tester challenges a user to take the wheel of a racecar during a race, and assesses the user’s skill as a race driver. It does this by comparing the user’s actions against those of a professional driver.
Full Description Driving Tester challenges a user to take the wheel of a racecar during a race, and assesses the user’s skill as a race driver. It does this by comparing the user’s control actions (steering, accelerator, and brake) against those of a professional driver that the user can choose.

Driving Tester monitors and compares two data streams: one from the chosen professional racer, available from Race API, and the other from the user’s actions on the controls.

Driving Tester operates in two modes: training and test. These modes operate similarly, with the difference being how the pro’s and user’s actions are displayed, and whether a score is calculated.
In training mode, the controls reflect the pro’s actions. Colored indicators indicate the relationship between these and the user’s actions, in such a way that the user can receive feedback on how well he is matching the pro’s actions without taking his eyes off the road.

In test mode, the controls reflect the user’s actions and no colored indicators are shown. User actions are monitored and compared to the pro’s for one lap, and a score is calculated that indicates how well he matched the pro’s actions, along with estimates for how fast he would have been able to drive the car and what his finishing position would have been.

Interfaces exposed None
Coolest part GDI Plus in .NET makes it easy for developers to handle graphics.
DirectX 9.0 Managed version enables easy device communication. Synchronization of multiple threads to get data from device and socket as well as painting screen with moving images.
Source Files frmPerformanceTest.vb This is main form where main thread executes and all the graphics part is handled by this form
  DeviceDataReader.vb This collects the data from Joystick device and passes it on to the main thread for display purpose
  SocketDataReader.vb This collects the data from socket sent by server API and passes that data to the main thread for display. It also calculates the result after the test lap is over.
  Click here for source code, subject to the End User License Agreement.