Please use Roslyn Analyzer (inside AnalyzerBinary) to prevent errors when assigning SyncVars.
Only SyncVar.Value can be changed (never do x = new SyncVar())
Features
.NET Standard 2.1 and pure C# (but with some IL magic)
Can be used with Unity (2021.2 and later), Godot, Monogame or just pure .net
Can be used for creation any multiplayer game (2d,3d,4d,...)
Works with Unity IL2CPP
Epic speed
Lag compensation
Serialization of custom types (like strings,lists,arrays,jsons,etc)
Synchronized variables (with optional notifications on change)
Client-side prediction
Client-side spawn prediction (for projectiles)
Remote procedure calls (RPC) with compile-time checks
Client input system
Basic hierarchy system (childs, parent)
Controllers and Pawns concept
Interpolation system
Delta-compressed state synchronization and input
LZ4 compression of initial world state
Also works as game logic engine
LiteNetLib as default transport, but you can implement any other transport