Skip to content

Broadcast chunks through packet channels #938

@TestingPlant

Description

@TestingPlant

We should broadcast chunks and chunk deltas through packet channels. This will fix a few issues:

  • Chunk deltas are currently broadcast to everyone, including people who have the chunk out of render distance
  • send_full_loaded_chunks is currently very expensive, especially when many players are joining at the same time
  • Will fix Crossing a chunk boundary causes clientside lag #936

To implement this, the should:

  • Create an entity for each chunk. Entity ids are currently used to uniquely identify channels. The code will need to handle subscribe packets and send chunk deltas through the appropriate channels
  • Send channel position updates to get the proxy to recalculate subscribers

The proxy should:

  • Add some leniency on when players get unsubscribed from channels. For example, a player might need to meet the unsubscribe criteria for 5 consecutive seconds to be unsubscribed. This means that a player that repeatedly walks across a chunk boundary won't be sent chunk packets
  • Cache the previous subscribe packets and, when the proxy requests subscribe packets from the server, the server can reply that the subscribe packets have not been changed. This will reduce network utilization between the server and proxy

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions