Here is a summary of the changes since our last update, consisting of commit
In total, there were 45 non-merge commits.
The most notable updates include:
- DE Connector and DE Lobby are included in the nightly builds,
- space skybox is displayed beyond the map boundaries, replacing the gray color,
- shadows are rendered at a higher resolution,
- both master and SFX audio volumes are configurable,
- progress has been made on the multiplayer.
On the game listing screen, the “join” button is newly fully functional. The list of players who have joined is displayed on the multiplayer game screen. A “Ready” button has been added which marks a player as ready to start the game. Once all players are marked as ready, the game starts automatically. The synchronization for game initiation stages has also been implemented.
Up to now, all the Proof of Concept (PoC) networking and multiplayer menu functions have been implemented. The final, albeit complex, task left is to add the in-game event and state exchange functionality via DE network messages.
The networking layer has been optimized, the networking code slightly restructured, and support for semi-ordered data packages has been added.
The network protocol transfers data between clients – that is, individual players and DE Connector – using UDP. While UDP offers low latency, it is an unreliable protocol; individual datagrams may be lost or delivered out of sequence.
The DE network protocol encodes individual data messages with bincode and packages them into UDP datagrams for delivery to other clients.
The protocol offers an unordered and unreliable sending mode, which introduces minimal overhead and latency. This mode is ideal as the majority of game communication is not reliant on ordering or delivery guarantees.
Additionally, modes for reliable message delivery and reliable message delivery with ordering guarantees are available. These modes are somewhat less efficient because they necessitate package tracking and temporary data buffering. Nonetheless, these modes are vital for specific data exchanges among clients, such as the readiness staging before a game commences.