--- On Tue, 15/7/08, Anders Gidenstam wrote: > The idea is simple: > 1. Only include properties that have changed since the last > packet was sent. > 2. To cope with thee potential for message loss include the > changed property in the next 4 packets too. > 3. To ensure that newcomers have the full state include all > MP enabled properties (i.e. a packet like those FG sends > today) every 25 packets.
This sounds like a very good idea, and one that will help scalability. Obviously message loss is a concern for both the full-state message as well as the change messages. Does anyone know much about UDP packet loss scenarios? I know that it isn't a reliable protocol, but I don't know whether typically a proportion of packets are lost throughout a messages, or whether UDP connections are lost completely for a period of time. I think I'd be tempted to let the full-state message handle any lost change-packets, rather than repeating change messages. For properties that change regularly, losing a single change packet isn't much of an issue as another change packet is likely to be generated shortly. For more rarely changing properties, the full-state message is probably close enough time-wise. > 1. At the receiver side a multiplay entry can be created > without having all its MP enabled properties in place (since it first > received packet might be a small one). This could cause animations to > misbehave until the full state has been received (after at most 2.5 sec > in the case of no packet loss). > Worse, Nasal code activated (e.g. from the model file > or from listeners) could try to read an so far uninitialized MP > property and crash. This happened with my Submarine Scout but was > easy to solve by a small change to the Nasal code. > Alternatively, one could delay making the multiplayer > entry visible in the property tree until the full state has been > received (which begs the question how to detect that the full state has been > received, though). I'd suggest labelling the messages so the full state message is identifiable, and simply have the receiver ignore any change packets for an entity until a full-state message is received. From memory, I think we can do this in a backwards compatible way - as I recall the MP system ignore messages it doesn't understand. -Stuart __________________________________________________________ Not happy with your email address?. Get the one you really want - millions of new email addresses available now at Yahoo! http://uk.docs.yahoo.com/ymail/new.html ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel