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.1.3 Stable (2025-02-05)

Current News & Updates:

This build has one small addition, and unfortunately more fixes resulting from the new .cfg parsers.

Significant Changes:

  • New: Implement permissive sections.
  • Fix: Glitch when coupling multiple times.
  • Fix: Beacon reciever could be incorrectly placed.
  • Fix: Issue when attempting to use a backstopped needle with an invalid subject in Panel2.cfg
  • Fix: Zoom / close buttons missing in switch dialog.
  • Fix: Spurious error if damping ratio used
  • Fix: Two horn glitches in sound.cfg
  • Change: Add extended timeout for main panel image loading in Panel.xml
  • Change: Line errors for new parsers now start at 1, not 0 (to match that of the originals)

The first release of 2025- Whilst the changes for players are minimal, this release contains a large number of internal changes.

When this project was started 10 years ago, we inherited a lot of code with unclear licencing, and that is now in need of modernization. With this release, this ‘legacy’ code is now much reduced.

Hotfix (as usual?!) to v1.11.1.2 to fix two further issues:

  • Fix: Incorrectly parsed lengths in CFG files on systems using the comma as a decimal separator.
  • Fix: Music horn not working correctly. (Copy + paste error)

Significant Changes:

  • Change: Internal replacement of some CFG based parsers- This replaces a large chunk code with ‘unclear’ licencing with fresh BSD-2 code. ( See https://github.com/leezer3/OpenBVE/issues/305 for further details and discussion)
  • New: Allow coupling to previously uncoupled cars.
  • New: Add FrontCoupler and RearCoupler animated functions.
  • New: Add View Log option to the OpenGL main menu.
  • Change: Block various system and non-useful directories when browsing in the OpenGL main menu.
  • Change: Update zh-CH language file. (JunmoreHeavyBox)
  • Change: Handle train.dat files with a missing version header.
  • Change: Remove obsolte error message for animated files using RPN functions.
  • Change: If the window size matches that of the monitor resolution, the state is set to maximized.
  • Change: Assorted changes to hopefully make things render better on HiDPI monitors.
  • Change: Considerable internal work to allow keyframe animations to work.
  • Fix: Some routes failed to appear in the OpenGL main menu.
  • Fix: Fork and update DotNetZip to handle a potential security vunerability.
  • Fix: Don’t crash if a zero-length train is encountered.
  • Hacks: Add fix for JR 内房Line

Signficant Changes:

  • New: Add number of concurrent sounds to GL options menu.
  • New: Add UI scale factor to GL options menu.
  • New: Include forwards / backwards tolerances in data supplied to runtime plugins. (Marc Riera)
  • Change: Update routefile hacks database.
  • Change: TXT files are now validated before being shown in the GL main menu if appropriate.
  • Change: Minor speedups in BVE5 route parser.
  • Change: Use the Windows specific list of invalid path characters for all systems.
  • Change: Assorted improvements to how displays with non-standard DPI are handled.
  • Change: The invariant culture is always used when converting vectors to string format.
  • Fix: Incorrect decoding of some RLE-8 encoded BMP files.
  • Fix: Incorrect decoding of 1-bit palleted PNG with odd width.
  • Fix: An incorrect index in a $Sub() command will now return an empty string.

Signficant Changes:

  • Change: Only pause the currently active run / flange sound, stop others. (OpenAL appears to become unreliable with large numbers of paused sources)
  • Change: Some improvements to the GL main menu when changing resolution.
  • Fix: Some BVE5 routes were not working.

Signficant Changes:

  • New: Implement sounds for BVE5 AI trains.
  • New: Implement default time for BVE5 station jumps.
  • Change: Add a tools menu to the GL main menu, and move package management into this menu.
  • Change: Update the openbve.desktop file installed by the Debian package.
  • Change: Also accept BACKSPACE to clear objects in Object Viewer.
  • Fix: Point based sounds were failing to trigger on non BVE5 routes.
  • Fix: An invalid position in a quad tree lead to a memory leak.