fes - ryzom/ryzomcore GitHub Wiki


title: Frontend Service description: published: true date: 2023-03-01T05:23:31.740Z tags: editor: markdown dateCreated: 2023-02-16T20:13:05.027Z

TODO {.is-danger}

The FES (Frontend Service) is a vital component of the Ryzom game server that manages the transmission of game data between the server and clients using the User Datagram Protocol (UDP) or QUIC (Quick UDP Internet Connections). The FES protocol optimizes data transmission through compressed updates of nearby entity positions and impulse messages constructed using the CActionImpulsion class, providing reliable and efficient data transmission.

In addition to data transmission, the FES manages client connections, detects and handles client disconnections, stalled clients, and synchronizes clients. It provides statistics on the send and receive rates of impulse messages to monitor system performance.

It also includes a mechanism for detecting and rejecting invalid messages using a THackingDesc structure, which records the number of invalid messages received, the user ID (if known), and the reasons for the invalidity. It manages the allocation and freeing of client IDs through the CClientEntityIdTranslator class.

Data is received from clients through a datagram socket and places the received data into a write queue that can be accessed by other threads in a thread-safe manner. A receive task runs in a separate thread to continuously read data from the datagram socket into a FIFO queue. On each server tick this queue is swapped with the read queue, after which the messages are actually processed.

⚠️ **GitHub.com Fallback** ⚠️