Speed Dreams, is a free and open source 3D racing video game for Linux, Microsoft Windows, AmigaOS 4, AROS, MorphOS and Haiku. Started in 2008 as a fork of the racing car simulator TORCS, it is mainly written in C++ and released under GPL v2+ and Free Art License, the most recent release being version 2.4.2 as of September 2025.

The development of an accurate driving behavior, with different physics engines available, sets the project among the few open source racing simulation codebases.Considering that: Speed Dreams was forked from TORCS, which in turn was based on RARS. Arcade racing is a different genre from sim racing, the only other actively developed open source codebases are those of VDrift and of Trigger, the latter being limited to rally racing.

Speed Dreams can be played with a variety of input devices, including keyboards, mouses, joypads, joysticks, racing wheels and pedals.

Gameplay Racing modes Speed Dreams features several different racing modes; while some offer greater customization than others, most generally try to reproduce real types of races. Complex events, such as various categories of championships or endurance races, are also available. Because racing modes are defined by plain-text configuration files, custom ones can be freely created. In this context the most relevant change since TORCS − introduced in Speed Dreams 2.0 − is the "Career" mode: here the player can compete with different car classes, during multiple seasons, on randomly selected tracks and against balanced random opponents, earning points in championship rankings. Within practice mode, since version 1.4.0, it is possible to run robot races in the "results-only" mode, that is, ignoring the graphics display of the race; this allows the simulation to be run at a speed limited only by the computing power available, and is mostly used by robot developers. For the same purpose version 2.0 provides also a text-only mode: the race is run without graphics − no hardware acceleration being required − and the results are displayed through a command-line interface.

Synopsis of racing modes that are officially released in version 2.0 Name Cars range Tracks range Drivers range Race length Qualification session Multiple race sessions Time of day Sky conditions RainfallIn all modes, if a race is attended by robots which don't support rainfall, this feature is disabled. Results-only mode Results menu Practice Quick race Single event – Endurance Single event – Challenge Single event – Category-specific challenge Championship – All classes Championship – category-specific Career

Weather Speed Dreams 2.0 introduced the simulation of a real sky dome, along with customizable weather conditions: the user can choose the time of day, the cloud cover and the intensity of rainfall to have during the race. The sky dome can be set up as dynamic, namely simulating the succession of day and night and the movement of celestial bodies. Weather simulation affects both physics, with proper corrections to the cars' adherence, and graphics, with animated cloud layers, and if necessary a 2D overlay of rain particles.

Physics Speed Dreams can load different physics engines to use during races. Written in C++, they are software modules executed at every simulation frame to compute the cars' parameters such as position, speed, damage, collisions, suspensions. The user is able to select the physics engine before every race; currently available are: Name Description SimuV2 The original TORCS pseudo-3D physicsA "Pseudo-3D" engine projects the car's physics on a plane: Cars have a limited banking/pitch angle. Physics are more precise for low values of banking and pitch. with some backports from SimuV2.1 and SimuV3. SimuV2.1 New version of SimuV2 with some improvements; it is the official physics engine for Speed Dreams 2.0, upon which cars parameters are set up. SimuV3 3D physics engine. SimuV4 New in release 2.1.

All Speed Dreams physics engines feature real-time car collisions based on the SOLID library. Each car model defines a bounding box according to which the physics engine detects side and bottom collisions; these produce car damages, computed on a scale ranging from 0 to 10000; damages affect only cars' performances, without producing any graphical output. A car with more than 10000 damage points is excluded from the race.

Sound Sound management is achieved through OpenAL or, optionally, PLIB. Audible sounds include collision and tire screeching noise, in addition to the engine's; there are simulated also complex effects such as attenuation and Doppler shift. In 2011, the professional sound production company audioberlin reworked the default Speed Dreams sounds; the improved versions are included in release 2.0.0.

