# Changelog

The changelog contains a list of changes between openBVE versions. The changelog is aimed at advanced users and add-on developers.

1. 1.4 series (stable)
2. 1.3 series (development)
3. 1.2 series (stable)
4. 1.1 series (development)
5. 1.0 series (stable)

## 1.4 series (stable)

### v1.4.0.10 (2012-02-15)

Interoperability
  On Windows systems with certain security policies, the .NET Framework can refuse to load plugins if users give openBVE insufficient privileges. This version includes a work-around that might solve this issue for some users, but in any case, users are adviced to let openBVE run with sufficient privileges to access its own files!
Error report
  Slightly more helpful error reports in case plugins cannot be loaded or produce exceptions at runtime.

### v1.4.0.9 (2012-02-08)

Bugfix
  Compared to v1.2.14, performance was reduced on some systems. With the bug fixed, performance may even slightly increase compared to that version.
Bugfix
  Switching from an external view to the Interior Lookahead view could cause scenery to be missing in front of the camera.

### v1.4.0.7 (2012-02-05)

Compatibility
  The mixing of multi-channel audio files to mono has been improved. The algorithm used tries to discard silent channels, then mixes the remaining channels to mono while trying to detect destructive interference (by resorting to any non-silent channel) and constructive interference (by rebalancing volume). Add-on developers should take notice that there is no perfect mixing algorithm that works for all files. Please just don't provide stereo sounds in the first place!

### v1.4.0.5 (2012-01-22)

Bugfix
  Nighttime textures were completely ignored in B3D/CSV objects.

### v1.4.0.3 (2012-01-17)

Sound
  Adjustments to sound volume balance. Sounds that originate outside the driver's car now have a reduced audible range if the user is in Interior view mode.
Interoperability
  Text rendering could produce artifacts on some systems.
Bugfix
  Controls could not be assigned to joysticks in the main menu.
Bugfix
  Some car sounds would always be played on the first car in the train.

### v1.4.0.0 (2012-01-08)

Managed add-ons
  If there are multiple servers available for a package, openBVE now tries to download from them in a random order.
Error report
  The Windows Forms error report screen is no longer available. All errors are now logged to UserData/Settings/log.txt.

## 1.3 series (development)

### v1.3.4.2 (2011-12-29)

Bugfix
  Some fixes regarding handling of textures in the panel.cfg and regarding path concatenation. Also, resized textures have improved quality.

### v1.3.4.1 (2011-12-27)

Bugfix
  A few things that were temporarily unavailable are back again, including upscaling textures to a power of two, mixing multi-channel audio to mono, and legacy signal glow.
Bugfix
  When an add-on did not have a country assigned to it, the main menu would crash trying to display the add-on.

### v1.3.3.0 (2011-12-21)

Interface
  Added translation support for everything related to managed content.

### v1.3.2.15 (2011-12-09)

Bugfix
  Removed all threading from the game because some OpenGL/SDL-related calls were made in a non-thread-safe way. As a consequence, asynchronous loading of textures and sounds, as well as loading the route and train in the background will not be available in openBVE again until much later in the 1.x development series.
Bugfix
  Clamping certain textures to edge is back again, meaning certain textures should not have borders around them any longer.

### v1.3.2.10 (2011-12-04)

Managed content
  Added support for long file names in tar archives ($LongLink). This is critical because some add-ons will not be installed correctly otherwise.

### v1.3.2.5 (2011-12-02)

Managed content
  Some cosmetic changes here and there. In particular, when no keywords are entered in the filter boxes, the country is now always shown in the listboxes, along with its flag.
Interoperability
  Depth buffer size has been changed back to 24 bits because other values do not seem to work on Linux.

### v1.3.2.0 (2011-11-30)

Managed content
  Managed content has been introduced, allowing users to browse and install add-ons from within the game.
Sound
  The previous sound model using inner and outer radii has been restored, although is implemented with a different distance attentuation model and thus sounds differently.

### v1.3.1.0 (2011-06-12)

API (sounds)
  The API for loading sounds has been implemented under the OpenBveApi.Sounds namespace. The WAV sound format is now exposed via the Sound.RiffWave.dll plugin, and the FLAC sound format via the Sound.Flac.dll plugin.
Sound
  An experimental and yet incomplete sound model based on sound pressure has been introduced.
Recognizing file formats
  All texture and sound plugins now identify the file formats they support solely via file headers and magic numbers - file extensions are no longer checked against.

### v1.3.0.0 (2011-04-28)

API (textures)
  The API for loading textures has been implemented under the OpenBveApi.Textures namespace. All texture formats supported so far are now loaded via the Texture.BmpGifJpegPngTiff.dll plugin.
