I asked because you might want to move your character to another servelet. For example, if your friend is playing on servelet B and you want to play with him, then you would have to make sure that you’re also on servelet B, right? Would there be a way to disconnect and reconnect to a particular servelet?
Well, I don’t see the point of moving to another servelet. The servelets are there to comunicate with a specific number of players.
So this is how the CUMULUS works:
-
Controller:
The controller keeps the game data centralized. So it keeps 2 dicts: Clouds and Drops -
Clouds:
The Cloud or servelet is a subprocess that will server all the clients in that cloud. The key is the port the Cloud uses. Clients in the same server may not see each other. The element determining if a client sees anther is if they share the same Drop. -
Drops:
The Drop or level is generated by dividing the player position by the level size (1000 or level max length). From a cloud, the client will get the data from players having the same level. These are all gathered in the Drops ,with the level as a key(XYZ):(client ID, delta, alpha, state, target, inventory]).
So if a player wants to join a friend in a specific spot, he just needs to get there! Normally, I don’t wish to have parallel spaces. Each server is just a group of users. If the system is well designed, it should be able to handle a few thousands users in a level.
An example of that are space wars:
If you start a war, you will need carriers. Each carrier must be handled by 8 clients. The ships inside are kept as inventory items as well as the pilots.
Once a user breaks free from the ship, he starts broadcasting to everyone in the level. That’s the grouping setup. If users fly in formation, only the captain’s position needs to be copied. The other pilots will have a formation x status and the captain’s ID as the target. In the other clients, the ships will automatically follow the ship in formation.
If you need more info, just ask.
is there any way to “cloud” the server onto the clients pc’s?
or @ least have them as pre-processing nodes?
So data from bob goes to bill, bill rolls in his data and passes it to server?
Well, the clouds, can’t work without the data in the controller, nor can there be other clients around without the drops.
If you need a client to calculate a part of the universe, you’ll need to host that part yourself, and send the data to the clients from there.
The stuff you ask is more suited to a peer-to-peer setup, where the clients are also servers. However, deciding which peer will host is an issue as well, since having them all hosting will cause too many conflits and excess data transfer!