Huge Netcode/Resynchcode changes #134

Merged
alufolie91 merged 89 commits from absolutehell into Saturn-Next 2024-09-15 11:45:35 +02:00
alufolie91 commented 2024-09-06 22:03:50 +02:00 (Migrated from github.com)

this adds multiple things regarding netcode/resynching code

  • Adds gamestate resending instead of karts old resynch code (which is barely functional) while retaining it
    this allows for actual being able to resynch when desyinching most of the time when both the Server and Client are running Saturn
    If a client does not run Saturn, the server will just fallback to vanilla resynching and also if the Client is Saturn but not the Server, same thing there
    Can be disabled by compiling with NOSATURNSYNCH=1

  • Adds "cv_allownewsaturnplayer" which allows the server to block connecting vanilla clients but not saturn clients
    Very useful for maps that have a habit of making connecting players desynch on join
    Its state will always match "cv_allownewplayer" unless its set to another value per CV_StealthSet externally (ex joinblock lua)
    This will be disabled when compiled with NOSATURNJOIN=1 (compiling with NOSATURNSYNCH also automatically disables it, since its pretty useless without it)

  • Adds some preparation for a Packettype to mark connecting clients as a Saturn client
    This might be useful in the future to synch extra things between Saturn server and Client
    For now this is completely disabled, since unused, though the Packet is reserved in packettype_t to prevent any potential future issues regarding packet order

Every toggle and configurable cvar is in the Server Options/Advanced Server Options

The way everything is Implemented should remain FULL compability between Saturn and Vanilla clients, regardless of Server or Client

this adds multiple things regarding netcode/resynching code - Adds gamestate resending instead of karts old resynch code (which is barely functional) while retaining it this allows for actual being able to resynch when desyinching most of the time when both the Server and Client are running Saturn If a client does not run Saturn, the server will just fallback to vanilla resynching and also if the Client is Saturn but not the Server, same thing there Can be disabled by compiling with NOSATURNSYNCH=1 - Adds "cv_allownewsaturnplayer" which allows the server to block connecting vanilla clients but not saturn clients Very useful for maps that have a habit of making connecting players desynch on join Its state will always match "cv_allownewplayer" unless its set to another value per CV_StealthSet externally (ex joinblock lua) This will be disabled when compiled with NOSATURNJOIN=1 (compiling with NOSATURNSYNCH also automatically disables it, since its pretty useless without it) - Adds some preparation for a Packettype to mark connecting clients as a Saturn client This might be useful in the future to synch extra things between Saturn server and Client For now this is completely disabled, since unused, though the Packet is reserved in packettype_t to prevent any potential future issues regarding packet order Every toggle and configurable cvar is in the Server Options/Advanced Server Options The way everything is Implemented should remain FULL compability between Saturn and Vanilla clients, regardless of Server or Client
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: saturn/SRB2Kart-Saturn#134