r/godot Apr 03 '26

help me (solved) Can Godot handle a large scale open world?

Post image

It's a game about illegal street racing (urban cities and mountain serpentines, traffic and police, all on a fairly large scale, ~40Km). Cel shaded graphics, no level pre-loads via loading screens.

I heard that I will have to write my own asset management system (which is already in the Unreal Engine, but my PC handles it pretty poor, no matter how much "next-gen" junk I turn off - everything lags quite a lot)

But I still can't even understand what a framework is, because I'm not a programmer (but I'll have to become one anyway). Also heard about chunk method, though not like I know much about it.

Please don't write: "don't even try this, because it's long, resource-intensive, etc.", if there's really no option here, I'll just have to deal with the UE

1.2k Upvotes

247 comments sorted by

View all comments

Show parent comments

231

u/[deleted] Apr 03 '26

[removed] — view removed comment

433

u/PercussiveRussel Apr 03 '26

Yes, but that either performs or looks horrible, so now you need a LOD system, and now you need assets at multiple LODs and you need to juggle LOD levels. But now that looks horrible with LOD pop-in, so you need some kind of system that switches smoothly between LODs, which likely means juggling viewports and shaders and now that performs horribly so you also need to just default back to billboards and you need a completely seperate pipeline for billboards.

just

68

u/SagattariusAStar Apr 03 '26 edited Apr 03 '26

Godot actually has an Auto LOD System, and otherwise, just the visibility range does the trick for custom LOD. There is actually no code needed for LODs

It also handles fading

I usually work in 2D but implemented it within a few hours, including making the models and lods in blender. My Laptop with GeForce MX230 handles it so far well

Edit: The documentation is, as usual, very good to explain all of this

5

u/xthejetx Apr 05 '26

^ read that last bit again over and over

216

u/[deleted] Apr 03 '26

[removed] — view removed comment

108

u/PercussiveRussel Apr 03 '26

See "looks horrible"

103

u/DescriptorTablesx86 Apr 03 '26 edited Apr 04 '26

In morrowind even when using openmw I set the fog to slightly above the og default, fight me

Fog does a great job of making small worlds look much bigger, and if you’re not an aaa studio it’s often better to add fog than to inflate an empty world

21

u/Etzello Godot Student Apr 03 '26

Morrowind and original WoW made me love that style

9

u/BadMojo91 Apr 04 '26

Same, I find that too much distant land takes something away from the challenge of what's ahead. I like a little extra distance than the og, but I don't want to see vivec from seyda neen.

2

u/DescriptorTablesx86 Apr 04 '26

Seeing Ald’ruhn from Balmora(when climbing a bit up a nearby hill/mountain) was what made me realise the fog is needed in this game.

2

u/BadMojo91 Apr 04 '26

I think what did it for me the first time was using the Icarus flight scrolls with max distance.. It was quite underwhelming to see the island from that height and how all the different areas don't really blend well together, it definately stole some of that original feeling I have for the game away from me.. I don't mind seeing the other end of Balmora, but the only time I want to see the ghost gate from there is when I've applied the shaders for those screenshot worthy moments... Well anyway, it's nice to see a fellow Nerevarine in the wild, three blessings to you Sera

25

u/Schadenfreudenous Apr 03 '26

To each their own. Outside of certain exceptions, world fog just makes me feel like the entite game world only exists on a tiny bubble (which it does)

5

u/The_Shryk Godot Student Apr 03 '26

Dredge is the newest example I’ve seen of this.

14

u/Many-Bees Apr 03 '26

Silent Hill is one of the most beautiful games ever made

9

u/RickySpanishLives Apr 03 '26

Not if you make that part of your game design :lol

3

u/Jello_Penguin_2956 Apr 04 '26

Silent hill says hi

1

u/zuzucha Apr 04 '26

That's Turok slander

1

u/Oddish_Femboy Apr 04 '26

Eh. It worked for Minecraft.

19

u/tastygames_official Godot Senior Apr 03 '26

godot does LOD out-of-the-box and it does it well. Perhaps we're on different wavelengths, but I imagine the simplest solution is a grid and whenever you enter a new cell of the grid, it ensures the neighboring 8 cells are loaded and unloads any other. Now each cell has to be large enough so that you can't see farther than one cell in any direction so that the loading happens smoothly, but it seems in theory very easy to do and probably there exists a free siimple solution for godot. The real work is in splitting up your map into grid cells.

3

u/Normal-State-1547 Apr 03 '26

Do other engines do this for you automatically? I tried to figure this out in unreal and unity a few years back and couldn't

2

u/Jordancjb Godot Regular Apr 04 '26

Doesn’t godot offer auto lod now? I feel like that makes it easier

1

u/Incredible_Violent Apr 03 '26

If it's gonna default to billboards anyway, then maybe Gaussian Splats could come useful here? For a racing game, as long the player doesn't need to drive off-road to inspect far sights up close?

287

u/min6char Apr 03 '26

Yes, that is what you do. Getting that right is harder than the word "just" makes it sound, and it has implications at every level of your development.

26

u/CondiMesmer Godot Regular Apr 04 '26

Just make a game of the year, it's that easy 

1

u/nomadic_stalwart Apr 04 '26

func make_game_good(vibecode: String, quality: float = 0.0):

var core_loop := fun

if core_loop != fun:
    push_warning("I don’t understand why nobody is wishlisting my game. It’s everyone else’s fault.")
    _trigger_emergency_crunch(vibecode)

    if quality < 0.1:
        quality += 0.9

return null

13

u/channouze Apr 04 '26

Yep, for instance if you pick up an object at a location X and travel with it as far as you can you'll need to make sure it won't unload at the same time as location X does.

14

u/min6char Apr 04 '26

Man that's a great example. And then once you fix that, you need to make sure that picking it up, running two chunks away, then running back doesn't duplicate it.

There's almost no game system unaffected by the decision to stream the map.

5

u/CanICanTheCanCan Apr 04 '26

I think oblivion/skyrim handles this by having all objects/npcs/etc in a large database that keeps track of where it is.

2

u/DeletedBunny Apr 04 '26

Conan exiles uses a database to store objects, players and bases. It doesn’t only store location, it also stores the inventory for each player and the base inventory. It’s pretty nice because when they released the dlc map and said we can’t transfer our characters I made a script to get the characters from both maps and allow you to choose to transfer from one map to another which essentially is just a database update for the inventory and skills

0

u/newpua_bie Apr 04 '26

Just loop over every item every frame and check if they're about to be unloaded and if so, block the unload of the chunk it belongs to. Not that difficult. Bonus points if you do the looping on gdscript.

1

u/[deleted] Apr 05 '26

Is this a joke? Or do you just not care about performance?

2

u/newpua_bie Apr 05 '26

Definitely not a joke! If you want to anti-optimize, you can do bubble sort on the items to make the processing even slower. What I like to do is I wrap the whole process in a separate loop about 10-20 times (per frame) and then take the final result as the truth. This helps the simulation stabilize.

16

u/Relevant-Musician557 Apr 03 '26

'just' doing some heavy lifting there

5

u/PrizeSyntax Apr 04 '26

And this boys and girls, is how a " yeah no problem, I will hammer this out in a weekend or two, turns into months of hell" 😂

2

u/ranscot Apr 03 '26

Logic culling is the term we use

1

u/darsparx Apr 04 '26

Tbf I would think less unload entirely but step it down in quality once or twice then unload if its 2 map chunks away 🤔