May 2021
Posted 3 years ago
The previous network system was really there as a placeholder, just rushed through to get something working. When networking an Entity you'd have to wrap it in an EntityHandle, or when networking a List you'd have to use a special NetList class instead. You'd also sometimes have to manually call NetworkDirty functions to get it to actually network.

Worse than all that, the entire thing was networked as 4 big byte arrays and any time the network was dirty we'd rebuild them, manually writing the entire class again.

Why 4? Regular, Predicted, Local, Local Predicted. On re-doing this I realised that we don't need the predicted ones at all, because we're handling the prediction ourselves. So now we're down to just regular and local.

So I set out to fix all these problems and make it better defined and tighter. And now it feels good. There's a wiki page on how it works now.