API (files and directories)
  Methods for combining files and directories platform-independently and case-insensitively have been implemented in the OpenBveApi.Path class. They are intended to supersede System.IO.Path.Combine and are now used throughout the source code. Plugins should use these functions, too, in the future.
Loading screen
  The Windows Forms loading screen has been removed in favor of an OpenGL loading screen. For the time being, the error report at the end of loading is unavailable.
Rendering text
  New methods for rendering text have been implemented. Previously, the typographic and physical sizes of characters were not distinguished, leading to incorrect spacing between certain characters.

## 1.2 series (stable)

### v1.2.14.0 (2011-12-02)

Bugfix
  Language files were not loaded if the main menu was bypassed via /route and /train command-line arguments.
Bugfix
  The rear axle of the last car would trigger the SetSignal call when the train was traveling backward. It is now always the front axle of the first car regardless of travel direction.
Bugfix
  Beacons that are engaged to the nearest red signal were not reported correctly to plugins, causing some safety systems (for example ATS-P) to not work correctly on some routes.

### v1.2.13.0 (2011-05-25)

Interface
  The main menu now links to the new homepage. The version checker has been updated accordingly.
Interface
  The SDL window should now show the rounded game icon on all platforms.

### v1.2.12.10 (2011-04-17)

Bugfix
  Removed a debug message that showed up when loading a Win32 plugin.

### v1.2.12.6 (2011-04-15)

File system
  The program now checks all directories in the configuration file if they are absolute paths. If not, the program will not execute. This should help finding and fixing problems due to malformed configuration files.

### v1.2.12.2 (2011-04-06)

Bugfix
  The file system configuration did not acknowledge the RestartProcess parameter and just used the currently executing assembly.
Bugfix
  Starting the simulation in Arcade mode would produce an instant message about passing a red signal and reduce the score by 100 points.

### v1.2.11.16 (2011-03-19)

Developing trains
  The train.dat now allows to specify the driver's car via the #CAB section.
Bugfix
  The program could crash when pressing the point-of-view keys. Also a few glitches in the OpenBveAts plugin have been fixed.

### v1.2.11.10 (2011-03-10)

Simulation
  The built-in safety systems ATS and ATC have been outsourced into the OpenBveAts plugin. As a result, the safety systems are a little more realistic than before and can also be individually turned on and off. The CTRL+S key combination has been removed. The new keys are 2 (ATS-SN), 3 (ATS-P) and 4 (ATC).
Bugfix
  .NET train plugins could receive incorrect signal aspects in the SetBeacon call if an upcoming signal was kept red by a station.

### v1.2.11.5 (2011-01-23)

Bugfix
  .NET train plugins could receive incorrect signal aspects in the SetSignal call if an upcoming signal was kept red by a station.
Bugfix
  The sound handles reported to .NET train plugins were sometimes not cleared up correctly, leading to the plugin believing a sound was still playing even when it had already stopped.

### v1.2.11.0 (2011-01-07)

File system
  The organization of files and folders has changed. By default, userdata is no longer stored in the install directory. Customization of the file system is now fully possible. See Using openBVE for the details.
Interface
  Stations without a name assigned to them do not appear any longer in the route map, gradient preview nor in the default timetable unless the player's train is expected to stop at such stations.
Developing routes
  The Track.Sta and Track.Station commands now allow to flag a station as "change ends". At such stations, once the departure time has been reached, the train automatically jumps to the next station.
Developing routes
  The $If/$Else/$EndIf directives have been officially added to the CSV/RW route formats to allow for conditional in-line code.
Developing routes
  The $Include directive now allows to offset track positions in the included file.
Bugfix
  If a horn was not assigned in the sound.cfg, it could play any random sound when triggered by the user.

### v1.2.10.0 (2010-12-19)

This is a summary of what has changed since the last stable version 1.2.8.2.

Simulation
  The AI now stops for buffers. Previously, it would happily drive into them and cause the train to derail.
Developing trains
  Plugins can now be developed that run on all platforms, including support for the AI and better support for continuous transmission of signal states via SetSignal.
Developing trains
  The extensions.cfg now allows to reverse cars in the consist. This makes it unnecessary to create reversed copies of car objects.

### v1.2.9.25 (2010-12-07)

Simulation
  All simulation-related components are now updated at an average of 75 times per second, but at least 50 times per second, regardless of framerate. This should give a minimum amount of precision for plugins to work with. Previously, if framerates were low, the distance traveled by the train between frames was too great to meaningfully work with.
Plugins
  SetSignal is now limited to reporting at most 16 sections. This is intended to prevent a massive amount of data to be generated and transmitted to plugins when there are lots of sections on the route and most of the upcoming sections are clear.
Bugfix
  Various bugs related to SetSignal were fixed that would prevent notable routes from working correctly.

### v1.2.9.20 (2010-11-28)

