New Rendering Method

Currently Roblox has its own rendering functionality that I don’t believe works well enough and here’s why:

You will notice that when your FPS drops looking directly at the floor relieves some of that this is because your client renders what it can logically and possibly see. HOWEVER this rendering technique fails to include some simple logic and I will explain how below.

Why are instances still rendering out of view for the client such as objects replicated/created by another client? In other words, if logically it is impossible to see what that client is doing or where the client is, why does whatever the client is doing still render into my environment?

Specific example:
Person A is shooting a pistol (raycasting) on the opposite end of the map.
Person B is outside of the purview of Person A, however, Person B still hears and renders Person A’s raycast and actions.

Is this done under the assumption that whatever Person A is doing CAN have the potential of affecting what Person B is doing?

This is the whole concept of culling and why a visually intensive map can run faster when you look down. Because it culls, to only render the faces in your view frustum.

Roblox already employs these industry standard methods within it’s rendering system. If rendering is slow, then you are simply pushing the limits of these methods.

Roblox as a general game engine is not always able to easily determine what needs to be rendered and what doesn’t.
Some other game engines will have engineers and level designers work together to hand craft and hard code rooms of a level so that they can turn off other non-visible rooms with defined obscurity rules. Roblox is not able to support that case because it does not fit the need of the platform and the games that are being developed, but it is possible for Roblox devs to develop their own systems to do this (though they might have to wrangle with some distributed physics problems)

1 Like