From dacb89641c32bd0452be3671611633b71f7750e0 Mon Sep 17 00:00:00 2001 From: ghostlyzsh Date: Mon, 1 Apr 2024 22:58:37 -0500 Subject: [PATCH] no more memory leak, some fixes to bring back to old stk but not all --- server/Cargo.toml | 6 +++--- server/src/component.rs | 2 +- server/src/main.rs | 37 +++++++++++++++++++++++++------------ 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/server/Cargo.toml b/server/Cargo.toml index e075b4ebe05b1a5ada2242d8dbd0f52efca6df6d..c518bea9bfc3245dd5df02cd15cd7b5d9919672b 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -5,10 +5,10 @@ edition = "2021" license = "AGPL-3" [dependencies] -bevy = { version = "0.12", default-features = false } +bevy = { version = "0.13.1", default-features = false } serde = { version = "1", features = ["derive"] } serde_json = "1" -bevy_rapier2d = "0.23.0" +bevy_rapier2d = "0.25.0" rand = "0.8.5" tracing-subscriber = "0.3" starkingdoms-common = { version = "0.1", path = "../starkingdoms-common" } @@ -22,4 +22,4 @@ tungstenite = "0.21" [features] default = [] -profiling = ["bevy/trace_tracy"] \ No newline at end of file +profiling = ["bevy/trace_tracy"] diff --git a/server/src/component.rs b/server/src/component.rs index 34f9d2f2341653c39389f6c591cbd524c321e78f..793b0cd0cb02bbfcedd1c6f456e76979dbfac635 100644 --- a/server/src/component.rs +++ b/server/src/component.rs @@ -121,7 +121,7 @@ pub struct PlayerBundle { pub struct ModuleTimer(pub Timer); impl ModuleTimer { pub fn new() -> Self { - Self(Timer::from_seconds(3.0, TimerMode::Repeating)) + Self(Timer::from_seconds(0.3, TimerMode::Repeating)) } } impl Default for ModuleTimer { diff --git a/server/src/main.rs b/server/src/main.rs index 9d29c9edc2c112209cecc48fd089c956f0dd662c..511bbee49a62437947f2e04f6b93a613144e5f2c 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -20,6 +20,7 @@ static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; use std::net::IpAddr; +use std::num::NonZeroUsize; use crate::mathutil::rot2d; use crate::ws::{StkTungsteniteServerConfig, StkTungsteniteServerPlugin, WsEvent}; @@ -89,6 +90,7 @@ impl PluginGroup for StkPluginGroup { .add(bevy::log::LogPlugin { level: bevy::log::Level::DEBUG, filter: "wgpu=error,bevy_render=info,bevy_ecs=trace".to_string(), + update_subscriber: None, }) } } @@ -153,7 +155,7 @@ fn main() { ) .add_systems(FixedUpdate, save_eligibility) .add_systems(FixedUpdate, convert_modules) - //.insert_resource(Time::::from_seconds(1.0/1.0)) + .insert_resource(Time::::from_seconds(1.0/1.0)) .run(); info!("Goodbye!"); @@ -163,7 +165,7 @@ fn setup_integration_parameters(mut context: ResMut) { context.integration_parameters.dt = 1.0 / 60.0; context.integration_parameters.joint_erp = 0.2; context.integration_parameters.erp = 0.5; - context.integration_parameters.max_stabilization_iterations = 16; + //context.integration_parameters.num_solver_iterations = NonZeroUsize::new(16).unwrap(); } fn spawn_planets(mut commands: Commands) { info!("Spawning planets"); @@ -224,21 +226,20 @@ fn module_spawn( mut packet_send: EventWriter, ) { if module_timer.0.tick(time.delta()).just_finished() { - let angle: f32 = { - let mut rng = rand::thread_rng(); - rng.gen::() * std::f32::consts::PI * 2. - }; - let mut transform = Transform::from_xyz(angle.cos() * 30.0, angle.sin() * 30.0, 0.0); - transform.rotate_z(angle); if part_query.iter().count() < FREE_MODULE_CAP { + let angle: f32 = { + let mut rng = rand::thread_rng(); + rng.gen::() * std::f32::consts::PI * 2. + }; + let mut transform = Transform::from_xyz(angle.cos() * 30.0, angle.sin() * 30.0, 0.0); + transform.rotate_z(angle); let flags = PartFlags { attached: false }; let mut entity = commands.spawn(PartBundle { part_type: PartType::Cargo, transform: TransformBundle::from(transform), flags, }); - entity - .insert(RigidBody::Dynamic) + entity.insert(RigidBody::Dynamic) .with_children(|children| { children .spawn(Collider::cuboid(0.375, 0.46875)) @@ -1301,7 +1302,7 @@ fn convert_modules( ) { for (_planet_entity, planet_type, children) in &planet_query { for (entity1, entity2, intersecting) in - rapier_context.intersections_with(*children.first().unwrap()) + rapier_context.intersection_pairs_with(*children.first().unwrap()) { if intersecting { let other = if *children.first().unwrap() == entity1 { @@ -1573,7 +1574,7 @@ fn save_eligibility( ) { for (_planet_entity, _planet_type, children) in &planet_query { for (entity1, entity2, intersecting) in - rapier_context.intersections_with(*children.first().unwrap()) + rapier_context.intersection_pairs_with(*children.first().unwrap()) { if intersecting { let other = if *children.first().unwrap() == entity1 { @@ -1717,7 +1718,12 @@ fn on_position_change( packet_send.send(WsEvent::Broadcast { message: packet.into(), }); + } + /*let packet = Packet::SaveEligibility { eligible: true }; + for _ in 0..10000 { + packet_send.send(WsEvent::Broadcast { message: packet.clone().into() }); + }*/ let mut planets = Vec::new(); for (entity, planet_type, transform) in planet_query.iter() { @@ -1981,6 +1987,13 @@ fn gravity_update( let distance = planet_translate.distance(part_translate); let force = GRAVITY * ((part_mass * planet_mass) / (distance * distance)); let direction = (planet_translate - part_translate).normalize() * force; + /*let gravity_force = ExternalForce::at_point( + direction.xy(), + part_transform.translation.xy(), + part_transform.translation.xy(), + ); + forces.force += gravity_force.force; + forces.torque += gravity_force.torque;*/ impulses.impulse += direction.xy(); } }