Awesome post! It’s really great to see how far streaming has come and how much is still planned. Speaking from my own experiences with trying to implement streaming into an existing large-world game, I feel confident in saying that streaming and related APIs are no longer the main things blocking adoption.
From my own experience as a developer of a game with a huge, detailed map, the things preventing me from implementing streaming into my projects are now just Studio and server memory.
On our streaming enabled test build with our full gameplay-ready map, studio often crawls down into the 15-20 FPS range and eats up ~15 GB of memory. Selecting services like Workspace or ReplicatedStorage (or really anything with a large number of descendants) will freeze up Studio for 2-3 seconds, searching/filtering for anything is super unresponsive, and starting and stopping tests can take minutes. Saving the place file, publishing updates, and even opening the places (especially with team create enabled) is another huge time loss because of the project size.
And this is just the place file where streaming is actually enabled. We have to work out of smaller / lite version of our game to keep studio performance from being a huge productivity killer. All our map and asset work has to be done in other team creates, and assembled and tested back in the main file(s). No matter how much we try to mitigate Studios performance issues, we can’t ever escape them. As our game grows in size it only gets worse.
These workflows feel counterintuitive to a lot of what Roblox has been working towards when it comes to project and asset management, but you can’t work on a big game without them. These performance issues are a big part of why I switched to a vscode + rojo setup. The amount of development time I’ve been able to take back from waiting for Studio to respond has been huge, even in the lite versions of our development environments.
Server memory is something I spend a lot of time on. Big games, no matter how you pack them, take up a lot of memory and the ~6.5GB we’re allocated on the server is not enough. On a 30 player server, our non-streaming/custom chunking system sits at the ~5.5GB mark. Our gameplay ready streaming build with 1 person in the server starts at 5.5GB and we can push it into the crash zone just by having more players join the server.
There is a lot I can do to convert my existing project into one that is more optimized for streaming, but memory headroom is a huge concern for me as a developer. Being able to build and stream these giant, detailed maps doesn’t mean much to me if the rest of my game has to min-max every MB of RAM left over just to function.
Having a big map is really only half of having a big game, and while streaming has made leaps and bounds to enable big games, other aspects of the engine and creation experience are not yet up to par. I very much look forward to seeing what further improvements are to come!