Plugins
  Backward-incompatible changes have been made to the .NET train plugin API: The SetSignal function is now called for every section that changes aspect until the first red one. All aspects are sent to the plugin in an array instead of making individual calls for each section. SetSignal is also called when changing section boundaries regardless of whether aspects changed.

### v1.2.9.15 (2010-11-14)

Plugins
  Backward-incompatible changes have been made to the .NET train plugin API: The SetSignal function is now called for both a change in the current section as well as in the upcoming section. The distance to the section can be examined to distinguish between the two. Furthermore, the const speed system is now represented as a simple boolean instead of an enumeration.
Simulation
  Minor fine-tuning to get the AI to behave better when approaching a red signal that is just behind a station stop.

### v1.2.9.11 (2010-11-07)

Simulation
  The AI now stops for buffers. Previously, it would happily drive into them and cause the train to derail.
Developing trains
  The extensions.cfg now allows to reverse cars in the consist. This makes it unnecessary to create reversed copies of car objects.
Bugfix
  Accessing the data.PluginFolder property in the Load call of .NET plugins would result in a crash.

### v1.2.9.10 (2010-10-31)

Plugins
  Backward-incompatible changes have been made to the .NET train plugin API in order to implement a new handle-based sound model with ability to change pitch and volume of sounds, to allow to query the distance to and speed of the preceding train, and to complement the built-in AI with plugin-specific driving mechanisms. See the documentation for details.

### v1.2.9.2 (2010-10-07)

Bugfix
  When negative numbers were used for radii in the Cylinder command in CSV/B3D files in order to omit the respective cap, the wrong cap would be omitted.
Bugfix
  When the properties.Sound array was set to a null reference in the Load call in .NET plugins, openBVE would crash with a System.NullReferenceException.

### v1.2.9.0 (2010-10-03)

Plugins
  Initial support for .NET assembly train plugins has been added. Train plugins can now be developed that run on all platforms. See the documentation for details. Also mind that during the development release, the API might change in backward-incompatible ways.

### v1.2.8.2 (2010-10-07)

Bugfix
  When negative numbers were used for radii in the Cylinder command in CSV/B3D files in order to omit the respective cap, the wrong cap would be omitted.

### v1.2.8.1 (2010-10-04)

Bugfix
  Removed an unintended debug message that showed up every once in a while.

### v1.2.8.0 (2010-10-03)

Renderer
  The renderer should now be a lot faster on most computers. This is due to the fact that all static opaque faces are now optimized using display lists, while all other faces continue to be rendered in immediate mode.
Interface
  In the list of problems, critical errors are now shown first, followed by normal errors and warnings.
Bugfix
  Plugins could receive beacon types -3 or -2 when passing Track.Pattern commands. This was unintentional. Plugins no longer receive data from this command.

### v1.2.7.4 (2010-08-29)

Bugfix
  The renderer could crash when trying to render a string with characters outside the BMP (i.e. codepoints between 0x10000 and 0x10FFFF).

### v1.2.7.3 (2010-08-07)

Bugfix
  The AI should adapt its preferred driving speed depending on earliness or lateness at stations since v1.2.7.2, but did not incorporate its timetable offset (for non-player trains). This would lead to the preceding train to drive slower after every station stop until it matched the player's train's timetable.
Bugfix
  The AI would not usually decelerate if overspeeding, but just cruise at its current (over)speed.

### v1.2.7.2 (2010-07-31)

Simulation
  The AI has been fine-tuned. It should stop gentler at stations now, being less prone to overrun than before. Also, it dynamically adapts its preferred driving speed depending on whether it is early or late at stations. Finally, the AI now stops in front of the preceding train, useful for tram scenarios or other scenarios where multiple trains are allowed to be within the same block.
Simulation
  When using the Jump to Station command, any previously derailed train will now be on the tracks again, not just the player's train.
Interface
  In the main menu, the train selection box now shows the Browse tab on startup, not the Route default tab.
Interface
  The lamps for the built-in ATS and ATC were previously not shown for panel.animated cabs. This was intentional in order to move cab developers to show the lamps as part of the cab itself. However, for consistency reasons, the lamps are now shown for all cabs, regardless of the underlying file format.
Bugfix
  Negative track positions in CSV/RW routes could crash the game (and RouteViewer, too). They are now reported as errors.

### v1.2.7.0 (2010-07-11)

Simulation
  Superelevation is now simulated. In previous versions, the train would simply roll around its z-axis, while now, one wheel is actually elevated on banked curves.
Simulation
  The cant interpolation algorithm has been rewritten to make use of monotone cubic interpolation. This makes the train tilt on banked curves much more smoothly than before, when linear interpolation was used.
Simulation
  The simulation of track inaccuracy has been overhauled. Aside from the previous horizontal and vertical offsets, cant is now irregular as well and lets the train shake to the sides. If the level of track accuracy changes from one block to the next, interpolation is now used, where before, the axles could make sudden jumps.
