Imagine a multiplayer whiteboard where several people can draw at the same time. To keep it simple, lets say there's a single object on the whiteboard which can be moved or deleted by any user. There is no notion of user-owned objects (i.e. it's important that any user be allowed to manipulate any object... it's a free-for-all whiteboard)
My problem is this... if two users try to do a different action on the object at the same time, i.e. one deletes it the other moves it, what happens?
Right now- in just letting the messages go through, it gets all out of whack.
One idea was to have a serverside control which resolves who has control of the object, and nothing is allowed to happen clientside until that conflict is resolved. Conflict resolution can be based on a first-come, first-serve basis.
Even though this can happen very fast, the small delay (~50-300ms) is unacceptable since movement must be instantaneous on the client side. For example, instead of manipulating objects, think of a pen. For there to be a delay till they've already started drawing... not good!
Another idea was to have a "request control" button, which asks the serverside extension for control.... same idea as before, but now they aren't frustrated by the initial delay of pen drawing. This is also not so good though since they must hit that button till they can do anything, and this whiteboard is really meant for kids...
Any other solutions? :)