vengi/docs/Network.md

1.2 KiB

Network layer

The network layer is based on udp (enet) and shared between client and server.

It uses flatbuffers to generate C++ classes from fbs files that defines the protocol. See the generate_protocol cmake macro on how to integrate them.

Values that should be shared between client and server - for example our cooldown ids - are part of the protocol to always have them in sync with each other.

Connection

  • [client] connects
  • [connection established]
  • [client] sends UserConnect message
  • [server] UserConnectHandler
  • [server] performs auth
  • [auth failed] => [server] sends AuthFailed message
  • [auth successful] => [server] sends Seed [server] broadcasts to visible UserSpawn

CVar replication

There are cvars that are replicated to all players on a server. The flag for this is CV_REPLICATE. If the server changes a value of such a cvar, the change is automatically transfered to all connected clients. This cvar value is also initially for each new connection to ensure that the server and the client share the same values for these cvars.

User related cvars that are broadcasted to other players are marked with CV_BROADCAST. These values are also submitted to any other player that can see the entity.