To summarize: The generic mobile client connects over the LAN to the desktop app. The desktop app sends it a “surface” SWF which contains all of the graphics and logic for the interaction (allowing the host to dictate the experience). The mobile client then sends accelerometer data to the host, which interprets the data, and sends back commands to update the client UI. The host communicates with a Phidgets motor controller, which controls the speed of the cars. And yes, it supports multiple connections (limited to 2 in this case because that’s how many cars I have).