Advertisement

Networking protocol via UDP for an MMO game

Started by November 07, 2016 07:08 PM
16 comments, last by hplus0603 8 years ago

Raknet has that

Raknet is specific implementation, not sure they have their protocol specs (please correct me if I'm wrong). Also, AFAIK, Raknet is not yet supported anymore.


We already explained above why there is no requirement for a standard protocol, because interoperability is of near-zero interest.

The only significant benefit to a game developer from any sort of standard for networking is to be able to leverage existing code. Raknet is (one example of) that existing code. Enet is another. The systems built into Unity and Unreal are yet more. Then there are things like Photon (for Unity), etc. Off-the-shelf solutions exist, but they aren't standard, and never will be.

If it's fit for fast complex games, it will fit for slow games anyway.


A system where you have to work around or switch off a ton of unnecessary features is not a good fit.
I think your confusion comes from a flawed assumption.
You assume that, if there is a problem that needs solving more than once, a standard protocol will serve the community best.
(By community I include everyone involved, including those that want to make money making software.)

This is not always the case. Standard protocols are great when different pieces need to interoperate.
We have standards for bolts and nuts, so that manufacturer of part A can specify "use a M6 hex head carriage bolt of length 40 mm" and manufacturer of part B can slot that part in, without them necessarily knowing about each other ahead of time.
We have standards for web browsers, so that manufacturer of web server A can specify "I support HTTP version 2.0" and manufacturer of web browser B can connect to that server without knowing about A at all.

Open standards/protocols arise from a need to interoperate without bilateral agreements. They don't just arise from a need to solve a particular problem; that's a necessary but not sufficient precondition.
Compare to numerical library code. There exists no standard protocol or library interface for numerical code, even though there exist open source numerical libraries.
There are a number of libraries, like BLAS, and IMSL, and Intel MKL, and others. They don't use the same API, because there is no value to vendors to being able to swap one out for the other.

When it comes to games, there is zero pressure for the open standard, because it's simply not the case that two different manufacturers need to interact with each other without knowing about each other.
Understanding this distinction is crucial to making sure that you solve the right kinds of problems! It's one of those things that distinguish a very experienced software engineer from someone who can just write code.
enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement