Multicasting

Hi

Does SGS use multicasting at all under the covers?

If it does, then I can just multicast the game world differences each cycle, create a hash of it client side and send it back, any client that is out of sync will have a different hash, and the server and the client can sort it out between them.

If it doesn’t, then I need to send a change list of changes since the client last acked using UDP.

Using 200 game world objects, if each is a user, then my server will have to send 1.4 MB/s, if all the objects move. Using multicast it would have to send 7212 bytes.

The effect on the client is 0 in this case as each one is still getting 7212 bytes.

It would be possible to use multicast for channel broadcasts prehaps?

I confess that I have not looked fully in to the technical issues with multicasting. J2SE seems to support the sockets needed, but I have no idea of the routing issues.

Endolf

it looks as though you need to get a multicast address assigned from ICANN or someone, so for home projects this is probably not anything to consider. Unless I’m mistaken, which is highly possible.

I seem to remember that mulitcast:

a) Isn’t reliable? - its UDP (which I guess might be ok depending on the game)
b) Doesn’t travel across most routers, so won’t make it across the internet (which I guess isn’t ok)

Kev

Okay Im not sure why you want multi-cast, but I can answer your question, sort of.
IN THE BACK END MACHINE ROOM: The sgs is currently using LRMP (lightweight reliable multicast) for communication between slices. We have our own destributed channel system that we built ontop of that and everyone uses that for back-end communication.

On the client, a “multicast” packet is sent to your contact point, the UserManager. It recognizes it as a request for multicast and hands it off to the router, The router both re-iterates it locally to the other slice-local members of the channel as well as using a back-end channel to send it to all the other routers.

LRMP actually gaurantees us both reliability and in-order transmission on thsoe back-end channels.

SO…

Transport from client to sever in teh TCIP user manage is via TCP and UDP, but thats pluggable and depends on the User Manager used.

Transport on the avbck end uses reliable multi-cast but thats an implementation detail.

Neither of these should in any way effect your code logic. Which gets me abck to my first point that I dont udnerstand the motivation for the question.

So I think youa re getting the same advantage you though yould get from multicast, anyway.

Only one packet goes over the line client->server. The server replicates it and sends it on to its proper destinations.

I believe the original poster wanted to save on bandwidth bills, by sending a single multicast packet out from his server, and then having the routers on the Internet fan out as necessary.

No, you don’t get that benefit from SGS. However, you don’t get that benefit from anything else, either, because Multicast is impossible to implement in an efficient and scalable way. (This has been pretty well documented) Singlecast, however, might be moderately useful to save bandwidth near a specific server, but that’s such a small savings (overall) on the Internet, that nobody’s bothered to make it happen.

Internetworking is, for all intents and purposes, point-to-point. Learn to love it.