Lys's Avatar

Lys

@lystingdangerously

Game director at Eridanus Industries, and lead developer of NEBULOUS: Fleet Command.

186
Followers
103
Following
104
Posts
17.06.2025
Joined
Posts Following

Latest posts by Lys @lystingdangerously

Wait this can't be related the Hunt Down The Freeman, can it?

28.02.2026 00:33 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I need to know more...

28.02.2026 00:22 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Go to bed with 34 open bug reports after closing a dozen, feeling accomplished.

Wake up to 77 open bug reports.

24.02.2026 22:14 ๐Ÿ‘ 8 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

One inch of black water on deck in berthing? Just another day in the navy.

24.02.2026 00:59 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

EVE's ship designs have always done such a great job of not giving a damn and just being their own thing.

22.02.2026 17:51 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

The good news is I can't remember the last time @unity.com actually finished a feature, so I assume this cynical attempt at bumping their stock price will evaporate just like all the others.

17.02.2026 16:47 ๐Ÿ‘ 8 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Video thumbnail

This style of light doesn't really appear in animation anymore. You know it when you see it -- it's bright, hot and almost dangerous.

Our new issue explores the tricks behind it, and how one artist has revived the look for the digital age: animationobsessive.substack.com/p/dangerous-...

13.02.2026 22:15 ๐Ÿ‘ 8382 ๐Ÿ” 2445 ๐Ÿ’ฌ 49 ๐Ÿ“Œ 100
An orange and white cat sitting at my feet with one paw raised and her ears pulled back, yearning for a half cup of soft butter being held near the camera.

An orange and white cat sitting at my feet with one paw raised and her ears pulled back, yearning for a half cup of soft butter being held near the camera.

Should I give her a half cup of soft butter? (She really wants it)

14.02.2026 01:39 ๐Ÿ‘ 9 ๐Ÿ” 0 ๐Ÿ’ฌ 4 ๐Ÿ“Œ 0

It never stops feeling cool seeing my game get mentioned on Spacedock. You're going to love the Mercator class in the campaign too, Hooj.

11.02.2026 02:43 ๐Ÿ‘ 73 ๐Ÿ” 10 ๐Ÿ’ฌ 4 ๐Ÿ“Œ 0

After working myself to near-death for the entire month of January to get my singleplayer campaign code feature complete, I can now focus on the fun stuff: art, lighting, shaders, and story.

Just kidding, now I have to switch back to main branch and deal with multiplayer balance. ๐Ÿ™ƒ

01.02.2026 17:45 ๐Ÿ‘ 17 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I feel genuinely awful for the Highguard devs. They wouldn't be the hate du jour if someone *else* hadn't overhyped their game *for* them. Especially maddening to see other game devs join in, who know exactly how many years of peoples' lives are being dragged right now. Why are we eating our own?

29.01.2026 00:34 ๐Ÿ‘ 8 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I really loved the Trans rep in The Pitt S1. It's such a simple, mundane, blink-and-miss-it slice of what we deal with every day. The fact that the doctor, with everything else going on in the ER that day, cared enough to find the time to fix her records without being asked was really heartwarming.

28.01.2026 15:57 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

It's a family shibboleth for hard games now too: "Is it Ecco-The-Dolphin-Hard?"

14.01.2026 17:27 ๐Ÿ‘ 6 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

My little sister got the PS2 version of this game because she wanted to play with dolphins, and then when we realized it was actually a good game the whole family became obsessed with it. We never got past the alien mothership level though, it was too dark on our TV and we couldn't find our way.

14.01.2026 17:27 ๐Ÿ‘ 6 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I just spent 14 straight hours merging two branches that have been steadily accumulating overlapping changes in 1,600 files for almost a year. Protip: don't let your feature branch stay isolated for that long. Now the fun part of slowly uncovering all the things the merge broke begins... #gamedev

14.01.2026 04:01 ๐Ÿ‘ 13 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

It doesn't matter that it was "for kids", Infinity Train is my favorite show, animated or otherwise, and I've watched it through at least a dozen times with anyone who would let me show it to them. It was my go-to comfort on deployment. Thanks so much for making it.

13.01.2026 18:15 ๐Ÿ‘ 5 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
A blurred screenshot of a piece of C# code, half of which is large paragraph-style comments.

A blurred screenshot of a piece of C# code, half of which is large paragraph-style comments.

You know it was annoying problem when it results in a method that is 50% comments by volume. #gamedev

12.01.2026 22:13 ๐Ÿ‘ 22 ๐Ÿ” 3 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Unity Addressables is really neat but wow whoever designed it seems to really hate modders and anyone who tries to make their game moddable.

11.01.2026 05:03 ๐Ÿ‘ 8 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
A gray cat sitting on the lap of a woman wearing a blue flannel, paws over her arm on the desk, squinting at the computer screen behind the camera and looking unamused.

