From 3c0590b2731cb114675a742f1d59ae32a18e3176 Mon Sep 17 00:00:00 2001 From: Michael Bradley Date: Mon, 2 Jun 2025 23:56:00 -0400 Subject: [PATCH 1/3] Set write timeout No read timeout because who knows if we'll ever receive a packet, but writes shouldn't last long --- src/net/socket.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/net/socket.rs b/src/net/socket.rs index a4deb2b..2301008 100644 --- a/src/net/socket.rs +++ b/src/net/socket.rs @@ -1,6 +1,7 @@ use std::{ io::Result, net::{Ipv6Addr, UdpSocket}, + time::Duration, }; use crossbeam_channel::unbounded; @@ -12,7 +13,7 @@ use super::{ fn configure_socket(socket: &UdpSocket) -> Result<()> { socket.set_read_timeout(None)?; - socket.set_write_timeout(None)?; + socket.set_write_timeout(Some(Duration::from_secs(1)))?; Ok(()) } From cb6487818631d215ee4ec6256c602a4fae6d0184 Mon Sep 17 00:00:00 2001 From: Michael Bradley Date: Mon, 2 Jun 2025 23:58:56 -0400 Subject: [PATCH 2/3] Rename `types` to `queues` I mean that name just sucked --- src/net/mod.rs | 2 +- src/net/plugin.rs | 2 +- src/net/{types.rs => queues.rs} | 0 src/net/socket.rs | 2 +- src/net/thread.rs | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename src/net/{types.rs => queues.rs} (100%) diff --git a/src/net/mod.rs b/src/net/mod.rs index 4529f49..8d484c7 100644 --- a/src/net/mod.rs +++ b/src/net/mod.rs @@ -1,5 +1,5 @@ mod plugin; pub use plugin::NetIOPlugin; +mod queues; mod socket; mod thread; -mod types; diff --git a/src/net/plugin.rs b/src/net/plugin.rs index 183207e..d621d45 100644 --- a/src/net/plugin.rs +++ b/src/net/plugin.rs @@ -5,8 +5,8 @@ use bevy::prelude::*; use crate::game::prelude::Seed; use super::{ + queues::{NetworkReceive, NetworkSend}, socket::bind_socket, - types::{NetworkReceive, NetworkSend}, }; fn handle_network_io( diff --git a/src/net/types.rs b/src/net/queues.rs similarity index 100% rename from src/net/types.rs rename to src/net/queues.rs diff --git a/src/net/socket.rs b/src/net/socket.rs index 2301008..48ce4ca 100644 --- a/src/net/socket.rs +++ b/src/net/socket.rs @@ -7,8 +7,8 @@ use std::{ use crossbeam_channel::unbounded; use super::{ + queues::{ReceiveQueue, SendQueue}, thread::{start_receive_thread, start_send_thread}, - types::{ReceiveQueue, SendQueue}, }; fn configure_socket(socket: &UdpSocket) -> Result<()> { diff --git a/src/net/thread.rs b/src/net/thread.rs index 511746c..b70120e 100644 --- a/src/net/thread.rs +++ b/src/net/thread.rs @@ -5,7 +5,7 @@ use std::{ use bevy::prelude::*; -use super::types::{ReceiveQueue, SendQueue}; +use super::queues::{ReceiveQueue, SendQueue}; fn network_send_loop(messages: ReceiveQueue, socket: UdpSocket) -> Result { loop { From 293ccf93706dbb0ac06fa6810f97fd0f430c9118 Mon Sep 17 00:00:00 2001 From: Michael Bradley Date: Tue, 3 Jun 2025 00:04:56 -0400 Subject: [PATCH 3/3] Always derive Debug --- src/game/objects.rs | 10 +++++----- src/game/setup.rs | 2 +- src/net/queues.rs | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/game/objects.rs b/src/game/objects.rs index 95de98f..341b7b1 100644 --- a/src/game/objects.rs +++ b/src/game/objects.rs @@ -4,25 +4,25 @@ use bevy::prelude::*; use super::state::AppState; /// Basic implementation of a physics object -#[derive(Component, Default)] +#[derive(Component, Debug, Default)] #[require(Collider, Mesh2d, MeshMaterial2d, Restitution = Restitution::new(1.0), RigidBody, TransformInterpolation, Transform, StateScoped = StateScoped(AppState::InGame))] struct GameObject; /// Radius of a ball -#[derive(Component, Default)] +#[derive(Component, Debug, Default)] pub struct Radius(pub f32); /// A basic ball with which to interact -#[derive(Component, Default)] +#[derive(Component, Debug, Default)] #[require(GameObject, RigidBody = RigidBody::Dynamic, Radius)] pub struct Ball; /// The controllable ball -#[derive(Component, Default)] +#[derive(Component, Debug, Default)] #[require(Ball)] pub struct Player; /// The static objects bounding the playable area -#[derive(Component, Default)] +#[derive(Component, Debug, Default)] #[require(GameObject, RigidBody = RigidBody::Static)] pub struct Wall; diff --git a/src/game/setup.rs b/src/game/setup.rs index 252e0d2..0a2f15b 100644 --- a/src/game/setup.rs +++ b/src/game/setup.rs @@ -30,7 +30,7 @@ pub fn check_for_seed(seed: Option>, mut next_state: ResMut, SocketAddr); pub type SendQueue = Sender; pub type ReceiveQueue = Receiver; -#[derive(Resource)] +#[derive(Resource, Debug)] pub struct NetworkSend(SendQueue); impl NetworkSend { @@ -25,7 +25,7 @@ impl NetworkSend { } } -#[derive(Resource, Clone)] +#[derive(Resource, Clone, Debug)] pub struct NetworkReceive(ReceiveQueue); impl NetworkReceive {