15
submitted 2 weeks ago* (last edited 2 weeks ago) by Whappens@lemmy.world to c/godot@programming.dev

Project: Hadean chronicles.

Drunk yaw. Ships were flying like they’d had one too many at the cantin: pure proportional yaw meant no drag on angular velocity, so every heading correction sailed past the target and wobbled back. Dropped a D term on angular velocity. Now they settle like they mean it.

Docking death-spiral. The behavior planner checked emergency HP before docked status. A docked ship still patching its hull got reclassified as “emergency” every tick, which silently disabled both healing and hazard immunity. Reordered: docked wins. Always. No exceptions.

The overshoot plague. Ships barreled into docks and loot at max throttle, tunneling clean through the interaction radius on pure momentum. Same thing at hazards: they started the avoidance turn fine, but inertia carried them into the danger zone anyway. One shared cause, one shared fix — STEERING_ARRIVAL_RADIUS now clamps approach speed as targets get close. It’ll tune per capture radius later, as long as it stays under 65 so combat orbit hysteresis doesn’t get confused.

Combat strobe light. A single hard distance threshold meant ships at the boundary flickered between orbit and charge — two headings ~90° apart, flipping every frame. Replaced with hysteresis: separate enter/exit radii, orbit state remembered between ticks. Stable at all ranges.

“0 units from hazard.” Every planet was screaming about a collision that didn’t exist because Position was first assigned in _PhysicsProcess, and synchronous scene-load spawns beat it to the punch. Seeded position eagerly at setup with the same orbital formula and delta=0; physics ticks just update from there.

The invisible fleet. Everything rendered: ships, sun, background, all sharing the correct World3D. But there was no Camera3D — only a leftover Camera2D from the before-times. Zero errors, zero output, zero fleet on screen. Added a proper top-down Camera3D, evicted the dead legacy background scene that was still being instanced alongside the new one, and the armada reappeared.

Tiny win. Velocity-clamp check was doing a sqrt every tick for the 99% happy path where nothing needed clamping. Swapped to a squared-threshold compare. Minimal, but it adds up.

you are viewing a single comment's thread
view the rest of the comments
[-] UniversalBasicJustice@quokk.au 3 points 2 weeks ago

Not a game dev or even much of a programmer but this is an excellent debugging postmortem, thanks!

I am a space nerd with a few hundred hours in Kerbal Space Program, however, and your drunk yaw and inertial overshoot intrigue me. It sounds like you have a good grasp on guidance/navigation/control concepts and the math dictating them; good work on those fixes.

How detailed are your ship physics? Looks like you have the essentials; momentum/inertia and accel/velocity/displacement. Do you model center of gravity/mass/inertia as well? Jerk maybe?

Also curious how multi-planetary physics work in a game's physics engine; how many gravity wells do you model at once?

[-] Whappens@lemmy.world 3 points 2 weeks ago* (last edited 2 weeks ago)

Hi, I'm glad you like it! Currently I just started, so have only this. Possible to add something else fitting the game, but what's already decided: ships will be modular and have a crew with personalities, please keep watching.

this post was submitted on 29 Jul 2026
15 points (94.1% liked)

Godot

7827 readers
12 users here now

Welcome to the programming.dev Godot community!

This is a place where you can discuss about anything relating to the Godot game engine. Feel free to ask questions, post tutorials, show off your godot game, etc.

Make sure to follow the Godot CoC while chatting

We have a matrix room that can be used for chatting with other members of the community here

Links

Other Communities

Rules

We have a four strike system in this community where you get warned the first time you break a rule, then given a week ban, then given a year ban, then a permanent ban. Certain actions may bypass this and go straight to permanent ban if severe enough and done with malicious intent

Wormhole

!roguelikedev@programming.dev

Credits

founded 3 years ago
MODERATORS