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.11.3.1 Stable (2025-12-02)

Current News & Updates:

Other than the significant changes listed below, this build also contains work on the internal traction modelling, and many of the assumptions that it makes.

Significant Changes:

  • New: Add ACCESIBILITY_NEXT_LIMIT to available controls. (Set by default to SHIFT + CTRL + L on new installs only)
  • New: Initial basic electric traction modelling available for XML trains.
  • New: Allow the driver body properties to be set via XML. (Controls head bounce)
  • New: Attempt to support WAV files containing multiple DATA / SLNT chunks.
  • Change: Sanders now have a specific emptied state.
  • Change: Show name of the currently open object in the Object Viewer title.
  • Change: Classify TFO not supported in Route Viewer message as info not error. (AmberIsFrozen)
  • Fix: Fog didn’t always work as intended with the GL4 renderer.
  • Fix: Keyframe animated objects not hidden properly if used as an exterior object.
  • Fix: Error when attempting to specify name for player path of a switch. (AmberIsFrozen)
  • Fix: Compressed textual S files not working.
  • Fix: Moving a car due to collision with another train didn’t move the bogies.
  • Fix: Applying the brakes at very low speed (~0.05km/h) on level track didn’t work.

Significant Changes:

  • New: Add wheelslip indicator to debug overlay.
  • Change: More internal improvements to MSTS shape parser.
  • Fix: Improve play / resume sound behaviour. This hopefully fixes the case of ‘stuck’ run sounds experienced by a minority of users.
  • Fix: Viewing distance not working correctly with object based backgrounds.
  • Fix: Issue with an animated object using StateChangeSound and a single buffer.
  • Fix: Brightness function not working when manually added to an animated file.
  • Fix: Route Viewer rail path overlay showing ended tracks. (AmberIsFrozen)
  • Fix: If a train contained a zero-length car, it failed to show in Object Viewer.
  • Fix: Freeze with animated files containing unexpected data in certain sections.

Significant Changes:

  • New: PNG decoder handles 16-bit alpha PNG files.
  • Change: Drop required OpenGL version to 4.1
  • Change: Allow MSTS shapes to be used in animated files- Contained animations will be lost in this case.
  • Change: Message timeouts are no longer affected by time acceleration or the in-game menu.
  • Change: Implement LoadForAI value for XML trains to control loading custom plugins for AI trains.
  • Change: Add warning for probably incorrect rotation direction vector in CSV / B3D objects.
  • Change: Improve the error logged when an incorrect argument separator is used in CSV / B3D objects
  • Change: Improve color handling in X parsers.
  • Change: If a critical error is encountered on OS-X, we attempt to show a system error dialog.
  • Change: Make Zuki capabilities detection less strict in DenshaDeGo! Input. (MarcRiera)
  • Change: Large number of internal improvements and fixes in MSTS Shapes.
  • Change: Improve draw speed when events overlay is active and large numbers of events are present.
  • Experimental Change: The distance to the closest train is now measured using world position, not track position.
  • Fix: .Net plugins might not load correctly.
  • Fix: Issue when attempting to repeatedly change to a missing interior view.
  • Fix: Use invariant culture when parsing vectors from a string in XML.
  • Fix: Issue with RailAnnouceAll command.

Significant Changes:

  • Change: Implement D3DDECL_USAGECOLOR in NewXParser.
  • Change: Apply consist reversal before placing TFO.
  • Change: Allow using MSTS shapes in animated files; contained animations will be set to frame zero.
  • Fix: TrackFollowerFunction with no axles incorrectly flipped (Not fixed right in 1.11.2.3)
  • Fix: Some animated objects containing sounds might not parse correctly.
  • Fix: Some palleted PNG files with an odd width, less than a scanline length failed to load.
  • Fix: VSync option not remembered. (AmberIsFrozen)
  • Hacks: Update brackets in station name fix.
  • Hacks: Fix some buggy objects in Ryoso.
  • Hacks: Fix transparency in Kurumigasaki Railway signs.
  • Compatability: Add a large number of files to the compatability database.

Significant Changes:

  • Fix: Several edge-cases in the new block parser.
  • Fix: Permille gradient display incorrect.
  • Fix: TrackFollowerFunction with no axles set failed to work correctly.
  • Fix: An object using an invalid (non-zero) state as hidden could be incorrectly shown on introduction.
  • Change: Pre-load all variants of a texture, not just ClampClamp if preloading is selected.
  • Change: Improve vertex de-duplication algorithm for a considerable speedup.
  • Change: Update openal-soft to v1.24.3
  • Change: Update OpenGL related error strings to reflect minumum GL4.3 in new renderer.