RTYPE DOCUMENTATION
  • 🍜Welcome
    • R-THAAAAAAï
    • 💽Installation processes
  • 🎮How to play ?
  • 🧱Setup and install process
    • 🪟Windows
    • 🐧Linux
    • 🍎MacOS
  • 💻Development guidelines & how tos
    • ⚙️Configuration
    • 📡Network
      • RFC
    • ⁉️How to ... ?
    • 📕ECS MANUAL
      • Components
      • Sparse Array
      • Systems
      • Registry
      • Worlds
      • Examples
      • A word on singletons
    • 📒Development guidelines
  • 💭Miscellaneous
    • ❤️Credits
    • ⚖️License
Powered by GitBook
On this page
  • Introduction
  • How work the update of the game
  • Words and meanings:
  • Order of bytes:
  • Universal
  • Keep Alive Request
  • Keep Alive Response
  • Client to Hub Server
  • Connection
  • Request room information
  • Hub Server to Client
  • Connection
  • Room info
  • Hub to Room
  • Room check
  • Room to Hub
  • Room info
  • Client to Room
  • Connection
  • Client sends an input to the Room Server
  • Room to Client
  • Connection
  • Server updates on movement
  • Server on player health
  • Server on wave counter
  1. Development guidelines & how tos
  2. Network

RFC

R-THAAAAAAÏ network protocol documentation

Introduction

How work the update of the game

Every x ticks, all the game is resend to the client so that no roll back may cause a desync, else all the entities that have been updated are send. Packet types shouldn't represent where they come from, they should be universal.

Words and meanings:

EntityNetworkId -> 2 byte binary of the entity's ID
PosX -> 2 byte binary of the horizontal position
PosY -> 2 byte binary of the vertical position
Width -> 1 byte binary of the entity's width
Height -> 1 byte binary of the entity's height
TypeId -> 1 byte binary of the entity's type ID
VelocityX -> 1 byte binary of the horizontal velocity of entity
VelocityY -> 1 byte binary of the vertical velocity of entity
ClientName -> 4 bytes of chars that identify the player
OccupiedSlots -> 1 byte binary of the amount of clients already connected
Health -> 1 byte binary of the amount of health the player has

Order of bytes:

In order to stay consistant with the information that is received and sent, we have decided to follow this template for all packets.

<packet type>(<Health>)(<OccupiedSlots>)(<ClientName>)(<EntityNetworkId>)(<TypeId>)(<PosX><PosY>)(<Width><Height>)(<VelocityX><VelocityY>)

Universal

Keep Alive Request

Keep alive response request, asks the other side of the connection for a packet to ensure that it is still alive

    Packet type: 01000110 (70)

Keep Alive Response

Response to the KA request

    Packet type: 01000111 (71)

Client to Hub Server

In order for the client to connect to a room, they must first connect to the main server in order to get the current list of rooms.

Connection

Client connects to the hub

Packet type: 00000000 (0)

Request room information

Client refreshes server list

Packet type: 00111100 (60)

Hub Server to Client

Connection

Client connects to the lobby

Packet type: 01000000 (64)
    

Room info

Packet type: 10000001 (129)
    Port: 2 byte
    OccupiedSlots: 1 byte

Hub to Room

Hub connects to room for the first time

Packet type: 01000100 (68)

Room check

Packet type: 01111111 (127)

Room to Hub

Packet type: 10000010 (130)
    OccupiedSlots: 1 byte

Room info

Packet type: 00111101 (61)
    OccupiedSlots: 1 byte

Client to Room

Connection

Client connects to server for first time

Packet type: 00000000 (0)

Client sends an input to the Room Server

Moved player to position:

Packet type: 00000001 (1)
    PosX: 2 byte
    PosY: 2 byte

Client shot:

Packet type: 00000010 (2)

Client Charged Shot:

Packet type: 00000100 (4)

Room to Client

Connection

Server responds to client connecting for first time

Packet type: 00000000 (0)
    EntityNetworkId: 2 byte

Server updates on movement

Movement of Entity:

Packet type: 00001000 (8)
    EntityNetworkId: 2 byte
    TypeId: 1 byte
    PosX: 2 bytes
    PosY: 2 bytes
    Width: 1 byte
    Height: 1 byte
    VelocityX: 1 byte
    VelocityY: 1 byte

Server on player health

Health of player:

Packet type: 00100110 (38)
    NetworkID: 2 bytes
    Health: 1 byte

Server on wave counter

Wave:

Packet type: 00101000 (40)
    WaveCount: 1 byte
PreviousNetworkNextHow to ... ?

Last updated 2 years ago

💻
📡