Skip to content

Commit

Permalink
feat: Add LZ4 network compression
Browse files Browse the repository at this point in the history
  • Loading branch information
AudranTourneur committed Jan 25, 2025
1 parent c25481f commit 5719bb8
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 11 deletions.
3 changes: 1 addition & 2 deletions server/src/network/extensions.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
use bevy::prelude::*;
use bevy_renet::renet::{ClientId, DefaultChannel, RenetServer};

use crate::network::utils::format_bytes;
use shared::utils::format_bytes;

pub trait SendGameMessageExtension {
fn send_game_message(
Expand Down
1 change: 0 additions & 1 deletion server/src/network/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@ pub mod broadcast_world;
pub mod dispatcher;
pub mod extensions;
pub mod simulation;
pub mod utils;
24 changes: 16 additions & 8 deletions shared/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
use std::time::Duration;

use bevy::prelude::Resource;
use bevy::prelude::*;
use bevy_renet::renet::{ChannelConfig, ConnectionConfig, SendType};
use bincode::Options;

pub mod constants;
pub mod messages;
pub mod players;
pub mod utils;
pub mod world;

pub use constants::*;
use utils::format_bytes;

#[derive(Resource, Debug, Clone)]
pub struct GameFolderPaths {
Expand Down Expand Up @@ -62,16 +64,22 @@ pub fn get_shared_renet_config() -> ConnectionConfig {
}

pub fn game_message_to_payload<T: serde::Serialize>(message: T) -> Vec<u8> {
bincode::options().serialize(&message).unwrap()
// let payload = bincode::options().serialize(&message).unwrap();
// payload
// lz4::block::compress(&payload, None, false).unwrap()
let payload = bincode::options().serialize(&message).unwrap();
debug!(
"Original payload size: {}",
format_bytes(payload.len() as u64)
);
let output = lz4::block::compress(&payload, None, true).unwrap();
debug!(
"Compressed payload of size: {}",
format_bytes(output.len() as u64)
);
output
}

pub fn payload_to_game_message<T: serde::de::DeserializeOwned>(
payload: &[u8],
) -> Result<T, bincode::Error> {
// let decompressed_payload = lz4::block::decompress(payload, None).unwrap();
// bincode::options().deserialize(&decompressed_payload)
bincode::options().deserialize(payload)
let decompressed_payload = lz4::block::decompress(payload, None)?;
bincode::options().deserialize(&decompressed_payload)
}
File renamed without changes.

0 comments on commit 5719bb8

Please sign in to comment.