Alex Schultz wrote: > On Wed, 26 Nov 2008 21:22:41 -0800 > Mark Wedel <[EMAIL PROTECTED]> wrote: > >> Multiple process cons: > <snip> >> - Would need client (and protocol) updates in addition to server >> updates. > > I don't have much comment right on the other points, they make sense. > However I strongly disagree on this one point. No protocol/client > changes would really be needed at all unless it was distributed over > separate physical servers (which I don't think is necessary to > support). Like I said in another email, it's not hard for one process > to "hand-off" TCP-IP sockets to another process while keeping it open.
The issue is related to the connection, the issue is related to objects and tagging. For example, process A has used tags 1-1000. Some items in the players inventory also uses those tags. Player moves from whatever map to what process A is now using. Those items in the players inventory needs to be retagged. Now in fairness, this could be done by deleting everything in players inventory and then re-sending it (and would be easiest), but that isn't especially bandwidth friendly. A more narrow case would be to delete and re-send those objects. But in the simplest case, all objects in the players inventory would get re-tagged (unique tags for process A) - process A would most similarly act as if a new player logged in, as that is effectively what has happened, so all those get_object calls would almost certainly not have the same tags as before. Now you could come up with some mechanism like 'get_object_but_prefer_tag..()' - the problem is that right now, other than searching through every object, you don't know if that tag is in use. And doing that search for a few hundred objects might be slow. And you still have to cover the case where items do get retagged. And you probably don't want that to be slow - you don't want process A to slow down whenever a new player joins it, since the most likely scenario for this is player returning to the various towns. So in fairness, you don't need protocol changes, and instead replace it with this con: - Very bandwidth intensive when player changes maps (have to re-send entire inventory) There are also other solutions - you could have some central process responsible for handing out unique tags to all objects on all the servers, but I have a feeling the performance hit (due to needing to do IPC on that) probably wouldn't be tolerable. _______________________________________________ crossfire mailing list crossfire@metalforge.org http://mailman.metalforge.org/mailman/listinfo/crossfire