Skip to content
/ qtengine Public

Unity Networking Library in C#

Notifications You must be signed in to change notification settings

bmjoy/qtengine

Repository files navigation

QTEngine


Unity Networking Library in C#

Features support:
[x] Multiple rooms using multiple server workers
[x] Custom components and client/server separated logic
[x] Easily synchronizable just by adding attributes
[x] Very low packet sizes (almost same as source objects) using protobuf-net allowing thousand of updates per second
[x] Authoritive due to the low ammount of data controlled by the client
[-] Web interface to interact with the server
[x] Easy to use database using Redis
[-] Uploading/Downloading assets from the server
[-] Caching assets on a local disk
[-] Custom ticking system for scheduling events
[-] SSL Encryption

Syncing progress:
[x] Syncing primitives (int, float, bool, string, ...)
[x] Syncing arrays
[x] Syncing dictionaries
[x] Syncing spawning objects
[x] Syncing despawning objects
[x] Syncing position/rotation (with linear interpolation)
[-] Syncing scale
[-] Syncing client mouse buttons (configurable buttons)
[x] Syncing client input (configurable keys)
[x] Syncing client axis (configurable axises)
[x] Syncing client VR trackers position
[x] Syncing client VR trackers rotation
[x] Syncing client VR input
[-] Syncing client VR specifications
[-] Syncing client hardware specifications
[x] Syncing function calls
[x] Syncing function calls with arguments
[x] Asynchronous messare responses
[x] Syncing object ownership
[x] Syncing object active state
[-] Syncing client logs

Syncing components:
[x] SyncGameobject - synchronizes position and rotation of object
[x] SyncAnimation - synchronizes animation parameters of object
[-] SyncAudio - synchronizes volume, play states of object
[-] SyncVideo - synchronizes volume, play states of object

Master server workflow:
> Master server sets up a TCP server on port 8111
> Master server spawns server workers

Server worker workflow:
> Server worker sets up a TCP server on port 8112++
> Server worker connects to a master server through port 8111
> Server worker sends WorkerReadyMessage and recieves RoomInfoMessage in exchange
> Server worker sends WorkerInfoMessage to server

Client workflow:
> Client connects to a master server through port 8111
> Client sends RequestRoomsMessage and recieves RoomsMessage in exchange
> Client connects to a specific server worker through port specified in RoomInfo
> Client sends ClientInfoMessage and RequestSyncMessage and recieves updates to catch up with current state of the scene
> Client sends ReadyMessage to start recieving updates