Also es ist definitiv möglich bei RakNet festzulegen an welche Clients/Gruppen ein Paket gesendet wird, aber RakNet kann ich dennoch nicht empfehlen (persönliches Empfinden). Begründung siehe
http://networklibsbenc.sf.net .
@chriss ich hoffe ich habe deine Fragen richtig verstanden, aber was du da beschreibst nennt sich bei vielen Libs "visibility" und ist integraler Bestandteil von vielen Libs (nach meiner Kenntnis gibt es sowas bei jeder "höheren" Lib). Bei syncsys ist es definitv möglich die "Sichtbarkeit" zu beeinflussen. Im Prinzip arbeitet syncsys auf Serverseite in 2 (bzw 3 wenn man den TCP Transport mitnutzt/rechnet) Ebenen:
1. Objekte (NetEntity)
2. Clientrepräsentation auf dem Server (SyncServerClient)
Die Sichtbarkeit wird bei syncsys per NetEntity::ClientNeedsUpdates(SyncServerClient*), welche man überladen kann, geregelt. Dabei kann man per 8 bit Flag genau definieren welche Daten vom Client empfangen werden soll. Welche Daten zu welchem Flag gehören entscheidet der Programmierer.
Entscheidender Unterschied von syncsys zu anderen libs ist, dass anders als z.B. RakNet nicht "pro Client und pro Änderung" die Daten serialisiert werden, sondern die Serialisierung nur einmal im Falle einer Änderung geschieht. Nach der Serialisierung werden die Daten bei allen SyncServerClients, welche die Daten "sehen" können, hinterlegt. Der Server wiederum updatet die SyncServerClients im einem einstellbaren Intervall, packt die angesammelten Updates für die Objekte zusammen und schickt es als ein "Paket" an den repräsentieren Client.
-Vorteil keine n Serialisierungen pro Änderung (n=Anzahl Clients, welche die Daten brauchen)
-Nachteil keine supergenaue Anpassung der Daten an den Client möglich
Hauptaspekt bei syncsys ist halt, dass es gut mit der Anzahl der Threads skaliert. "Sichtbarkeit" können eigentlich alle soweit ich weiß.