How would I go about streaming a large seemless open world with Godot.

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Cav33
:warning: Old Version Published before Godot 3 was released.

For my game, I wanted to implement a large seamless world to explore.

As a player move left or right, the game should load the areas that are near that player and unload areas that are too far.

Is there a way I can make this work under Godot, because the tutorials mostly talk about loading scenes in a not-so-seemless way.

:bust_in_silhouette: Reply From: Zylann

Doing this mostly boils down to segmenting your world into chunks, so you can “stream” it from disk and load only the part the player is standing on. You can do it simply by loading nodes dynamically rather than using change_scene for example.
The way of doing that differs a bit if the world is randomly generated (world building is then shipped with the game), and if it is not, you could have to build some tools to make that easier because Godot and most mainstream game engines (or even 3D software) work in single, non-streamed scenes.

I’ve been interested in this for a very long time but never really went far in implementing that (made a couple of Minecraft clones on the way). Doing that is non trivial and depends a lot on what you actually want to support. There can be a lot of work involving all areas, graphics, terrains, physics, floating-point precision handling, persistance, networking, probably sound too.

If the world is static, it could be divided on scenes, preload will speed up the process too, then update “active” objects on _ready, when close preloaded scenes enter the tree (not changing scenes but adding and removing them from the tree).

eons | 2016-11-25 17:42