Products
The DIS (Distributed Interactive Simulation) networking protocol is a standard for simulations to communicate with each other. The standard defines a set of data messages and how and when to send those messages over a network. A typical use of the DIS protocol is for multiple simulations to share entity state information such as position, velocity, and appearance.
In a military application, this may be a pilot flying an F-16 simulator against a MiG generated by a SAF (semi-automated force) simulation such as BSI's Modern Air Combat Environment. The F-16 simulator receives entity updates of the MiGs from the SAF for the pilot to engage while the SAF receives entity updates of the F-16 so the MiGs can counter as appropriate.
Rather than send updates for every entity each frame during the simulation, the DIS protocol calls for the use of dead reckoning algorithms to limit network traffic. Each simulation should only send an updated entity state when its entity breaks a predefined threshold. Additionally, each simulation is responsible for continuing the movement (dead reckoning) of entities it has received from the network between the times it receives updates. Software that lacks a well-implemented dead reckoning library normally ends up performing poorly in a distributed simulation environment, with entities "jumping" around, especially during tactical maneuvers.
The DIS Dead Reckon Library is a software library that can be linked from a host application to process dead reckoning and threshold breaking of DIS entity state packets. Its purpose is to inform the host when to send one of its internal entity packets over the network as well as continuously update the position of external entity packets from other simulations on the network.
It was written for Windows platforms in C++ without requiring Common Language Runtime (.NET) support. It has been integrated into Total Immersion Software's RealWorld C++ simulation engine and BSI's Modern Air Combat Environment .NET application.
Dead Reckoning Algorithms
The library supports the following dead reckoning algorithms (from the IEEE 1278.1-1995 standard) for entity state packets, and will also dead reckon orientation rates for articulated parts:
To minimize modifications to the host application, the interface of the library was designed to be a layer between where the host builds the DIS network PDU (packet data unit) and where the host sends the PDU over the network. To further simplify the interface, the input and output structures of the library are the same as the published DIS structures that are communicated over the network.
For internal packets that are to be sent over the network, the host application simply builds the PDU as normal then sends it to the dead reckon library instead of over the network. The library will report back an updated PDU to be sent over the network when a threshold has been broken.
For external packets that are received from the network, the host application passes those PDUs to the dead reckon library rather than processing them directly. The library will then continuously report back to the host updated states of those entities so the host is always using the best possible data.
Thresholds
The dead reckon library will report to the host that an internal entity state needs to be sent over the network if one of the following key values is changed or if it breaks one of the following thresholds: Appearance, Dead Reckoning Algorithm, Entity Position, Entity Orientation, Entity Articulated Parts Orientation, Heartbeat, Time-Out
Removal / Time-Out
The dead reckon library knows when to stop processing an entity based on the appearance bit in the PDU, and it will automatically time out both internal and external packets and modify the last packet's appearance bit to deactivate if appropriate.
Please contact us for more information, or if you're interested in a trial version of the Dead Reckon Library. The trial version limits the library to a maximum of 10 internal and external entities and includes the library binary, header file, and documentation.