Although games are implemented with a single synchronous discrete event simulator, we believe that the design of games similar in nature to Quake II can be just as suitably implemented with a number of event simulators running in parallel. Indeed, this parallel model describes the control that is exerted on game objects by asynchronous player clients.
Each object in our model has an associated think function, like in Quake II. The think function determines the actions to take during each iteration of the discrete event loop on a node. We assume that all nodes run a discrete event loop at roughly the same frequency (but each simulation is asynchronous). A node only executes the think functions of the primary objects in its local object store. Although think functions may modify both primaries and replicas, modifications to an object are serialized at the node maintaining the primary copy (though we leave it up to the application whether to perform interpolation or extrapolation when presenting replicas to clients).