Members - Reputation: 193
Posted 11 May 2012 - 04:34 AM
An old exam had the question what differences and advantages of short-circuit relays vs two-way relays in game networking. And on one power point slide during the course I also saw the mentioning of short-circuit relays and something about they being faster. Considering the subject I guess it has to do with massages but where? Is it during routing, is it something I control when building a server/client or peer solution? etc...
I'm itching with curiosity so if anyone knows what it is I'd love to found out.
Members - Reputation: 2409
Posted 11 May 2012 - 05:49 AM
Two-way means that all data is sent to remote server without understanding context.
Short-circuit means that some data may be sent to either some local server or directly to other peers, such as those on same LAN.
Short-circuit design would be old Skype, where some users could opt to become super nodes and where communication is done either as peer-to-peer or over a super node.
In practice, each authoritative networked node adds considerable complexity, especially in unreliable or untrusted environment. Added complexity of such systems is typically not worth the trade-offs considering strict latency requirements, which cannot be provided by ad-hoc hosts.
Another form of short-circuit evaluation however is regularly done - inside the client itself. Rather than being true dumb terminal (ssh/telnet), client hides latency by optimistically executing actions before receiving confirmation (avatar moves before server confirming valid destination).
This approach solves the reliability and complexity issues by not introducing an independent node, but by running inside same simulation loop, eliminating reliability problems.
In practice, moving parts add exponential complexity to the system. The more different types of servers there are, the more physical boxes there are, the more different architectures there are, the worse things will be to manage and more failure modes will need to be handled. Two parts are mandatory - client and main server. Adding a third proxy or even peer-to-peer makes things considerably more complicated.