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

Screenshots

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:

1.14.0.2 Stable (2026-08-03)

Current News & Updates:

OpenGL 1.2 support has been removed from this build. This will provide a general performance increase and allows for much easier maintenance. The final build supporting OpenGL 1.2 is v1.13.0.8- https://github.com/leezer3/OpenBVE/releases/tag/1.13.0.8

Significant Changes:

  • Change: GL1.2 renderer removed- OpenBVE now requires GL4.1 as a minimum.
  • Change: Generate the normals visualisation on demand- this will reduce RAM usage and loading time. (Aditiya Afrizal)
  • New: CSV / B3D object parser replaced with new code.
  • New: Allow the use of a animated object as a background object. (Aditiya Afrizal)
  • New: Object Viewer remembers the background color.
  • New: Use night-time textures in MSTS cabs where present.
  • Fix: Stop the axis visualisation from casting a shadow. (Aditiya Afrizal)
  • Fix: Some Mechanik routes not working correctly.
  • Fix: Issue with using RunInterval command with hacks on
  • Change: Alter Mechnik transparent color to use the first color in the pallette, not pure black.
  • Change: Update known Mechanik routes database.
  • Change: Restrict Mechanik correction markers to the nearest 100m boundary, not the exact track position.
  • Change: Improve AI driver response to wheelslip when using the UKDT plugin.
  • Change: Workaround for drawing issue in TE2 motor sound visualiser.
  • Change: Add some more small bits in the MSTS parser.
  • Change: Solution updated to .Net 4.8.0
  • Change: Add workaround for issues on Debian Forky.
  • Hacks: Fix some missing sounds in TT_YUS routes. (developer oversight)
  • Hacks: Accept letter O as substitute for zero when parsing CSV / B3D objects.

DEPRECATION NOTICE:

Please note that the next public build (v1.14 series) will deprecate the OpenGL 1.2 (legacy) renderer, meaning that GL4.1 will now be required. The new renderer is considerably faster in all cases, and allows for various things (particles, shadows, complex keyframe animations) not supported by the legacy renderer.

OpenGL 4.1 is supported by all graphics cards, and most integrated graphics solutions from ~2012 onwards.

Significant Changes:

  • Change: Update handling of incorrectly rooted paths.
  • Change: More improvements to object transformations. (Aditiya Afrizal)
  • Change: Improve compatibility with Hmmsim specific CSV route variant.
  • Change: When a Cylinder has an invalid number of faces, it is not shown when hacks are active. (Matches BVE2 / BVE4 behaviour)
  • Change: Update routefile compatability database.
  • Fix: Two further $Include related issues introduced in 1.13.0.3
  • New: Add Options.StartingDirection command.
  • BVE5: Don’t attempt interpolation between two identical values.

This release contains a major step forwards in graphics capabilities, thanks to Aditiya Afrizal- Shadow effects.

Shadow effects may currently be controlled globally through a new options page. Please note that results will vary, depending on the way any given route has been constructed, and the lighting setup it uses.

Significant Changes:

  • Change: Further improvements to coupler collision logic.
  • Change: Update Debian package dependancies to handle new unified Mono package.
  • Change: Use a more specific error message when a rooted path is supplied in place of a relative one.
  • Change: Improve handling of PNG files with an unused and invalid TRNS chunk.
  • Change: Improve layout of options pages. (Aditiya Afrizal)
  • Fix: Infinite loop if an empty $Include file was encountered (introduced in 1.13.0.3)
  • Fix: Possible crash when attempting to transform objects which do not conform to 4 vertex counts.
  • Fix: Handle X files which specify invalid colours.
  • Fix: Make light directions in dynamic lighting XML consistant with routefiles. (Aditiya Afrizal)
  • Fix: Deform for some roofs / cracks broken in v1.13.0.0 (Aditiya Afrizal)
  • Fix: Logic issue in TFO parser.
  • BVE5: Various improvements to route parser ( https://github.com/leezer3/OpenBVE/pull/1325 )
  • BVE5: Fix routefiles in which the first encountered route command is one which does not take a distance.
  • BVE5: The specified rail for repeaters should be case invariant.
  • Hacks: Fix issues with certain walls / dikes with Minobu route.

This release contains a major step forwards in graphics capabilities, thanks to Aditiya Afrizal- Shadow effects.

Shadow effects may currently be controlled globally through a new options page. Please note that results will vary, depending on the way any given route has been constructed, and the lighting setup it uses.

Significant Changes:

  • New: Add shadow effects. (Aditiya Afrizal)
  • New: Allow the clip-distance to be configurable. (Aditiya Afrizal)
  • New: Add the CameraCar animated instruction.
  • New: Handle Intel DVI ADPCM and GSM-610 format WAV files.
  • New: Add optional smooth camera transition effects, when switching between views. (Aditiya Afrizal)
  • Change: Assorted improvements to the wavefront object parsers.
  • Change: Set the specular lighting color from the X object parsers.
  • Change: Improved the GL main menu on non-standard DPI.
  • Change: Improved the behaviour of menus when the game window is resized.
  • Change: Aspect value of 0 is also accepted as a 2-aspect R/G signal in CSV files with hacks enabled. (BVE2 accepts this)
  • Change: Implement BVE2 panel.cfg transparency mask- Please see the following errata entry for further details.
  • Change: Implement the BVE5 black clear color- Helps with some routes which use this to hide things.
  • Change: Improvements to Bve5_Parsing library.
  • Change: Bump SharpCompress version
  • Compatability: Add UchiboX objects to database.
  • Compatability: Update route patch database.
  • Fix: XML door sounds missing in cars other than the driver car.
  • Fix: XML motor sounds not quite right (again…)
  • Fix: XML couplers not parsed right.
  • Fix: Physics issue with couplers where Minimum == Maximium
  • Fix: Bug with BVE5 routes using interpolation in the first block.
  • Fix: Improve handling of some BMP files containing an undeclared color table.
  • Fix: Pressing and holding the R key kept toggling the renderer type indefinitely.
  • Fix: Typo in TE2 exported coupling behaviour.
  • Fix: Route map creation moved to the main GDI Plus lock.
  • Fix: The AI driver could get stuck with extremely close signal / station spacing.

Significant Changes:

  • New: Impliment an auto-reload feature for Object Viewer (Aditiya Afrizal)
  • Change: Textures which declare an unused transparent color will no longer get an unnecessary alpha channel.
  • Change: The ACE parser will no longer add an unnecessary alpha channel to textures which don’t contain one.
  • Change: File lists in OpenGL menus are deliberately sorted alphabetically.
  • Fix: Nighttime textures missing. (Copy + paste error when implementing Loksim transparency bitmaps in 1.12.1.2)
  • Fix: Remove a couple of errant return statements from the new CarXML parser.
  • Fix: Correct decoding for monochrome bitmaps containing an undeclared color pallette.
  • Fix: Camera zoom could get stuck at minimum or maximum (Aditiya Afrizal)
  • Fix: CarXMLConvertor duplicating power curves on second conversion.