|
|
  
  
  
  
  
  
|
|||
FeaturesThis page is intended to outline the features of openBVE and to compare them with mackoy's BVE.QualityThis section covers the visual quality of the renderer.TrackThis section covers the internals of the track.TrainThis section covers the internals of the train.SignalsThis section presents the default Japanese signals.AudioThis section presents the internal audio model.World coordinatesIn BVE tracks are laid out in track coordinates, that is objects are always placed relative to existing rails, where the rail the player drives on can be instructed to curve, slope and the like. Internally in openBVE, everything is based on world coordinates. That means that with a suitable 3D editor, individual objects could be arbitrarily placed in a large 3D world. BVE does not provide interfaces to access this level of world coordinates, but openBVE will eventually offer such abilities without needing elaborate mechanisms to convert the world data that a 3D editor provides first into the complex track coordinates, just for the game to convert it back into world coordinates.Everything is an objectIn BVE routes you can create things like walls, dikes, poles, freeobjs and the like, but in openBVE none of them actually exist. There is one unified object type that is freely placed in world coordinates. That means that a parser which reads the route file needs to manually convert all the objects into the internal format employed by openBVE. This keeps openBVE a simple and lightweight program in its core graphics engine, because none of the nuisances of the route format need to be taken into account once the game is running.There are no blocksBVE features blocks of 25m at which objects can be placed. It is impossible to curve a rail after 20m, then after 10m etc. BVE always employs its block structure. Presumably, the internals of BVE don't allow it in a different way. openBVE does not know anything about blocks. Each object can be freely placed in the 3D world. openBVE employs an extremely efficient mechanism to tell at any point which objects needs to be introduced into the scene and which can be disposed of as you pass them.As for the track, that is not the visible part, but the information needed to make the train follow the visible part, it is basically a list of instructions. For example at 10m make a curve, at 23m increase the pitch, etc. To follow the track, this list is simply traversed, with all parts having precalculated world coordinates, so at runtime only minor processing is required to convert a track coordinate into world coordinates. Yet again, there are no blocks. For route developers, this also means that they can curve, pitch and the like at any position. However, in order to be compatible with existing BVE routes, this feature cannot be currently made available without breaking compatibility with existing BVE material. Extensions to the route format could be made and an openBVE route format will follow at some day to expose the functionality. Developing the specifications should be community-coordinated. External view
Animated objectsopenBVE will feature various sorts of animated objects, ranging from cycling through a list of objects for key-frame animation, rotating objects, pendulums, moving objects, clocks and much more. These can be used to create simple things from swingsets at the backyard of a house to opening and closing railway crossings as the train approaches, or whatever the imagination allows for.Driving the route backwardInternally, a viewing distance to the front and also to the back is maintained. These are changed at runtime depending on the orientation of the camera. If you look forward, you get the full viewing distance to the front, e.g. 1000m, and 0m backward. As you turn around, these values are modified accordingly to show only what is necessary to be shown.This effectively enables a full 3D view at all the times. In conjunction with the external view and the fact that each car of a train can be simulated individually, the driver can not only drive backward while looking backward in the external view, it is also possible for the driver to switch the cockpit to another car, possibly even with a different cab and different sounds. Event modelA list of events sorted by track coordinates is internally maintained. Whenever such a point-based event is passed by the train or camera, the event will fire if appropriate.Internally, everything that can be will be provided via this event model, ranging from change of the background image, making announcements, displaying marker images, even stations and stops, etc. It is an extensible system that could also be used to script custom events if the necessity arises. |
||||