TorqueNet

All Torque projects are organized by default as a client-server topology (yes, even single player games!). There are several reasons for this design decision, the most important of which lies with the concept of having a single authoritative owner of all simulation information. This gives the developer the ability to send information only to the clients that are important at a particular time to the player--which means that the ability of players to "hack the client" and gain advantages within your project is limited.

Since the server is the authoritative data owner, only the server is allowed to make direct changes to simulation objects. This means that players cannot directly manipulate game changing information--they are only given a minimal amount of information needed to properly observe the simulation from their player object's perspective, and have no mechanism for directly accessing the authoritative data on the server: the server maintains control of the simulation, and in effect the client simply replicates a subset of the simulation appropriate from their current position.

Ghost Manager

The Ghost Manager provides two key functions: the "ghosting" of objects from one host to another, and the transferring of state information between the original object and its ghost. A ghost is a copy of an object persisted and transmitted to a remote host. An object may only have one ghost per Ghost Manager (and thus per remote host), but may be ghosted by several Ghost managers at once (to different clients, for example). Ghosts are created using a form of guaranteed delivery also used to support partial state updates between an object and its ghost. State data is considered volatile and transferred using a "Most Recent State" algorithm.

Connection Manager

The Connection layer provides transmission of packets between host machines and is divided into two modules, a platform packet module and the Connection manager. The platform packet module provides basic connectionless unreliable packet delivery, currently implemented using standard UDP sockets. The Connection manager provides a virtual connection between two hosts and while it does not provide delivery guarantees, it does provide packet delivery status notifications.