From 66b2cab9f6d756c6fe5bb4ec3e7c1d6b12279904 Mon Sep 17 00:00:00 2001 From: millennIumAMbiguity <37588844+millennIumAMbiguity@users.noreply.github.com> Date: Fri, 24 May 2024 19:25:08 +0200 Subject: [PATCH] Added configs for instability --- .../main/kotlin/org/valkyrienskies/eureka/EurekaConfig.kt | 8 ++++++++ .../kotlin/org/valkyrienskies/eureka/ship/Stabilize.kt | 5 +---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/common/src/main/kotlin/org/valkyrienskies/eureka/EurekaConfig.kt b/common/src/main/kotlin/org/valkyrienskies/eureka/EurekaConfig.kt index b856ba7d..1c39f18e 100644 --- a/common/src/main/kotlin/org/valkyrienskies/eureka/EurekaConfig.kt +++ b/common/src/main/kotlin/org/valkyrienskies/eureka/EurekaConfig.kt @@ -120,6 +120,14 @@ object EurekaConfig { @JsonSchema(description = "How fast a ship will stop. 1 = fast stop, 0 = slow stop") var linearStabilizeMaxAntiVelocity = 1.0 + // Instability scaled with mass and squared speed + @JsonSchema(description = "Stronger stabilization with higher mass, less at higher speeds.") + var scaledInstability = 1000.0 + + // Unscaled linear instability cased by speed + @JsonSchema(description = "Less stabilization at higher speed.") + var unscaledInstability = 0.271828 + @JsonSchema(description = "How fast a ship will stop and accelerate.") var linearMassScaling = 0.0002 diff --git a/common/src/main/kotlin/org/valkyrienskies/eureka/ship/Stabilize.kt b/common/src/main/kotlin/org/valkyrienskies/eureka/ship/Stabilize.kt index 89301929..40b375b1 100644 --- a/common/src/main/kotlin/org/valkyrienskies/eureka/ship/Stabilize.kt +++ b/common/src/main/kotlin/org/valkyrienskies/eureka/ship/Stabilize.kt @@ -49,10 +49,7 @@ fun stabilize( val speed = ship.poseVel.vel.length() - val multiplierA = 1000f; // 1 kilo - val multiplierB = 0.271828; // e / 10 - - stabilizationTorque.mul(EurekaConfig.SERVER.stabilizationTorqueConstant / max(1.0, speed * speed * multiplierA / ship.inertia.shipMass + speed * multiplierB)) + stabilizationTorque.mul(EurekaConfig.SERVER.stabilizationTorqueConstant / max(1.0, speed * speed * EurekaConfig.SERVER.scaledInstability / ship.inertia.shipMass + speed * EurekaConfig.SERVER.unscaledInstability)) forces.applyInvariantTorque(stabilizationTorque) if (linear) {