Is it possible to make a script that “streams” your Roblox screen to another player.
Maybe by using view port frames? By setting ViewportFrame.CurrentCamera.CFrame to the player’s Camera’s CFrame.
But now the next problem is How to display the entire workspace in a view port frame? Or is it even possible to do something like this. Display the entire workspace as well as the characters moving around.
Yes, this is most definitely possible. You could transfer via a RemoteEvent the player’s CurrentCamera and perhaps data about what’s in the workspace and PlayerGui. You can use WorldModels instead of Models to display animations too. That’s about all you really need. Although there are a few limitations, i.e you need to also get the ViewportSize and have your SurfaceGui (or ScreenGui) match the size of that while also keeping a good size on the player receiving the data’s monitor. You’re also unable to have multiple lights and terrain, but if your game doesn’t use lights regularly or have terrain, this should be mostly easy to pull off.
What do you mean by that? The parts inside of it are the entire workspace depending on how you’re adding the parts. You literally cannot clone every single descendant of the workspace including the Camera and Terrain. You have to clone the parts.
But wouldn’t it be expensive to duplicate all the parts of a fairly large map every frame or once every few frames? And also send it to the server through a remote event.
I don’t think it would affect remote event transference speed, unless you’re sending it literally every frame (have a cool down like every 0.1 seconds). Also, there are checks you can do to make sure you aren’t absolutely decimating your computer like checking if there’s parts that have already been sent to the viewport. Yes, it would be expensive, but you have to keep in mind also how you can fix that.
Hmm, I think a good “optimization” of this would be to only send parts that are dynamic and can move around, and not send the other parts which will always stay the same.
If I’m being honest, it would be best if you compared CFrames and then send data if the CFrame is different (every cooldown of course). You could also refresh any unanchored parts every time you update the ViewportFrame.