To help operate your Pawn you might want to provide some special input data from the clientside.
Client Input Properties
You can mark properties on a Pawn or Entity Component with the
Properties with this attribute are automatically serialized and sent to the server.
BuildInput() gets called clientside. The static
Input class can be used to grab raw input data and then use that data to set any properties with the
Every tick clients send a Command that contains the values constructed from BuildInput. This command then gets simulated in
Game.Simulate( Client ) for each client.
Within Simulate( Client ) the static Input class contains inputs specific to the currently simulated client, this allows you to run the same code on both the server and client for Prediction.
[ClientInput] property can also be a
ButtonState. This struct lets you treat an input as if it were a button, so that in Simulate you can get whether it was "pressed" or "released" or whether it is "down". This can make stuff like couch co-op easier.