Vamos Automotive Simulator project, as the name suggest is an automotive simulation framework with an emphasis on thorough physical modeling and good C++ design. Vamos includes a real-time, first-person, 3D driving application.
Vamos is young and its goals are only partially met. I invite anyone who's interested to contribute.
Thorough physical modeling
Vamos models most major systems of a car. The drivetrain includes a simulation of the engine, clutch, transmission and a limited-slip differential. Tires and suspension are also modeled. If I missed something, let me know.
Good C++ Design
The geometry, track, car and world modules are in their own namespaces. Care has been taken to avoid cyclic dependencies. Standard Library components like strings, vectors and maps are favored over arrays. Some of the modules and classes have aged more gracefully than others. If you see a design area that needs improvement, feel free to pitch in.
· A joystick is highly recommended but not required. If a joystick is present, Vamos will use it. If not you can drive with keys, but the car will be harder to control.
· An accelerated video card is required. If you don't get a frame rate well above 20 frames/second, the simulation will not work correctly. Vamos currently uses OpenGL, the OpenGL Utility Library (GLU), and the OpenGL Utility Toolkit (GLUT) for graphics. These libraries and headers must be present to compile Vamos.
· For joystick handling and sound, PLIB version 1.4 or later must be installed.
· To make GLUT's callback mechanism play nicely with C++ code, Libsigc++ version 1.2.0 or later must also be installed.
· Vamos uses SimGear's XMLVisitor class for reading the car and track definition files. Get SimGear version 0.3.1 or later if you don't already have it.
· Also, you will need a C++ compiler that can handle namespaces. Gcc version 2.96 or later should do.
What's New in This Release: [ read full changelog ]
· This version adds improvements to the computer-controlled cars.
· They handle just about any track without tweaking.
· They even account for humps, dips, and banking when deciding how fast to go and when to brake.
· They can be pretty stiff competition.
· The control algorithms are documented in detail.