A gray cat sitting on the lap of a woman wearing a blue flannel, paws over her arm on the desk, squinting at the computer screen behind the camera and looking unamused.

Code review. She doesn't look too impressed...

05.01.2026 22:21 ๐Ÿ‘ 26 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I'm glad this is finally fixed, there's few things more frustrating than having your last missile make it through PD only to do nothing because of bad luck. Thanks to our tester Imaginary Lobster for figuring out the reliable repro steps that allowed me to investigate and fix this.

05.01.2026 02:32 ๐Ÿ‘ 11 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
The final code for fixing the issue:

// Integrate velocity directly instead of using AddForce because with AddForce
// the modified velocity will not be calculated and set until the end of the
// FixedUpdate when the physics solver runs.  This results in the missile
// potentially skipping past the end of its lookahead raycast and phasing through
// objects.  This was also the root cause of "the clonk" bug.
_body.velocity = Vector3.ClampMagnitude(_body.velocity + (thrustVector * (motor / _body.mass) * Time.fixedDeltaTime), speedLimit);

The final code for fixing the issue: // Integrate velocity directly instead of using AddForce because with AddForce // the modified velocity will not be calculated and set until the end of the // FixedUpdate when the physics solver runs. This results in the missile // potentially skipping past the end of its lookahead raycast and phasing through // objects. This was also the root cause of "the clonk" bug. _body.velocity = Vector3.ClampMagnitude(_body.velocity + (thrustVector * (motor / _body.mass) * Time.fixedDeltaTime), speedLimit);

While it was hard to find the root cause, in the end the solution was simple: remove the AddForce call in favor of integrating the velocity for the body manually. That way I could be sure the velocity I was using the do the lookahead raycast was always accurate.

05.01.2026 02:32 ๐Ÿ‘ 10 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Once I had repro steps and could see where it was failing, a quick fix for the clonk could have involved UV sampling against the entire collider group, not just the detected collider, but I had an inkling there was more at play that was causing, or would cause, other issues if I didn't keep digging.

05.01.2026 02:32 ๐Ÿ‘ 7 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

The example above is interesting because of the stacked colliders, which causes the clonk. If there is no other collider below this actually results in the missile just passing straight through the target, though that was rarer.

05.01.2026 02:32 ๐Ÿ‘ 8 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Because there is a hole (another collider sits on top, the one it missed) no UV is sampled. Without the UV to know where to check for armor penetration (remember this is main branch, old armor system not the fancy new one I've talked about here before), the missile detonates but does no damage.

05.01.2026 02:32 ๐Ÿ‘ 7 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

The convex version is required by Unity for dynamic objects for performance reasons, so any holes are covered up. That means a ray can hit this collider even though there shouldn't be anything there.

05.01.2026 02:32 ๐Ÿ‘ 7 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
A comparison of the full mesh collider and the giftwrapped convex collider used for physics calculations.  The full collider has a hole corresponding to the bottom platform on the hull, while the giftwrapped one does not.

A comparison of the full mesh collider and the giftwrapped convex collider used for physics calculations. The full collider has a hole corresponding to the bottom platform on the hull, while the giftwrapped one does not.

The collider it hits is the one on the right, which is used on the physical hulls. This is a giftwrapped convex version of the left collider. After the hit is detected the UV to apply armor damage at is sampled using the collider on the left. You can see there is a hole there.

05.01.2026 02:32 ๐Ÿ‘ 7 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
An example of the raycast gap falling perfectly on the edge of a hull surface, causing it to not be detected before the missile steps through it.

An example of the raycast gap falling perfectly on the edge of a hull surface, causing it to not be detected before the missile steps through it.

Here's an example on the bottom of the Ferryman. The gap goes across the bottom edge of the collider, but because there is also a collider underneath it still detects a collision.

05.01.2026 02:32 ๐Ÿ‘ 8 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

In the first image you can see a gap between the end of the lookahead raycast and the solved position, because the raycast is calculated with the velocity post-capping (but pre-physics-solving). If this gap happened to align on the edge of a hull's collider we get an instance of this bug.

05.01.2026 02:32 ๐Ÿ‘ 7 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

This meant all missiles could have one fixed frame worth of additional acceleration above their advertised cap, about 25m/s in the case of this rocket. The effect, and thus likelihood of the bug occurring, was more pronounced with high acceleration missiles like hybrids and rockets.

05.01.2026 02:32 ๐Ÿ‘ 7 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

These weapons have a capped speed, and the order of operations is a killer. I was using AddForce(Impulse) to apply the thrust, and then capping the velocity immediately after, but Unity only applies the sum of all impulses after FixedUpdate completes.

05.01.2026 02:32 ๐Ÿ‘ 7 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0