Priest of Firepower

Role: Network & Gameplay Programmer

The objective of this project is to learn the internal structure of the networking layer in a video game. From the sockets, authentication to network models, synchronization models, object replication and object serialization. So, the Unity's netcode is NOT used in this project, but a custom one created from scratch.
Github

About the NETWORKING

Networking Features:

  • Authentication
  • Network Manager
  • Network Object
  • Network Behaviour
  • Replication manager
  • Replication Headers and Streams
  • Input Headers and Streams
  • Packet, encompasses both replication and inputs

Structure

The chosen structure for this 2D top down shooter is "State Synchronization" for the synchronization model, "Client-Server" for the network model, and "Binary Serialization" for the object serialization.

About my CONTRIBUTIONS

Object Replication

Network Objects over all clients should have the same Network Id. The spawning, as well the de-spawning, of an object in the server should be replicated in the clients.

Object Serialization

Network Behaviours allows itself to be serialized in binary format, the replication manager makes the serialized arrive at the same object in the destination machine. There is also the feature of Network Variable, allows for automatic serialization, but it is still WIP.

Network Object

Encompasses all the Network Behaviours of inside a Network Object, as well manages the transforms and the interpolations of these.

Network Behaviour

An extended monobehaviour but with added features like serialization, replication managing like spawn, de-spawn, replication streams, and input sending.

Networking of Enemies & UI

The behaviour of enemies in a shared and in sync state between all machines. The refactoring of single player UI into a networking UI capable of handling multiple player and multiple element affected by those players.

About the GAME

A demo made for the Online & Networks subject at the CITM-UPC. The objective of this project is to learn the internal structure of the networking layer in a video game. From the sockets, authentication to network models, synchronization models, object replication and object serialization. So, the Unity's netcode is NOT used in this project, but a custom one created from scratch.