diff options
| author | metamuffin <metamuffin@disroot.org> | 2025-12-18 22:49:15 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2025-12-18 22:49:18 +0100 |
| commit | cf3d5d44166e7214700b73d657aa10018167ae0c (patch) | |
| tree | 9b74ed9e719b44bc8f8d312cdf4bb83651b20983 /server/src/server.rs | |
| parent | 6832af5ee35b9d16668e1d34f191715f3755679f (diff) | |
| download | hurrycurry-cf3d5d44166e7214700b73d657aa10018167ae0c.tar hurrycurry-cf3d5d44166e7214700b73d657aa10018167ae0c.tar.bz2 hurrycurry-cf3d5d44166e7214700b73d657aa10018167ae0c.tar.zst | |
only send movement packets if changes; bots send less inputs
Diffstat (limited to 'server/src/server.rs')
| -rw-r--r-- | server/src/server.rs | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/server/src/server.rs b/server/src/server.rs index b925a577..be5fee3f 100644 --- a/server/src/server.rs +++ b/server/src/server.rs @@ -528,7 +528,7 @@ impl Server { let diff = pos - pd.movement.position; pd.movement.position += diff.clamp_length_max(dt.as_secs_f32()); if diff.length() > 1. { - replies.push(PacketC::MovementSync { player }); + pd.movement_must_sync = true; } } } @@ -698,13 +698,21 @@ impl Server { }); for (&pid, player) in &mut self.game.players { - self.packet_out.push_back(PacketC::Movement { - player: pid, - pos: player.movement.position, - dir: player.movement.input_direction, - boost: player.movement.boosting, - rot: player.movement.rotation, - }); + if player.movement_input_changed || player.movement_must_sync { + player.movement_input_changed = false; + self.packet_out.push_back(PacketC::Movement { + player: pid, + pos: player.movement.position, + dir: player.movement.input_direction, + boost: player.movement.boosting, + rot: player.movement.rotation, + }); + if player.movement_must_sync { + player.movement_must_sync = false; + self.packet_out + .push_back(PacketC::MovementSync { player: pid }); + } + } } let mut players_auto_release = Vec::new(); |