I’ve gotten some questions about Shared Cockpit over the past months, and I believe that a response is well overdue at this point. I plan to cover the topic in several posts, focussing on the aspects of shared cockpit that apply to 3rd party add-on developers.
First, let’s describe what we (on the Flight Sim team) mean by “shared cockpit”, also known as “shared aircraft” (this is the term that Bruce Williams uses in his book Microsoft Fligth Simulator as a Training Aid (2006).
The shared cockpit feature is one way of using the multiplayer system. Typically, each user in a multiplayer session flies in his or her own aircraft; in “Shared Cockpit” two (and not more than two) users can fly the same aircraft simultaneously. Imagine that one might act as a pilot and the other as a passenger. Or perhaps the two are acting as pilot and copilot.
At all times one of the users is the “pilot flying”, who may, at their discretion, turn over control to the other user by hitting “Shift+T” (for Transfer control). (The other user may not ‘steal’ control). The “pilot flying’ controls basic aircraft controls such as the yoke, throttle, and rudder pedals; either pilot can control avionics systems, gear, and other secondary control systems.
The users must have separate machines running separate installations of FSX (or FSX+Acceleration Expansion Pack), but as long as they are connected by a network, they can be anywhere in the world. Want to get some training from your experienced Uncle Bob but he lives on the other side of the world? No problem.
For more information on how to actually use the feature, check out the Learning Center in FSX. Go to the Index and click on “Shared aircraft” under the “Multiplayer” section.
That’s all the time I have for now, but stay tuned for information and sample code for keeping the gauges you develop in sync in the shared cockpit scenario! (We’ll start with an overview of the model that we use to keep the two users’ aircraft in sync; from then we’ll move onto the callback functions that were added to the GAUGE_HEADER_FS1000 macro, and the two API functions “process_shared_event_out()” and “is_master()” and when you should use them).