-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed as not planned
Labels
Description
What would I like to request?
I would like to request that a Render Distance feature be added to GDevelop for 2D and 3D games, available in the project settings (“Resolution and Rendering”).
The feature should automatically:
- hide and deactivate objects that are outside a specified distance from the camera,
- save their state (position, variables, HP, animation, etc.) in memory or variables,
- restore objects when the player is near them again,
- allow the developer to set the render distance in pixels and choose which objects to stream.
In other words: an automatic culling + object streaming system that runs natively in the engine.
Why am I asking for this?
GDevelop currently renders and updates all objects on the scene, even if they are very far away from the camera.
With large maps or open-world games, this results in:
- enormous CPU and GPU load,
- FPS drops,
- the need to manually create complex culling systems,
- limitations in designing large worlds.
In my case, I am creating a very large 2D open world (over 3 billion pixels) with hundreds of objects.
Due to the lack of native culling, the game drops to ~26 FPS, even though the game logic itself is light.
Such a feature would: - enable the creation of large worlds in GDevelop,
- significantly improve performance,
- simplify the work of developers,
- bring GDevelop closer to the capabilities of engines such as Unity, Godot, and Unreal (which have culling and streaming built in).
Evidence confirming the need for this feature?
- GDevelop updates all object instances, even those thousands of pixels outside the camera.
This is confirmed by the community and documentation — there is no native culling. - Games with large maps (survival, sandbox, open-world) experience drastic FPS drops if the scene contains many objects.
This is a common issue reported by users on GitHub and Discord. - Current workarounds (manual object removal, custom streaming systems) are:
- difficult to implement,
- prone to errors,
- unintuitive for beginners,
- do not work perfectly with hundreds of objects.
- Other engines have native solutions:
- Unity: occlusion culling + streaming
- Godot: visibility notifier + chunking
- Unreal: world partition
As a beginner-friendly engine, GDevelop should have a simple version of this feature. - In my game (a large 2D world), tests show that the biggest problem is the number of active objects, not the game logic.
Render Distance would solve this immediately.
⭐ Summary!
Please add a native Render Distance / Object Streaming system that:
- automatically deactivates objects outside the camera,
- saves their state,
- restores them when the player returns,
- allows you to set the rendering distance,
- works in both 2D and 3D.
Such a feature would significantly increase the capabilities of GDevelop and allow for the creation of large, smooth worlds without complicated workarounds.
PS.Currently, I hide objects outside the camera and replace static objects such as trees with lighter equivalents without events. But that doesn't help.