Racing interfaces While racing, the player is offered a customizable 2D cockpit displaying various gauges, lap times information and a dynamic mini-map. Every instrument features several modes, among which the player can choose while racing in order to change the appearance, or even completely hide the interface. A rear mirror is also available, although quite expensive in terms of consumed computing power. An "arcade" mode, legacy of TORCS, is still maintained as of version 2.0; according to the authors of the Italian manual for TORCS, it is more suitable for the novice player of Speed Dreams. New addition to Speed Dreams is the Formula One-style timer with an accuracy of a millisecond (ten times more precise than TORCS' one).

AI TORCS was born with focus set more on AI racing than on human driving. Speed Dreams, according to the project's description, shifted the balance towards a more user-oriented racing experience. Nonetheless, unlike the fate of the other legacy content, reworked but mostly maintained, in late 2009 all the robot engines inherited from TORCS were removed and replaced by new, more advanced ones.

General description Speed Dreams features computer-controlled opponents to race against, commonly called "robots". These are software modules, written in C++, which control the behaviour of cars during any kind of practice, qualification or race session. A module can virtually handle any number of single robot drivers; these share the source code but may have custom car setups and liveries, and even drive different cars. Robots may be programmed with any kind of function in order to compute racing variables: throttle, brake, steer, gearbox and clutch. These values are sent to the race engine by an open interface of Speed Dreams. Human players are treated just like any other robot: their variables are controlled by user-defined input devices and can be influenced by automated driving aids such as ABS, TCS or speed limiter for pit-stops.

Available robots Speed Dreams 2.0 features 3 official robot engines, for a grand total of about 150 drivers competing in all the official car categories: Name Description Author Simplix Described as "cautious and not too aggressive", Simplix robots won the 2008 and 2009 seasons of the TORCS world endurance championship. As of 2.0.0 release, it is the only robot engine able to drive on different weather conditions. Wolf-Dieter Beelitz USR Based on K1999 racing line computation algorithm, USR robots won the 2007 season of the TORCS world endurance championship. USR driving style is described as "aggressive and very entertaining" by the Speed Dreams development team. Andrew Sumner kilo2008 Based on a heavily modified version of the "Locus" robot tutorial by Andrew Sumner, kilo2008 attended the 2008 and 2009 seasons of the TORCS world endurance championship. Gábor Kmetyko Another different set of drivers include dandriod and shadow.

Robots from the 1936 GP car series are named after real drivers of that period; the names of most other robots are fictitious, although many names of Speed Dreams developers and contributors appear, mostly in the Torcs Racing Board 1 category.

Common robot functions Robots shipped within Speed Dreams share some kinds of behavioural functions in order to achieve realism in the driving simulation. While being loaded, robots compute a racing line, which depends on the track's XML description. Initial fuel amount, conforming to a fuel and pit-stop strategy, is also estimated and requested to the race engine. During the race robots aim at following the racing line, but their behaviour can be influenced by the parameters received by the race engine; these include the position and the speed of other cars, which is taken into account by collision-avoidance and overtaking algorithms. Robots also have learning capability: they can improve their lap times basing on previously driven laps. A function to regain the track after accidents is also implemented in all official robot engines. Speed Dreams robots can handle a so-called "skilling" parameter, defined by the player: this way the user can alter the robots' performance and therefore their lap times.

Pit stops As of release 2.0, the pit stop simulation system remains unchanged from TORCS. When racing on tracks equipped with a pit lane, drivers are assigned a pit stop emplacement according to their position on the starting grid. Since most tracks don't provide enough emplacements for all the race competitors, robot drivers support pit stop sharing. To trigger pit stops, robots have to drive near their emplacement at sufficiently slow speed, then make the stop request to the race engine, which captures the car and keeps it still and unresponsive until the end of the process. The human robot automatically sends the request as soon as the other conditions are satisfied; the simulation is then paused, while the player is offered a menu where he can choose the parameters of the stop. Services offered during pit stops are repairing damage, refuelling and serving penalties; the stop's duration is automatically defined and depends on the amount of damage and of fuel to deal with. During pit stops no graphical animation is displayed.

Multiplayer The "split-screen" feature allows to split the display − on the same monitor − into up to four regions which act independently: these can show the perspective of different cameras, with different interface settings and following different drivers. During the race the regions can be dynamically created, deleted and arranged in several different layouts. On the human racer's side this system allows up to four players to simultaneously compete in the same race using the same PC.

An on-line multiplayer mode was developed for version 2.0, but wasn't included in the official release because it was not yet fully stable.

Penalties Speed Dreams has inherited from TORCS a per-driver penalty system. Penalties are triggered by violations to pit lane rules: breaking the speed limit in the pit lane (90 km/h) results in a drive-through penalty, while crossing the pit lane border produces a stop-and-go penalty.

Penalties have to be cleared within five laps since the notification; disobeying drivers are automatically excluded from the race.

Cameras Several different camera modes are available, covering different cockpit and outside views. The "TV director" camera mode makes use of segment-by-segment cameras defined by each track, automatically focusing on interesting events of a race. Each camera mode can be independently zoomed in and out. No free camera is available as of version 2.3.0.

Time warping