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:
1.11.1.7 Stable (2025-04-14)
Current News & Updates:
This build primarily contains small fixes, but should be noted as containing one potentially breaking change to the RouteLimit animated instruction, in the edge-case where no limit is set.
Significant Changes:
- New: Add SectionLimit animated instruction, which returns the current signal speed limit, or -1 if unlimited.
- Fix: Add guard to prevent crash if BC pressure reaches zero.
- Fix: On-screen messages for permissive section not shown.
- Fix: A state with a missing object file would not be correctly hidden. (Introduced in 1.11.1.4)
- Fix: Loading an animated object with sounds could potentially fail in some cases.
- Fix: Incorrect node passed when loading acceleration curves from XML.
- Change: Considerable internal work to abstract the motor / trailer properties.
- Change: Update version of ReactiveProperty library used by TE2.
- Change: A wide version of the handle overlay texture is used when appropriate.
- Change: Update pt-PT language file (Alexandre Carvalho)
- Potentially Breaking Change: If no speed limit is currently set, the RouteLimit animated instruction now returns -1. Previously, it returned double.MaxValue, which caused a crash when combined with other mathematical operations.
- Change: Remove an unnecessary re-init of the renderer when reloading in viewers.
- Change: Add better handling for edge-case where both Volume / Pitch and VolumeFunction / PitchFunction are used in an animated sound.
- Change: Merge some sound related changes into Route Viewer.
Significant Changes:
- New: Perform inline face squashing whilst loading in the MSTS Shape parser. This vastly increases the render speed of complex MSTS models.
- New: Implement basic analog for MSTS material shaders. This should fix missing parts on many of these models.
- Fix: Some MSTS bogie matricies were not recognised. (These are likely on OpenRails standard models)
- Change: Improve train loading progress display. (KennyHui)
- Change: TrainEditor2 will now write XML format trains. This is a work in progress, and not all properties are currently implemented.
- Fix: Incorrect loaded EndSound for primary horn.
- Fix: Correctly handle the case where a decimal is used when an integer is expected in new CFG block parser.
- Fix: Assimp OBJ parser failing to handle faces with no normals.
- Fix: Timetables could be missed by the bracket detection code in CSV route parser.
- Fix: New CFG parser no longer accepts negative length cars.
- Fix: GL.InvalidValue could be generated in debug mode.
Significant Changes:
- New: Bogies move on MSTS models.
- New: Add WiperState animated instruction.
- Fix: Incorrect car mass being used when adjusting for a collision.
- Fix: Non-animated MSTS models could be missing.
- Fix: A Panel2 with no texture in the [This] section failed to load.
- Change: Minor improvement in MSZip compressed X decompression.
- Change: Improvements to threading of some OpenGL calls. (Attempt to fix ‘Failed to create VAO- no OpenGL context issue’)
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