Simulation
  The fly-by cameras now focus on the front car of the nearest train. Previously, the fly-by cameras would only focus on the player's train and shifted focus from the front car to the rear car on approach.
Simulation
  When using the Jump to Station command, a previously derailed player's train will now be on the tracks again.
Simulation
  Custom timetables that can be set up by route developers are now available in all trains. Previously, only trains where custom timetables were explicitly enabled could show them. For trains which explicitly support custom timetables, the timetables are shown as part of the 3D scenery (just as before), while for non-supported trains, they are shown as part of the UI overlay (and then can be scrolled using Shift+Up and Shift+Down just as with the default timetables).
Interface
  Keys and joystick buttons now employ key repeat, meaning that holding down a key or button will trigger the associated event multiple times until the key or button is released again. The default delay and repetition intervals are 500 and 100 milliseconds, respectively, and can be customized in the options.cfg file.
Developing objects
  Animated objects can now show the timetable as set up by CSV/RW routes. See the TextureOverride parameter in the documentation for the [Object] section. This allows to integrate the custom timetable as part of the 3D cab geometry.
Developing routes
  The new Options.CantBehavior command allows to change the way cant works in the Track.Curve command. The default behavior is that cant is unsigned, i.e. the sign is ignored and the superelevation is always towards the curve center, and that cant cannot be applied on straight track. The new behavior is that cant is signed, i.e. inward banking or outward banking can explicitly be set up, and that cant can also be applied on straight track.
Developing routes
  The Train.Timetable command now accepts files that are relative to the Object folder in addition to the previous model of interpreting files relative to the current train's folder.
Developing trains
  The [DigitalGauge] section in the panel2.cfg was previously confined to angles that did not span across the 6 o'clock position, i.e. angles between -180 and 180 degrees. This limitation has been overcome now due to a rewrite of the code that creates the individual triangles that make up the LED square.
Sound
  When a train starts from standstill or when the camera is moved in sound range of a train, all run sounds of all cars start playing simultaneously. This leads to an undesired echo effect. To counteract this effect, track positions are assigned at which the run sounds start playing from the start, thus asynchronizing the car run sounds again. This is not done regularly, but only when considered necessary.
Bugfix
  Cant was ignored on curves if the CantInMillimeters parameter in Track.Curve was a single character in length.
Bugfix
  Some animated objects would stop being updated if jumping backward in time, for example when using the Jump to Station command.
Bugfix
  Animated objects were not updated at the beginning of the simulation until RefreshRate seconds had passed.
Translations
  Added translations for the Catalan (ca-ES) and Romanian (ro-RO) languages.

### v1.2.6.3 (2010-05-02)

Bugfix
  The first Track.Brightness command in CSV/RW routes did not work correctly unless it was Track.Brightness(255). This got unnoticed earlier because many routes employ multiple Track.Brightness commands before the starting location.
Bugfix
  Selecting a route or train in the main menu could lead to a race condition that caused the user-selected encoding to switch back to UTF-8.

### v1.2.6.1 (2010-04-06)

Simulation
  Changed the light arrangement of the built-in six aspect Japanese signal to match real installations more closely.
Bugfix
  The Options.UnitOfSpeed command in CSV/RW routes could produce erroneous results in some cases.

### v1.2.6.0 (2010-03-14)

Simulation
  Passengers boarding the train now increase the mass of the train. This means that the performance of the train can slightly vary depending on how crowded the train is. The degree of crowdedness is set primarily by route developers (Track.Sta command), but is also slightly randomized.
Simulation
  The cruising and braking behavior of the AI has been revised.
Simulation
  The passenger discomfort algorithm has been rewritten. It is now a little less sensitive and better incorporates the degree of crowdedness in the train. Consequently, it does not cause discomfort messages any longer when the train has no passengers on board.
Developing routes
  A new option for the departure time has been added to the Track.Sta and Track.Station commands. It allows to set a departure time for terminal stations, intended to allow an otherwise forced red signal to change to green eventually.
Bugfix
  When entering the Jump to Station menu, just any station could be highlighted by default. Now, it is always the next station (as originally intended).
Bugfix
  The player train's AI would previously depart from a terminal station if the terminal station required the train to not open any doors (e.g. a siding).

### v1.2.5.2 (2010-02-16)

Simulation
  Made Interior (look ahead) the default view mode for 3D cabs.

### v1.2.5.1 (2010-02-14)

Bugfix
  When zooming out of a 2D cab with camera restriction enabled, the camera could get stuck, preventing the user from zooming in again or moving around.
Bugfix
  On trains with the automatic air brake, the brake.wav or BP Decomp sounds would play when moving from SRV to LAP or from LAP to REL when they should actually play when moving from REL/LAP to SRV/EMG.
