[DEPRECATED] StreamX - Reduce lag and prevent map cloning

It seems that Culling Service is for the client side, not the server side and therefore will not have the performance that StreamX has.

2 Likes

It’s quite impressive for a client-sided streaming module. Here try out their showcase game. CullingService Testing - Roblox

3 Likes

Sure, although if a player doesn’t have a very powerful client, it could do more harm than good. But it is pretty impressive, although getting it working is pretty difficult (there are several things that need to go in different folders).

4 Likes

When is beta over? Luckily I’m one of the beta testers for this.

Probably once it’s good enough and we have a payment source ready.

1 Like

This seems like it could definitely be useful for more performance on the client… but I just have a few questions;

  • Why does it need an external server? What can the server do that the game server can’t?
  • Why isn’t this just client-side?
  • Why shouldn’t I use this over StreamingEnabled?

Please bring back the old logo looked way better, Ty!

According to the OP and some people in this thread it is better for performance.

1 Like

Maybe the external server has more resources or is just more optimized.

2 Likes

Yeah, our server is highly optimized and delivers better performance that what Roblox offers

1 Like

From what I can tell, it seems to me that your highly optimized code is doing nothing but distance checks, which I think a normal Roblox server (or the player’s own device) would be perfectly capable of doing.

Also, is there some sort of demo place, where we can compare performance between StreamX and StreamingEnabled?

Yes, I had a demo place which seems as if it was never added to the topic.

2 Likes

I will make one with StreamingEnabled when I’m home

1 Like

Could you upload the place file (without the API keys and such)? I can’t finish the form to compare the two because it thinks I own a game I am preparing to publish.

2 Likes

School just started right now unfortunately, I’ll get you one when I get home.

3 Likes

It does distance checks, but it also stores all the parts.

Right but the Roblox server doesn’t have a hard drive to store data (beside DSS but DSS performance is far too low for any meaningful amount of part data to be saved), if you put perhaps 150k+ parts in a Roblox servers memory, it would most definetly crash.

1 Like

As said above, store parts on disk.

Performance depends on the power of the client and the parts aren’t truely unrendered, they are still stored.

The streaming enabled performance more passive than active, meaning that active part rendering is much more efficient (although can be laggier depending on the game size). Although you can pair StreamX with StreamingEnabled to make sort of a part streaming hybrid with more active performance while keeping the lag reduction of StreamingEnabled.

1 Like

It’d just make retrieving the parts slower. There’s a reason RAM exists.

StreamX will not help at all for a game with 150k parts, because according to your reply, the server will apparently crash before it can upload it to StreamX. What kind of example is this?

And, actually, with StreamingEnabled and a game with 150k parts, I got decent FPS.

image

And the server was using ~950 MB of memory;

That is comfortably below what I think is a Roblox server’s maximum memory limit (4 GB).

As they need to be. The majority of the client’s performance will not be lost by something simply existing in memory, that’s the reason LevelOfDetail or LoD exists basically everywhere. The tradeoff is better performance because the client will render a more basic model from farther away, but for the cost of more memory usage, which will barely even matter most of the time.

Not storing something leads to problems like getting stuck in a tree;

Horrendous 150+ KB network spikes;

image

And of course, very visible pop-in!

There’s actually two modes, “LowMemory” and “Opportunistic”. LowMemory makes streaming enabled unload stuff only when it thinks there’s not much memory left, whilst Opportunistic will unload stuff the moment it thinks it isn’t in use.

This makes no sense. Performance is dictated by the weakest link in the chain. Just because you have StreamingEnabled does not mean your module will function any better.

I am not trying to discredit all of the work you’ve done on this, but the way you’ve gone about implementing this is incredibly flawed and broken. Just because you store assets on an external server does not negate the cost of the server having to redownload parts every 15 seconds, not to mention that that is a ludicrously long time for games.

3 Likes

Regarding this, I was actually working on a fade in/out animation but I never got it working this beta release, should be working in the next one.

We’ve been working on optimization and it’s been doing pretty well
image

600 FPS? How many parts are used in this, and what are your device’s specs?