Skip to content

Commit 1942638

Browse files
committedAug 7, 2019
Optimize usage of TOSERVER_GOTBLOCKS packet
1 parent 4d7f296 commit 1942638

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed
 

Diff for: ‎src/client/client.cpp

+17-9
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,7 @@ void Client::step(float dtime)
475475
*/
476476
{
477477
int num_processed_meshes = 0;
478+
std::vector<v3s16> blocks_to_ack;
478479
while (!m_mesh_update_thread.m_queue_out.empty())
479480
{
480481
num_processed_meshes++;
@@ -513,14 +514,18 @@ void Client::step(float dtime)
513514
m_minimap->addBlock(r.p, minimap_mapblock);
514515

515516
if (r.ack_block_to_server) {
516-
/*
517-
Acknowledge block
518-
[0] u8 count
519-
[1] v3s16 pos_0
520-
*/
521-
sendGotBlocks(r.p);
517+
if (blocks_to_ack.size() == 255) {
518+
sendGotBlocks(blocks_to_ack);
519+
blocks_to_ack.clear();
520+
}
521+
522+
blocks_to_ack.emplace_back(r.p);
522523
}
523524
}
525+
if (blocks_to_ack.size() > 0) {
526+
// Acknowledge block(s)
527+
sendGotBlocks(blocks_to_ack);
528+
}
524529

525530
if (num_processed_meshes > 0)
526531
g_profiler->graphAdd("num_processed_meshes", num_processed_meshes);
@@ -1069,10 +1074,13 @@ void Client::sendDeletedBlocks(std::vector<v3s16> &blocks)
10691074
Send(&pkt);
10701075
}
10711076

1072-
void Client::sendGotBlocks(v3s16 block)
1077+
void Client::sendGotBlocks(const std::vector<v3s16> &blocks)
10731078
{
1074-
NetworkPacket pkt(TOSERVER_GOTBLOCKS, 1 + 6);
1075-
pkt << (u8) 1 << block;
1079+
NetworkPacket pkt(TOSERVER_GOTBLOCKS, 1 + 6 * blocks.size());
1080+
pkt << (u8) blocks.size();
1081+
for (const v3s16 &block : blocks)
1082+
pkt << block;
1083+
10761084
Send(&pkt);
10771085
}
10781086

Diff for: ‎src/client/client.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
465465
void promptConfirmRegistration(AuthMechanism chosen_auth_mechanism);
466466
void startAuth(AuthMechanism chosen_auth_mechanism);
467467
void sendDeletedBlocks(std::vector<v3s16> &blocks);
468-
void sendGotBlocks(v3s16 block);
468+
void sendGotBlocks(const std::vector<v3s16> &blocks);
469469
void sendRemovedSounds(std::vector<s32> &soundList);
470470

471471
// Helper function

0 commit comments

Comments
 (0)