Bugfix
  Passengers should get stuck between the doors every once in a while - a feature that was introduced in v1.0.5. This feature never worked at all until now.

### v1.2.5.0 (2010-01-24)

Sound
  The distance attenuation model has been rewritten. Additionally, the dependencies on ALUT and SDL_MIXER have been removed.
Sound
  The list of supported sound formats has changed. Most importantly, all sample rates and numbers of channels are supported now. Aside from PCM, Microsoft ADPCM is supported now, too.
Simulation
  The player's train now derails when passing the end of the track.
Interface
  In the Jump to Station menu, the current station is now the one highlighted by default. Previously, it was always the first station in the list.
Interface
  The main menu is now smaller by default in order to accomodate smaller screens or larger fonts. If resized, the size of the main menu is preserved between sessions now.

### v1.2.3.3 (2010-01-03)

Performance
  During the time the in-game loading screen is showing, time is fast-forwarded until the player train's arrival time. Up to now, animated objects of trains (panel, exterior) were always updated during this time, leading to excessive loading times for very detailed animated objects. Updating those objects is now skipped during the fast-forward stage, leading to faster loading times in those cases.
Bugfix
  In some cases, the Track.Rail and Track.RailStart commands in CSV/RW routes could reset the rail type to 0 even when this was not intended.
Bugfix
  In some cases, CSV/RW route errors were reported without giving the file name of the route, making debugging the error potentially harder, especially if $Include statements were used.

### v1.2.3.2 (2009-12-13)

Bugfix
  There was a chance that the program could crash with a NaN in multiple places. While such a crash has not been observed yet, it's probably best to fix this anyway.

### v1.2.3.1 (2009-11-29)

Simulation
  Point-based turns are now smoothened out by using short curve segments instead of discontinuous straight track pieces.
Miscellaneous
  Removed the dependency on specific versions of the Tao.OpenAL, Tao.OpenGL and Tao.SDL libraries, which could cause problems in recent Linux distributions.
Miscellaneous
  Due to an apparent glitch in Mono, the loading screen would not show the Save Report button on Mac OS X. An attempt has been made to circumvent this glitch.

### v1.2.3.0 (2009-11-15)

Simulation
  Minor improvements to the AI. In particular, the AI should not get stuck in front of a stop point on upward gradients any longer.
Developing routes
  The $Include command has been added which allows to include other files, optionally one of a set of files with a certain probability.
Developing routes
  Added the Train.Velocity command in CSV/RW routes. The command defines the upper speed limit the AI-controlled trains may travel at.
Miscellaneous
  Comments in RW routes now span the whole line instead of up to the beginning of the next command.
Miscellaneous
  Due to an apparent glitch in Mono, the loading screen would not show the Ignore button on Mac OS X. An attempt has been made to circumvent this glitch.

### v1.2.2.0 (2009-09-20)

Developing objects
  Added the hasPlugin, acceleration and accelerationMotor variables (among others) for use in animated objects.
Developing trains
  Added the acc and motor subjects for use in the panel2.cfg.
Developing routes
  Lengths using the colon notation in CSV/RW routes are now well-defined when omitting parameters.
Interface
  Some controls in the main menu used a custom background color but a system-specific foreground color, rendering text unreadable with some color schemes.
Bugfix
  The delta variable returned incorrect results in animated objects whenever RefreshRate was set to a non-zero value.
Bugfix
  Lengths entered without the colon notation were not processed correctly when using Options.UnitOfLength in CSV/RW routes.
Bugfix
  Gray fog could show on routes which did not use fog, but only if the viewing distance was below 600 meters.

### v1.2.1.3 (2009-08-31)

Bugfix
  Value-based sections could crash the program with an Index is outside the bounds of the array message.

### v1.2.1.2 (2009-08-30)

Simulation
  For trains which do not have exterior objects for their cars, a default object is now shown. In contrast to previous versions, this feature is now not only the default behavior, but also, it cannot be deactivated through conventional means.
Simulation
  When resetting the camera view for the fly-by modes, the camera is now placed about 5 seconds ahead of the train for more interesting approaches.
Developing trains
  The [Breaker] section is now available in the sound.cfg for compatibility reasons.
Developing routes
  The train reference for animated world objects is now the nearest train instead of the player's train. This should allow simulating crossings, station doors, etc. with any train.
Bugfix
  When mouse grab was activated and the user toggled to or from fullscreen mode, the viewing angle could abruptly change to arbitrary angles.
Bugfix
  When starting the simulation or when using the Jump to feature, the train's first car's front axle lined up with the stopping post instead of the very front of the train.

### v1.2.1.1 (2009-08-17)

Bugfix
  Plugins were reported the wrong initialization mode of the safety system via the Initialize call. This could lead to some trains not working correctly.

### v1.2.0.3 (2009-08-04)

Bugfix
  The AI could crash the game with an The index is outside of the bounds of the array error whenever it encountered a station without defined station stops.
Bugfix
  The route parser did not process the Route.Change command correctly and could mix up the values. An attempt was made to correct this. (late note: did not work)

### v1.2.0.1 (2009-07-29)

Bugfix
  The object optimizer could create incorrect geometry when trying to optimize for TRIANGLE_STRIP structures.

### v1.2.0.0 (2009-07-26)

Interface
  Adjusted the sensitivity of the mouse, the speed of exterior rotation, as well as the forces employed by the body/head model.
Developing routes
  All of the Track.Beacon, Track.Tr and Track.Relay commands now have X, Y, Yaw, Pitch and Roll arguments.
Bugfix
  Increased the robustness of the route parser to avoid crashes on invalid arguments (e.g. Track.Back, Track.Announce and Track.Doppler).

## 1.1 series (development)

### v1.1.4.0 (2009-07-18)

Simulation
  The pseudo-ORP functionality of the built-in ATC safety system has been removed for better, mostly visual compatibility with older routes.
Simulation
  The AI now waits at the stopping point of a station if there is a red signal about 150m ahead.
Bugfix
  The new damping algorithm would hang whenever the natural frequency was zero (which is not very meaningful, but is encountered with some add-ons).
Bugfix
  Option.ObjectVisibility 1 did not work correctly with static objects embedded in ANIMATED object files.

### v1.1.3.1 (2009-07-14)

Bugfix
  Using the Track.Turn command could mess up the track geometry with v1.1.3.0 when other rails were in use at that track position.
Bugfix
  Static objects embedded in ANIMATED object files (i.e. no functions used) did not take auxillary transformations, such as yaw, pitch and roll, which are employed by various route commands, into account.

### v1.1.3.0 (2009-07-13)

Developing routes
  The Route.RunInterval command (CSV) now allows to create any amount of preceding or following trains. The Route.RunInterval and Track.PreTrain commands can now also be used in conjunction, which was not previously possible.
Developing routes
  The .Load suffix is now optional in Train.Timetable(TimetableIndex).Day.Load and Train.Timetable(TimetableIndex).Night.Load in CSV routes.
Developing objects
  The ANIMATED object format has been given an [Include] section that just allows to easier integrate other objects without animating them, including other ANIMATED objects.
Renderer
  The precision of the z-buffer has been increased from 16 bit to 24 bit. In addition, 3D cabs and scenery now use different settings for the near and far clipping planes so that scenery has more precision in the distance, while 3D cabs have more precision near the camera.
Miscellaneous
  The Win32-specific timers have been removed as they could yield erratic results on some multi-core processors. The general SDL timer is now used instead.
Bugfix
  The opening and closing times of the doors were supposed to derive directly from their respective sounds. As the sound manager was not yet initialized at the time the duration of the sounds were queried, the internal default values for opening and closing times were used all the time.
Bugfix
  An error in the geometric model employed by the CSV/RW route parser has been detected, and attempts have been made to correct the problem. Presently, it has not been fully evaluated if the problem has indeed been fixed.

### v1.1.2.0 (2009-07-08)

Developing objects/panels
  The mappings of the built-in safety systems in pluginState (animated objects) and atsi (panel2.cfg) has been changed from 0-14 to 256-271. While existing trains using the built-in safety systems are unlikely to use these variables, trains using Windows-only DLL plugins on Linux/Mac will use the built-in safety systems instead. As the variables 0-14 might already be in use by panels/objects (e.g. lamps/wipers/drops) in this case, these elements might be fed non-compatible data. The mapping 256-271 is safe because it cannot be used by existing plugins. This is a non-backward-compatible change since v1.1.0.0.
Interface
  Scolling with the mouse has been made more smooth.
Bugfix
  Aspects in Track.Section were previously sorted into ascending order, which should not have happened for index-based section behavior. This prevented the safety systems of some trains from working properly on some routes. Example: IIYAMA 2060.
Bugfix
  Lighting was still not correct on 2D cabs since v1.1.1.0, which is definately fixed now.

### v1.1.1.0 (2009-07-03)

Simulation
  In 3D cabs, the driver's head and body are now simulated to parts. This experimental feature reacts to changes in acceleration and to inertia in curves, resulting in pitch and roll of the body or head. Manual camera rotation also makes use of the body/head model.
Simulation
  In 3D cabs, an experimental look-ahead view has been introduced. This essentially focuses the view on an upcoming part of the track, thus following curves and pitch changes. This view can be switched on or off by pressing F1 (CAMERA_INTERIOR) multiple times.
Renderer
  If no background image is present, a black background is shown. This also works with fog now, which did not show on the background previously in such a case.
