Over the years, the Flight Simulator core code has seen significant restructuring, and in the process the legacy Flight Simulator drop-in module system that for many years was used to programmatically retrieve data and send events has become defunct. This might have been a serious problem for our developer community because of the large number of third-party Flight Simulator data access tools that use the legacy module system. Our priority was to ensure that the strong third-party community continues to thrive, and so we needed a solution that provides similar functionality. That solution is SimConnect, a flexible, powerful, and robust client-server communications protocol allowing asynchronous access to data and events internal to Flight Simulator X.
SimConnect is based on a client-server architecture that incorporates a Winsock communications protocol to allow third-party client applications to communicate with the internal Flight Simulator server.
The mode of communication is considered asynchronous, which provides some advantages over the use of synchronous communications, for instance communication in applications such as FSUIPC.
Asynchronous communications:
- Are safe for use in multi-processor or multi-threaded applications
- Use processing cycles more efficiently
- Provide greater server application stability
While latency in closed-loop systems provides one potential drawback to this method, this can be overcome through proper code architecture of client applications. Please take care when developing add-ons that rely on a closed-loop architecture, such as autopilots or AI controllers.
There will be two supported methods of interfacing with the Flight Simulator server:
- Out-of-process (preferred): .EXEs
- In-process: .DLLs
A publish/subscribe method will be the basis of establishing communication. Essentially, the client will request a data packet or send an event, and the server will process that request at a time commensurate with the priority level of the request. This could be at visual frame time, simulation frame time, or any desired lower frequency. The process is, however, considered asynchronous since it is never handed over to the client application.
When using the in-process mechanism, process time is actually handed over to the client application when processing a request, but the same asynchronous behavior of the publish/subscribe model is employed.
The data, events, and system calls available via the SimConnect interface will support the vast majority of data and events that exist inside Flight Simulator. In addition, we will support periodic updates of the SimConnect interface after the release of the base product, and a formal request mechanism will be established to allow 3rd parties to indicate what additional SimConnect features they would like to see available in subsequent releases. Please check back on FSInsder.com for updates.