Sending client input unreliably

I’ve been doing some reading on networking lately and there seems to be a disagreement on whether or not to send user inputs unreliably vs reliably using an Authoritative server setup.

So my question is which is the best way to go about it?

I am toying with an authoritative server setup to do a 3rd person multiplayer game in real time (not turn based) and I am having great issue with client side prediction and error correction. I have been using the authoritative example from unity (using graduallyupdatestate.cs) but it seems no matter how I modify it I can’t get smooth movement from the client even connected to a server on the same computer.

I am now looking into adding client input prediction into the correction algorithm but I need to add the input into the buffered states to create a rewind and replay correction mechanic before I can make it happen.

So, unreliable client input constantly streamed vs reliable client input (sent via RPC).

Any thoughts or ideas?

It depends on the game, but the consensus for fast/real time games is always send input unreliably. Also your comparison doesn’t really make sense on the end “So, unreliable client input constantly streamed vs reliable client input (sent via RPC).”, it’s only a matter of delivery method (as in unreliable or not) and nothing else.

Common values to send are:

Interpolation timers
Client local time
Input Bit Mask (Variable bits for keys held down)
View Direction (Vector3, camera forward vector)
And a CRC bitmask of the resulting state that comes from applying these changes locally

Thanks for the input.

I’m still new to this so please forgive my lack of understanding. Networking is not a strong point of mine but I am working on it!