Star Citizen: Bugsmashers - Episode 31
Transcript — every row opens the video at that moment
- 00:00:06
[Music] Oh, hello there. Welcome to Bug Smashers. Bug Smashers. Hey everyone. Uh we're here in a fun little environment with two clients in a multiplayer test and we got a bug in that uh remote ships are not moving or they're calling it a desync issue. So if I fly this guy around, let me stop him for a moment. So I flew a bit. You'll see on this client
- 00:00:56
that he's actually stayed still. No. So, what's happening? Oh, shenanigans. That's what's happening. But for reals, um, so if we have a ship and he's flying around and then some fun guy in the univer goes, I want that ship. And they get into a dog fight and, you know, the first player explodes into a glorious fireball. Uh, he'll respawn and then from then on, you'll never see the ship move. Well, other clients won't, except if you wait long enough, eventually it'll start moving along. Um, what's happening is the worst thing ever. Um, so we have a ship. I'm going to use, what shall I use today? I will use this paper notebook.
- 00:01:45
So, we have this ship. And when we spawn him in, we give him the ID of, let's just say, two. Now, he flies around and explodes. Um, we need to spawn a new one because well, this guy still wants a dog fight. So, we spawn a new ship and we give it the same ID because why not? I mean, it keep everything the same. So, we give him the same ID. We give him all his loadout information and he spawns. Um, problem is when this guy spawns on the server, the other clients may still have the old one around. Oo, phone fell. or um the old one's gone, but they still are getting packets of information from the original ship. So, IFCS
- 00:02:38
um checks to see the last time it has got a response from the server for any packets coming in. And if it gets, you know, say a tick from the server of 600, but we just died and we reseted our tick. Um, it'll get a tick of 600. It'll think, "Oh, we should be at 600. We should be at 600." But then our new ship starts sending in information and the tick's going to be at like 0 1 2 3 4. And it's be like, "Wait a minute. Our last one was 600. Our new one is smaller. We're going to ignore all that." And because it's ignoring it, you basically see the remote client just stay still. Not cool. So, um, for now, what we have done, or I should say Sir Paul has done, is he's
- 00:03:29
added a workaround, um, that checks to see if there's some conditions we can see to restart the, uh, you know, the flight controller again. And here you can see if we're in the bad server state because of the aspect bug, it will just allow it and get processed. Um, it it's a good workaround for 2.5. And let's start this up. And as this recodes, but it has disclosed a bad thing in our networking code that we'll have to take a look at um soon. But it's going to be such a big change, it's too risky for 25. You know, it's pretty bad when you have a new entity spawn in and it's getting information from, you know,
- 00:04:18
the old system. I mean, what happens if you have health of, you know, five or 10 or you die, you spawn, but then you get information that your health should be zero from the server because it's from the old system and you die again. Not cool. So, there's going to be some weird oddities until this gets resolved, but this this workaround will at least allow you to fly um until the networking issue can get resolved, which should happen shortly. So, let's pop up. Oh, recode still going. Take my sip of coffee. All right, recode is gone. Um, I'm going
- 00:05:06
to move my clients. So, as you can see, the ship already moved around. Let's see if we could find him. He snapped to the correct state. Where did he go? Oh, there he is. There he is. All right. So, there's the other Argo. And if I go on here, you now correctly see him move about. Oh, the shenanigans of game design or programming. Same thing. All right, so we had a fun little issue with uh you know, remote ships just dead stopping, no longer updating. You know,
- 00:05:55
when a ship dies and respawns, it will just stay there. Then sometime later it will start magically just working. It was tracked down by Paul. Um fun bug because it just realized a bigger issue that we have where if we use the same entity ID on a ship that we're you know we delete it and then spawn a new one with the same entity ID or ID any old packets that come in the other clients will start using them. So, um, with the flight controller, you know, it checks to see if the server tick is a certain number and if it gets lower numbers, it just flat out ignores it. So, Paul put in a workound workar around to make sure that the ships will continue to fly even if it gets some bad information. Um, but we're going to have
- 00:06:44
to look into the deeper issue because we can't have the network, you know, sending old information to new entities from old entities. But, you know, that's how it is in working on a game. You think you covered something and then you get a bug that uncovers some crazy other shenanigans. Well, we'll have to fix it. But until next time, hope you guys enjoyed.
Transcript from YouTube’s automatic captions — punctuation and Star Citizen jargon are approximate. The video itself is hosted by CIG on the official channel.