Interface
  Toggling the mouse grab on or off has been changed from the left mouse button to the right mouse button. This allows to give the window focus with the left mouse button without affecting the mouse grab status, which is more intuitive (at least on Windows).
Bugfix
  The damping algorithm has been completely rewritten. Previously, it was unstable with low frame rates, and also did not handle constantly changing angles well. The new algorithm synchronizes updating the target angle with its own natural frequency, and also uses a mathematically correct implementation for calculating derivatives.
Bugfix
  The ambient and diffuse lighting conditions in 3D cabs were supposed to be independent from the environmental conditions. However, this lighting model was accidentally applied on the 2D cabs in v1.1.0.0 instead of on the 3D cabs, resulting in wrong lighting conditions for both.

### v1.1.0.0 (2009-06-28)

Simulation
  Fully 3D cabs are now available (panel.animated) along with mouse-supported camera rotation. Left-click at any time to enable or disable mouse grab.
Options
  Vertical synchronization (vsync) can now be enabled or disabled in the Options menu.
Developing objects
  A series of new variables has been introduced to the functions of animated objects. The documentation has all changes highlighted.
Developing panels
  The atsi subject now also has a meaning with the built-in safety systems. The documentation has all changes highlighted.
Bugfix
  Objects mirrored by the Track.Pole command could appear inside-out if GL_QUAD_STRIP structures were generated by the object optimizer. Example: DemoRoute1.

## 1.0 series (stable)

### v1.0.7.3 (2009-07-08)

Bugfix
  Objects mirrored by the Track.Pole command could appear inside-out if GL_QUAD_STRIP structures were generated by the object optimizer. Example: DemoRoute1.
Bugfix
  Aspects in Track.Section were previously sorted into ascending order, which should not have happened for index-based section behavior. This prevented the safety systems of some trains from working properly on some routes. Example: IIYAMA 2060.
Internationalization
  Added translation for the Korean language.

### v1.0.7.2 (2009-06-17)

Bugfix
  Some objects did not load correctly since 1.0.7.0 and would produce a message about an unexpected error.

### v1.0.7.1 (2009-06-14)

Renderer
  Rendering is now noticably faster.
Renderer
  Minor improvements to reduce artifacts related to depth sorting.
Renderer
  Circumvented an OpenGL glitch that could cause erratic polygons to appear whenever fullscreen was toggled on or off.
Interface
  For users who experience long loading times, hidden options have been introduced to reduce or disable the object optimization process.
Simulation
  Fully rewritten ATS-P results in more realistic brake curves.
Developing routes
  New options for ArrivalTime in the Track.Sta and Track.Station commands make it possible for the player to stop at a station, but not the preceding train, or vise versa.
Developing objects
  New arguments for AddVertex (CSV) and Vertex (B3D) allow for providing custom normals.
Developing objects
  Added the Shear and ShearAll commands to allow for shear mapping (skewing).

### v1.0.6.2 (2009-05-28)

Bugfix
  Fog did not show the correct color in some cases since 1.0.6.0. The interpolation to a no-fog condition has been made smoother and consistent. The route parser reports fog-related ill-conditions now.
Bugfix
  The in-game clock did not wrap after 23:59:59 and showed 24:00:00 instead of the desired 00:00:00, for example.

### v1.0.6.0 (2009-05-24)

Renderer
  The quality of the Smooth transparency mode has been radically improved at the expence of some performance.
Simulation
  The AI now takes a bit less time trying to stop accurately at stations.
Simulation
  ATC now works in 200 meter long blocks instead of calculating a brake curve to the preceding train continuously. Previously, the continuous update could create too frequent changes of the allowed speed, leading to a lot of successive ding sounds.
Interface
  A command to accelerate time has been added, MISC_TIMEFACTOR, which defaults to CTRL+J.
Interface
  A command to mute/resume sound has been added, MISC_MUTE, which defaults to CTRL+M.
Interface
  Non-Windows users now get a warning message in a train's description box if that train uses a Windows-only safety system plugin.
Routes
  If the $Chr/$Rnd/$Sub preprocessor creates a leading semicolon in an expression, that expression is now considered a comment. Previously, stripping away comments was only done before the preprocessor, which made it impossible to dynamically create comments.
Bugfix
  The cab and exterior objects were placed incorrectly if the car had an asymmetric axle setup.
Bugfix
  Fog on the background image now produces a consistent look regardless of the viewing distance. Previously, the background image could look differently depending on the viewing distance.

### v1.0.5.0 (2009-05-03)

Simulation
  Passenger-related door lock is now simulated. This is based on the PassengerRatio parameter in the Track.Sta command, and is more probable to occur on crowded trains.
Simulation
  The AI has been fine-tuned. It makes use of cruising, holding speed by selecting a suitable power notch, and can react to wheel slip by restricting use of certain power notches.
