We want to enable application developers to reproduce this environment in order to test any application-specific communication between the machines. The necessary high-performance network hardware is not available on most development workstations, and so must be simulated. This is done by running multiple, independent copies of an application on a single machine, and communicating between the copies using shared memory in place of networking. The basic architecture of the CAVE library makes the implementation and use of the simulator straightforward and transparent to application code. Following this approach, the simulator has been implemented as part of the overall CAVE library, and is invoked via a simple set of run-time options.
Separate processes handle each of the major aspects of an application.
One process takes care of reading the tracking and input devices, one or more processes perform the application's computations, and one or more processes, depending on the number of displays, perform the rendering. The different processes communicate through shared memory. The specific types of hardware that it should read are defined at run-time in a configuration file. Under this system, the keyboard and mouse controls of the simulator are treated as just another selectable tracking device that returns data in the same format as the others. Hence, an application can switch between the simulated tracking and the real tracking of the VR system without any coding changes.