This is the home of OpenBVE, a license-free, open source, free of charge train driving simulator.


This program includes detailed per-car simulation of the brake systems, friction, air resistance, toppling and more. In 3D cabs, the driving experience is augmented with forces that shake your simulated body upon acceleration and braking, as well as in curves. Besides that, OpenBVE features a 3D positional sound system best enjoyed with surround speakers, train exteriors and timetables for the current run. Finally, via the main menu, routes and trains be easily selected to start a new session, the controls can be configured to keyboard or joystick devices, and a variety of options can be selected.

Compared to other simulators of the genre, especially compared to commercial games, OpenBVE has its main focus on realism, not necessarily on user-friendliness. You should be willing to study operational manuals for the routes and trains you want to drive, and will in many cases not get along by just memorizing a few keystrokes. If you can identify with this focus, OpenBVE might be the right simulator for you.

Latest Stable Release: Stable (2022-04-27)

Current News & Updates:

Whilst this build has relatively few new features (again, sorry….) internally, a lot has changed. By converting everything to a shared set of plugins, this reduces the code maintenence workload, and makes implementing new features much simpler in the long run.

Significant Changes:

  • New: Add Separated (Interlocked) handle type.
  • New: Convert train loader to a shared plugin.
  • Change: Bump the OpenAL version to 1.17.0
  • Change: Properly grow the InputDevice plugin box with the main form.
  • Change: Speed up loading of routes which do not use the .Turn command.
  • Change: Update zh-HK translation- Thanks!
  • Change: Add warning if target speed is not set by TFO, as this may cause unexpected results.
  • Fix: The AI driver will now react to the train starting to topple.
  • Fix: Several issues in the DDS texture loading plugin.
  • Fix: In some cases, the camera could get thrown out of the car.
  • Fix: Issue when the primary rail for a platform was missing, but the secondary was not.
  • Fix: Route.InitialViewpoint was glitchy with an AI train in the section.
  • Fix: Colliding with a buffer on a route containing a single train crashed.
  • Fix: Crash when closing the RailDriver config form with none attached.
  • Fix: SanYingInput config window size incorrect.
  • Fix: Route Viewer needed the close button pressing twice with no routefile loaded.
  • Fix: Lighting glitch when the camera was inverted.
  • Fix: Shifted index issue in animated files containing a StateChangeSound

Significant Changes:

  • New: Add snow to the windscreen.
  • New: Make the AI handle the windscreen wipers.
  • New: Add Structure.Weather for displaying weather objects.
  • Change: Improve visibility for animated objects using the TrackFollowerFunction
  • Hacks: Improve the handling of invalid alpha values.
  • Fix The brightness of a bogie could be different to the base car.
  • Fix: Incorrect Z-axis normals when using MirrorAll
  • Fix: Matrices in X objects wrong when using Assimp.
  • Fix: The movement speed of overlay messages is no longer affected by time acceleration.
  • Fix: Possible issue with disconnected joysticks.
  • Fix: Some issues when a model was used both reversed and unreversed in a train exterior.

Significant Changes:

  • New: Add animated windscreen / raindrops.
  • New: Add CameraXDistance , CameraYDistance and CameraZDistance to available animated variables.
  • Fix: Issue with a face providing an incomplete or broken set of normals.

Significant Changes:

  • New: Add HornBlow routefile command, to tell the AI driver to sound a horn.
  • Change: The AI driver has a small random delay before opening the train doors when the train stops.
  • Change: Update zh-HK translation- Thanks!
  • Change: Improvements to the Wavefront OBJ parsers when handling SketchUp generated files.
  • Fix: The StopTime variable for an API station could return invalid values.
  • Fix: The door direction for a station could be wrong. (Introduced in
  • Fix: Detect and handle where the settings file is set to be stored in the program directory, but we have no write access.

The main highlight of this release is a plugin to support of a new set of Cab Controllers, contributed by Marc Riera. These are those from the Densha De Go! series for Playstation, Dreamcast etc., connected via an appropriate PC Joystick adaptor.

The primary hosting for the release binaries has also changed to GitHub, but these & all older versions are still mirrored on the build server, along with the nightly builds.

Significant Changes:

  • New: Various Densha De Go! controllers are now supported via plugin.
  • New: Add AnnounceAll and DopplerAll for adding sounds triggered by each car of a train.
  • Change: Update OpenTK- Various improvements to joystick handling.
  • Change: Joysticks are now identified via GUID in the controls file. This allows reconnection to work correctly.
  • Change: Update pt-PT & zh-HK language files- Thanks!
  • Fix: Crash if a negative switch sound index was supplied in sound.cfg
  • Fix: Ambient and diffuse lighting colors swapped when using hex in a dynamic light XML
  • Fix: Uninstalling a package with others that depended on it didn’t show an appropriate error.
  • Fix: Crash in a route with 3500+ sections