mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-11 17:51:04 +00:00
Server: Calculate maximal total block sends dynamically (#6393)
The block sends per client is 1/2 when reaching the maximal player count.
This commit is contained in:
parent
1105a14bcc
commit
745a90dc84
6 changed files with 13 additions and 17 deletions
|
@ -2181,7 +2181,7 @@ void Server::SendBlocks(float dtime)
|
|||
|
||||
std::vector<PrioritySortedBlockTransfer> queue;
|
||||
|
||||
s32 total_sending = 0;
|
||||
u32 total_sending = 0;
|
||||
|
||||
{
|
||||
ScopeProfiler sp2(g_profiler, "Server: selecting blocks for sending");
|
||||
|
@ -2195,7 +2195,7 @@ void Server::SendBlocks(float dtime)
|
|||
if (!client)
|
||||
continue;
|
||||
|
||||
total_sending += client->SendingCount();
|
||||
total_sending += client->getSendingCount();
|
||||
client->GetNextBlocks(m_env,m_emerge, dtime, queue);
|
||||
}
|
||||
m_clients.unlock();
|
||||
|
@ -2207,11 +2207,13 @@ void Server::SendBlocks(float dtime)
|
|||
std::sort(queue.begin(), queue.end());
|
||||
|
||||
m_clients.lock();
|
||||
s32 max_blocks_to_send =
|
||||
g_settings->getS32("max_simultaneous_block_sends_server_total");
|
||||
|
||||
// Maximal total count calculation
|
||||
// The per-client block sends is halved with the maximal online users
|
||||
u32 max_blocks_to_send = (m_env->getPlayerCount() + g_settings->getU32("max_users")) *
|
||||
g_settings->getU32("max_simultaneous_block_sends_per_client") / 4 + 1;
|
||||
|
||||
for (const PrioritySortedBlockTransfer &block_to_send : queue) {
|
||||
//TODO: Calculate limit dynamically
|
||||
if (total_sending >= max_blocks_to_send)
|
||||
break;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue