Open source since 2000

CarWorld is a cross-platform driving simulator and experimental test bed for real-time rendering, vehicle dynamics and networking.

CarWorld is written in C++ and uses SDL2, SDL2_image, SDL2_net, OpenGL and GLU. See the repository documentation for the currently known build instructions.

Historical project, preserved and maintained on GitHub

CarWorld showing a red sports car on a road in a mountainous landscape View full-size screenshot

About the project

Built to explore how cars move—and how worlds are rendered.

CarWorld is a driving simulator and demonstration program created by Marcus Hewat, mostly while he was a student. It became a practical place to test ideas in graphics, mechanics, input and networked simulation.

The source code is available under the GNU General Public License v3.0. The project has run on Linux, Windows, macOS, HP-UX, IRIX, BeOS and MorphOS.

Under the hood

Rendering and mechanics

01

Real-time rendering

An OpenGL renderer for textured models, interpolated surface normals, projected shadows and background objects.

02

Classical mechanics

Simulation in standard SI units with configurable mass, inertia, suspension, damping, torque and friction.

03

Independent timing

Variable simulation increments keep CarWorld time independent of the rendering frame rate.

04

Portable foundations

Built on SDL and OpenGL, with support developed and contributed across many operating systems.

From the archive

CarWorld in action

See all platforms

Release history

Selected milestones from the original project history.

  1. 0.245Fixed a crash on exit, missing textures on first launch and incorrect vehicle lighting.
  2. 0.243Added GCC 4.1 support and eliminated Visual Studio 2005 compiler warnings.
  3. 0.239Ported to SDL, compiling with Visual C++ 6 and GCC 3.3.1.
  4. 0.223Networked mode working on Windows 95 and 98.
  5. 0.222Straightened out the truck and added an RPM package target to the Makefile.
  6. 0.219Added DirectX force feedback and automatic restart, removed the GLU dependency and fixed vehicles starting out of balance.
  7. 0.215Improved network support, added the first BeOS port and applied contributed patches.
  8. Earlier
    0.190–0.205First release, Linux joystick support and preliminary networked gaming.