So I am using world composition and level streaming, once a connected client reaches the edge of the server’s loaded levels, the client falls through the map as if no level is loaded. The client streams levels in correctly. Is there any known fix for this?
The level needs to be loaded on the server.
Thank you for your reply, does that mean its just impossible without having the hosting player load all of the tiles? The problem is the map size, with all tiles loaded performance is not great. is there a way for me to force the tiles to load as the client streams them in?
A trick I did, place a plane under the spawn point, make it and untick “Is Spatially Loaded” for this plane and finally make it hidden in game.
your character will collide with it and you player will stay on the ground.
Maybe I don’t completely understand, do you mean I would add the plane to the character BP and the plane would follow the character around at their feet?
I had wondered about this too, I’ve already got the terrain in the form of lower poly static meshes, but we’re talking 400 tiles @ a size of 1009x1009. what if I placed these in alignment with the terrain and enabled collision? I would prefer if the collision was as precise as possible. Thank you for your reply.
Adding a plane is not a good fix. The problem is that because the level is not loaded on the server the player falls through the geometry that is visible on the client. You just need to make sure the level is loaded on the server too.
You need to place that plane outside the player, where normaly the player spawn spot, on the terrain. this is a rapid fix and it’s work for me.
the other solution for this is to desactivate the gravity of your character or set it to 0 , than create a linetrace and detect if it’s collide with worldstatic. If so you re-enable the gravity.
The only way I understand how to make sure a level is loaded on the server is to not use level streaming, or set the streaming distance to 2,000,000. But then I have the issue of having all 400 tiles loaded and performance suffers.
Is there a way from blueprint to make sure the server loads the level?
It’s been a long time since I’ve used world composition. Unfortunately I do not remember the specifics of how to set everything up.
If there is an event that triggers when a tile is loaded/unloaded, I could probably figure out how to make it work… thank you for your help
So same issue… …4.26.2, level streaming, multiplayer, world composition and listener server with 1 of the 4 players as the host.
My conclusion was that the world composition level streaming is broken in that, as people have pointed out, the server/host only loads level from the server/host perspective. This means clients that are not on levels which the server/host as loaded do not have those levels loaded on the server. This causes things like falling thru the terrain levels and levels with no collisions, etc.
My solution was to create my own level streaming code. I placed this code in the game state. In addition, I had to assign all streaming levels to “OnDemand” in the Levels window “Assign To Layer”.
This solved the issue described; however, my streaming code is too slow at startup and I still have an issue in PIE where the client streaming levels are not loading.
My clients are generating the following…
LogLevel: Warning: Failed to find streaming level object associated with ‘Encounter8’
My host/server load the “Ecounter8” fine. If I run the game in “Standalone Game”, or compiled, the clients load their levels fine. It is just PIE. I assume the issue is with “Load Stream Level (By Name)”. There is a “Level Name” input of type “Name”; however, what name is PIE expecting that other running modes do not have to specify???
I just figured it out!
Turns out atleast one level, I tested 4, has to have the fully qualified path to the level for PIE and “Load Stream Level (By Name)” to find the levels from the client perspective.
Thus, I claim, the 4.26.2 Levels tab/functionality is broken in some way in that all of the levels are not fully qualified which will cause an issue with PIE.
So, in addition to having to make your own level streamer, I claim you need to use fully qualified paths to your levels such that PIE will work correctly for your clients.
I wasn’t sure if this was a ‘bug’ or a ‘feature’, but I worked around this particular issue by leveraging the Shaderworld plugin for collision generations, then used the heightmap data of my level to create a brush that overlays the collision just above the level streamed landscapes.
)(@&#$^@(*&#
So… …I got Git working on my development computer and PIE was working great until today. Some change was made to my persistent level which cause PIE level streaming to clients to become non-functional. What!!! I tried to do a “Source Control → Diff Against Repo” and it returned nothing. Also what!!! I reverted whatever changed and PIE worked again.
So, I no longer believe qualified names for stream levels fixes this issue…
…back to the its a bug/feature theory…