Skip to content

Render Distance + automatic object streaming #8140

@bartekpliszka64-sys

Description

@bartekpliszka64-sys

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.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions