make the client request a few more chunks to compensate for the delay in serialisation

This commit is contained in:
Marcel Märtens 2022-05-11 15:44:48 +02:00
parent 8e47d02f8d
commit efe284a673
2 changed files with 10 additions and 3 deletions

View File

@ -1662,6 +1662,7 @@ impl Client {
self.state.remove_chunk(key); self.state.remove_chunk(key);
} }
let mut current_tick_send_chunk_requests = 0;
// Request chunks from the server. // Request chunks from the server.
self.loaded_distance = ((view_distance * TerrainChunkSize::RECT_SIZE.x) as f32).powi(2); self.loaded_distance = ((view_distance * TerrainChunkSize::RECT_SIZE.x) as f32).powi(2);
// +1 so we can find a chunk that's outside the vd for better fog // +1 so we can find a chunk that's outside the vd for better fog
@ -1695,10 +1696,16 @@ impl Client {
for key in keys.iter() { for key in keys.iter() {
if self.state.terrain().get_key(*key).is_none() { if self.state.terrain().get_key(*key).is_none() {
if !skip_mode && !self.pending_chunks.contains_key(key) { if !skip_mode && !self.pending_chunks.contains_key(key) {
if self.pending_chunks.len() < 4 { const TOTAL_PENDING_CHUNKS_LIMIT: usize = 12;
const CURRENT_TICK_PENDING_CHUNKS_LIMIT: usize = 2;
if self.pending_chunks.len() < TOTAL_PENDING_CHUNKS_LIMIT
&& current_tick_send_chunk_requests
< CURRENT_TICK_PENDING_CHUNKS_LIMIT
{
self.send_msg_err(ClientGeneral::TerrainChunkRequest { self.send_msg_err(ClientGeneral::TerrainChunkRequest {
key: *key, key: *key,
})?; })?;
current_tick_send_chunk_requests += 1;
self.pending_chunks.insert(*key, Instant::now()); self.pending_chunks.insert(*key, Instant::now());
} else { } else {
skip_mode = true; skip_mode = true;

View File

@ -49,9 +49,9 @@ impl<'a> System<'a> for Sys {
chunk_sender, chunk_sender,
): Self::SystemData, ): Self::SystemData,
) { ) {
// Only operate once per second // Only operate twice per second
//TODO: move out of this system and now even spawn this. //TODO: move out of this system and now even spawn this.
if tick.0.rem_euclid(30) != 0 { if tick.0.rem_euclid(15) != 0 {
return; return;
} }