8 months
ago -
Rocket
-
Direct link
We wrote our own networking solution and targeted the absolute gold standard for throughput.
This means we make a “byte array”, so all data that needs to be synchronised is written into this in order. It’s then compressed, and cut into packets, sent.
When it is received, it is then unpacked and read in order.
However the reason this method isn’t popular in modern video games is it is very brittle and complex to work with. This means it is very easy for data to be misread, or if a bug happens during reading/writing then the whole array is junk data.
What this means is that the same tiny bug can cause tremendous issues, completely desync the entire game, or cause very little noticable impact.
The good news is the issues themselves, once found, are extremely easy to fix. It’s usually something like writing as an integer and reading as a byte.
This means we make a “byte array”, so all data that needs to be synchronised is written into this in order. It’s then compressed, and cut into packets, sent.
When it is received, it is then unpacked and read in order.
However the reason this method isn’t popular in modern video games is it is very brittle and complex to work with. This means it is very easy for data to be misread, or if a bug happens during reading/writing then the whole array is junk data.
What this means is that the same tiny bug can cause tremendous issues, completely desync the entire game, or cause very little noticable impact.
The good news is the issues themselves, once found, are extremely easy to fix. It’s usually something like writing as an integer and reading as a byte.