I've been planning to do a wheeled vehicle simulation for many years, but I didn't get properly started until the spring of 2002. At that time, I had already derived most of the model equations (many of which were erroneous) and I started out making a model in MatLab, since that environment already contained a host of efficient ODE solvers. Feeling the integration was too slow, I decided to implement the model as a .mex file (a MatLab compatible version of the programming language C). This didn't work out too well either, so I decided to do it myself from scratch in C in a Linux box.
This was then converted into C++, and slowly I had a simulator that was reasonably stable with reasonable fidelity. It had simple OpenGL graphics (gaily coloured boxes moving on a red-and-white chessboard), nice OpenAL sound (complete with Doppler effect, stereo panning and distance attenuation) and was using SDL for framebuffer initialization, timing and input devices. During the spring of 2004, I put some effort in implementing a head-up display and making the simulator read parameters from simple hierarchical script files. I also ported the code to GCC V3.x and made it work under MS Windows XP, since external circumstances forced me away from my Linux box. Making it compile under Linux again only required changing a few lines of code. In May of this year I got fed up with it, trying to keep my powertrain model from exploding numerically when integrating. I was using a standard explicit Euler ODE integrator, knowing its shortcomings full and well.
After a seven-month hiatus while following the early development of the Motorsport project (http://www.motorsport-sim.org/) and seeing the recent development yielding a video demonstrating the physics engine, and even an early prototype beta, I got heavily motivated to get back to working on my simulator. So far, this means implementing the powertrain properly (including multiple limited-slip differentials) using a semi-implicit integration method for numerical stability.
The simulator is still far from being grown-up, but have a look at the news listing to see recent progress.