March 24th, 2023 - Map Tiles vs. World Partition System

March 24th, 2023

Map Tiles vs. World Partition System

https://www.youtube.com/watch?v=dY__x2dq7Sk&t=527

Suggested Wiki Refrence Code

Topics

    Transcription

    1. Jace

      the answer is yes we will and it makes sense to okay so world petition system is something that helps with how levels stream in and are really good for open world games satisfactory is an open world game and so we have investigated looked into it and we're going to be using it so currently in the the version of satisfactory that y'all are playing right now um uh in unreal engine four uh the map has been split up in a seven by six grid i believe of tiles right and

      The map is really big, and so a 7x6 grid of tiles means those tiles are massive.

      They're absolutely massive.

      And you all know, as players of the game, that when you approach the bounds of a tile, there's a small hitch, and we have to load in the entire next tile, so that

      yeah so that you can move through that tile right now this is really inefficient because if you think about it we're actually loading in a whole bunch of assets that aren't actually relevant to you right so when you walk up to a tile and you're at the front of a tile we're loading literally everything including the stuff at the far side of the tile that you can't even see or interact with like that's irrelevant to you right so this is fairly inefficient we're loading so many assets that don't matter to you at that point we're doing it all in one go

      and so there's a hitch.

      And this also means that without our workflow, the way that that worked before was that all of those assets that we put down, the actors, right, that we put down in the world on those tiles, they were tied to the tile, right?

      So if we ever wanted to render those things, trigger them, anything, we had to load the entire tile, and there was no way to work with those actors independent of the tile.

      However, now with the world petition system in Unreal Engine 5, we've moved away from the actors on the tiles being tied to the tile to becoming just like a file per actor thing.

      So the actors are actually independent of tiles and they're actually, if anything, they're just tied to like the location in the world that they are.

      And so, like, when we're developing the game, every actor on the map has a file in the file system, and so we can sort of, this gives us more sort of flexibility in how we work and do things.

      However, that won't be the case for you guys.

      When the game gets cooked and built, everything will be sort of cooked down to what it needs to be, right?

      Now, what this means is if those actors aren't tied to the tile anymore, and that instead they're tied to a location, it means that we have a much more flexible system now to actually break up

      the map into smaller tile chunks, and we can experiment with those tile chunks, and we can quickly and easily decide, well, what tile size and tile chunk setup is most efficient for satisfactory.

      Before, this was virtually impossible because to change

      a tile size, we had to rework a whole bunch of stuff and move assets and all this, we had to manually do that, and then test whether or not it works or not, and then if it doesn't, we would have to, like, do all of it again, and then test if it works.

      Now, we can just very quickly, by changing some parameters, affect how big the tile size is, it doesn't affect the actors that are out on the map, and we can just more quickly tune our tiling system and world streaming system to be what's most effective for satisfactory.

      Another thing that helps us with is, previously, whenever we wanted to make any changes to any part of the world, we would have to check out an entire tile, change those actors, and then submit those tiles, which meant large chunks of the map couldn't be worked on simultaneously, and they ran into issues.

      There was a lot of, like, we needed to roll back fixes and merge things.

      There's people on different branches.

      It was a complete nightmare, and this gets rid of all of that for us.

      So this helps us so much in development, and the result will be a much smoother experience for you guys, we believe.

      And so how do these tweaks kind of work, and how would this tech sort of work?

      If we can find a sweet spot when it comes to tile size, it means that we can find a way to stream in only the stuff that's relevant to you, wherever you are on the map, which means we will stream in parts of the map more often, but it'll be less data, so the expectation or the intention is that there will be no hitches, or smaller hitches, hopefully no hitches, since less data needs to be loaded in.

      If we finally tune

      what loads in and when.

      And if we're really careful with the way we do our loading, our level of details with models and things like that, our goal that we're striving for is potentially to have the whole world landscape visible if you're like really high up and looking down, as opposed to just these big tiles that are missing if you get rid of the fog.

      And it means we can maybe even lighten the fog so that we can allow you to see further and things like that.

      So this feature is huge and will make a huge impact on the player experience.

      It'll help us a bunch with development.

      Oh, and it might even fix...

      There was like a performance issue that some people had where if they happen to build their factories near the edges of tiles,

      This would just create certain situations where basically things would hitch and stutter more often and would be very sort of inefficient.

      And this sort of does away with that issue as well.

      And there was no way for people to know if they were near the edge of a tile or not.

      So this feature is honestly quite a godsend for us and for Satisfactory and I think everyone is going to benefit so much from it.

      This is the thing that I'm most excited about personally.