Google QUIC for Games?
I have a strong interest in the technologies used in games. In many ways I feel they represent the cutting edge of what we are able to do with computers. One of the trickier problems to solve is networking. Online games are highly sensitive to latency but also require reliability to ensure all players see the same world. Interpolation and other tricks are used to hide latency but it's effects are present in every online game I've played.
One of the topics that comes up when discussing networking in games is TCP versus UDP. I've read several articles and white papers on the subject and the argument really boils down to TCP is reliable and UDP is low latency. I've also used libraries that build on UDP to try to provide both such as ENet. My experience has been that you have to develop your security on top of those libraries in addition to your game specific networking code. These libraries do their job well enough but what if there was another option.
Enter Google's QUIC protocol. It's based on UDP which is nothing new but it was created as an experiment to improve TCP. In addition encryption is part of the protocol along with some other advanced features. Some of the features it provides are already part of TCP but support for them isn't widespread enough for developers to use. The design is being refined based on real world results which should mean that it will function better at scale.
Google's findings so far has been pretty positive so it is my intention to build a simple multiplayer game using the QUIC protocol to see how it performs. Their reference implementation is in C++ though so I intend to write my own C# implementation based on the design documents they've published. Once I have something semi-working I plan to post it to GitHub. It may take me some time to get a working prototype together because of the complexity of the QUIC protocol.