The York Driving Simulator is composed of various interconnected, albeit discrete programs that perform particular tasks. These include programs for administering users, configuring simulations, building simulations and processing and extracting data.
This modular design allows for seamless customization at almost any point in the York Driving Simulator driving simulator software package. This is accomplished through the use of static (lib) and dynamic (dll) library modules to assemble the programs that support the suite.
For example input for steering, throttle, brake and accessory buttons is managed using a dll that adheres to a common interface. It is this common interface that allows any gaming or analog or digital device to be instrumented as the input controller for the driving simulator by coding and compiling a new dll for that device.
Add on programs can be created for the user that link into the main programs of the York Driving Simulator, e.g., build, run and analyze programs. The user can exploit this functionality to develop custom on screen displays and custom hardware interfaces, which are modifiable by the user .
The modular structure also facilitates the replacement of certain components with external code. For example, vehicles are added to the map but implemented at run time in a separate dll. In this way, individual elements, such as vehicles, can be updated in isolation without affecting the entire software platform.
Maps and data files are scalable and in a component that is forward compatible with updates. New elements can be added while existing maps can still be read by the programs.
Lastly, graphical objects are stored and managed by their own dll. The dll adheres to a standard interface for loading and rendering. This allows new objects to be added to the system so long as a dll exists to read and render them.