BBCorrect. There's also, obviously, content optimization. So, you know, like you mentioned, there's always more than one cause, right? So optimization is, when we talk about optimization, because you mentioned one thing in your question, which was, oh, do we just get bigger servers, right? There's a limit to that, a limit that we've, you know, I don't want to say we've reached it. We're not there yet, but there's still a server size that makes sense, right? In terms of cost, cost per player and operations in general, right, of something that makes sense. And so when you do optimizations, right, you need to have a box to fit in, right? So if you're saying our budget frame is X amount of milliseconds, well, then you need to optimize towards that and you need to touch on everything. It's never just one cause or one thing. And so, obviously, how you multi-thread, how you parallelize the work across every phase, so that touches on every team. But then there's content as well, right? Like a good example is the first time we put cargo boxes in the game, I forget which patch at this point. I'm a bit losing track, but the actual one SCU box was composed of like 30-some entities. It looked really good. But, you know, when we looked at it with the scope, it's like, okay, yeah, no, we can't do that. And so content optimization is the other pass of this, right, which is reduce the entity counts, try to be smarter about, you know, how we construct objects, object containers. Streaming is also one, you know, how we stream in things. So the other area of battle on the server optimization front is once you have server frame rate, so you have entities loaded, you're simulating them every frame. That's one area to optimize. The next one is putting stuff in and out of that simulation. So streaming data in, streaming data out. And so there's these phases that every entity and game component go through. And those are, you know, these components are written by game developers, and they do different things. We have, I think, over a thousand game components. They're not all active, but registered, roughly a thousand different game components. And so each one of those have seven phases they go through in their lifecycle. Two of them are really important. It's they called register and unregister. And so this is when a game component that's attached to an entity. So entities of components and entities getting loaded. We need to run the phases on the components so that those components, when they registered, that's where they do, oh, you know, I'm a security component. I need to register with the security system and let know of the AIs in the area, what's going on and things like that. Those happen when a spawn batch appears. And so the, what people refer to as the spawn queues is when the server needs to spawn things, right? That is a queue that is basically processing these phases to put the entities into the engine for simulation. And so that's the other area of battles, optimizing these phases so that the spawn is faster and it's sharper. And despawning is the same, right? So you finish a mission, you leave away, we stream out, we need to get this out, right? And so that's the other area of optimization in battle that also has an effect on gameplay that we're really diving into with these new metrics.
JHYeah, I'm happy you brought up the content optimization in addition to feature and service optimization. One of the recurring criticisms, sometimes valid and we deserve it and sometimes not, is how often we rework a thing. There's been three or four versions of the Freelancer, for instance, and there's a really good reason for that one. And that's because we discover inefficiencies in the way it was built the first time. Sometimes because of fault, sometimes because there just wasn't a better way to make it then. And there is now. So revisiting that, reworking that allows us to make it more efficient. The Freelancer famously, gosh, if old time backers will remember, I've told this story before, but if you've heard it, I'm sorry. The second version of the Freelancer had 200 rivets, little rivets that went around the panel lines. And the artist who built it for us, it was a third party client at that time because it was still early days. They copied the rivet from the concept model instead of, I don't want to spend time remaking a rivet. And then just copied and pasted a concept rivet over the entire ship 200 times. And so a single Freelancer now had a greater resource cost than the entire Idris in Squadron 42. And folks for the old hanger module days will remember, if you owned all four Freelancers and you loaded that up when they got remade, your hanger module was a slideshow. And stuff like that.
BBI remember also there was a thing with the original Cutlass Black. Yeah, first Cutlass that if it would be in your view, that was it. Like that thing was like, you know, I don't know how many polygons it was. It was a crazy like assembly originally. But yeah, content optimization is a big part of this. Right. And it's also the hardest because the universe is very large. Right. So when we talk about content optimization, absolutely. But we're talking about, you know, harvestable asteroids, plants, AI characters, your character, like everything, right, needs to be looked at under the scope to go like, is it under the entity budget? Is it, you know, draw calls? Because the client performance is also important, right? Like we're, you know, we're talking about server stuff now, but the, you know, your client also needs to render that stuff, right? And so content optimization is a super big part of this that, you know, we have to get a lot better at in general for, because our approach is always to make things look right and they do look right. Right. But then we schedule time to optimize it. But sometimes, you know, we have to, because of the nature of our development, we have to put it in one patch and then optimize it in the next one. And so that does cause some frame drops at some points.
JHWe constantly make improvements to our level of detail system and stuff like that.