Internationalization
  Added translation for the Czech language.
Developing routes
  Added new options to the Doors parameter in the Track.Sta command.
Bugfix
  The route parser could previously accept , and ; as an argument separator for either CSV or RW formats, even though only one of these characters is used by either format. This could seldom lead to parsing problems, but is corrected now anyway.
Bugfix
  The background image was not correctly aligned vertically if the Texture.Background(BackgroundTextureIndex).Aspect option was set to 1 (keep aspect ratio) in route files.
Bugfix
  Version 1.0.4.0 introduced the peculiar behavior of rolling the external view at startup, which is corrected now.

### v1.0.4.0 (2009-04-26)

Developing routes
  In route files, commands from namespaces other than Track are now processed first, then the track position is reset to 0, then commands from the Track namespace are processed. This is to increase compatibility with routes which use track positions before using commands from the Track namespace.
Developing routes
  Rephrased all error messages in the CSV/RW route parser to match the terminology of the documentation.
Bugfix
  All parsers now validate file names, as otherwise, the program could crash when any format referenced a file name which included invalid characters.

### v1.0.3.0 (2009-04-12)

Interface
  The default camera locations of the exterior and track/fly-by modes are now at the top-left of the rear of first car again.
Interface
  Resetting the camera view in the fly-by modes reflects the current speed of the train by placing the camera further away from the train the higher the speed is.
Developing trains
  For compatibility reasons, the exponent e in the acceleration section of train.dat versions 1.22 is now clipped at 4 after converting to a 2.0 exponent.
Interface
  Updated the URLs used inside the program to point to the new homepage. This has also been done for Train Editor.
Internationalization
  Renamed the en-UK language to en-GB. The reason is simply that GB stands for United Kingdom, while UK stands for Ukraine.
Miscellaneous
  Renamed OpenBve64.exe to OpenBveAllCpu.exe, which is now compiled against any CPU instead of AMD x64.
Miscellaneous
  Some minor Linux-specific things to increase portability.

### v1.0.2.0 (2009-04-05)

Developing trains
  If a train does not explicitly specify the operating pressure of the brake pipe, it is now assumed to be 490 kPa if applicable.
Bugfix
  PNG and GIF textures are now synchronously loaded in order to prevent them from ending up in the alpha rendering list where applicable (which is more expensive to render and can cause visual glitches if too heavily populated due to the use of depth sorting).
Bugfix
  The RefreshRate parameter in animated objects was not applied if the animated object was used as a train exterior object.
Bugfix
  Beacons which appeared before the starting position were not triggered, causing some trains to operate incorrectly on some routes.

### v1.0.1.0 (2009-03-29)

Interface
  The stop indicator previously showed in Expert mode, which was not intended. It is now displayed only in Arcade and Normal modes. Additionally, the debug output is now unavailable in Expert mode.
Interface
  Camera settings are now preserved when changing interior, exterior and track views. The zoom is reset though when switching the views.
Interface
  The scrolling speed inside the cab has been made slightly slower.
Interface
  Warning messages are now shown again in openBVE. However, both warning and error messages can now be invidually disabled in the Options menu. Developers are strictly encouraged to leave these settings enabled, though.
Interface
  A default set of points of interests is now included for every station if the route does not define any points of interest itself.
Developing routes
  Track positions in RW and CSV routes now require to adhere to the Strict number format. Previously, they were interpreted as Loose, which could mess up the route too much if an invalid statement was interpreted as a track position.
Miscellaneous
  Some compatibility graphics (needles) have been resaved as 8-bit per channel RGBA in order to appear correctly on Linux.
Miscellaneous
  The code that applied transparency to the SDL window icon is now only executed on Windows. It could previously crash the program on Linux.
Miscellaneous
  The sound subsystem can now be deactivated in the options.cfg.
Miscellaneous
  OpenBve64.exe is now available. It can be used on 64-bit systems that also provide 64-bit versions of the dependencies.
Bugfix
  Entering the Jump to station menu previously crashed the program with an Index was outside the bounds of the array when the route did not have any stations. The menu entry is not displayed any longer.
Bugfix
  In animated objects, the leftdoorstarget and rightdoorstarget variables could previously crash the program with an Index was outside the bounds of the array message, or these variables simply didn't work correctly.
Bugfix
  In animated objects, texture clamping was disabled and could lead to visual artifacts at the edges of some textures.

### v1.0.0.0 (2009-03-23)

Interface
  Messages about missing support for Windows-only DLL plugins on Linux/Mac are now only generated if the train actually uses a plugin.
Interface
  If an exception (runtime error) occurs inside a plugin, openBVE now crashes with the name of the plugin being reported.
Bugfix
  The train toppled and derailed to the wrong side when driving backward.