Hi guys, this question will probably be very basic. I’m not even sure I ask in the right part of the forum, because it kinda touches multiple aspects. But, here goes.
I’m trying to create a dynamic world with multiple “levels” - multiple layers one above another, that are connected at a few points so the players can go through from one to another. The levels should be based on a grid system, with tiles having attributes like traversability etc. In one moment, only one of these levels should be visible to the player (and camera), but all of them should still continue to simulate the world.
Now, I’m not asking about the dynamic generation or other algorithms. I’m very experienced programmer, I have implemented many complex algorithms including some world generation. I am completely new to Unreal Engine though. And that’s where my questions lead.
I noticed that there is something called “Level”, which looks basically like a tree of Actors. You also have that Actor, that also consists of a tree of Meshes. There is also a Scene, that looks very similar to Level, grouping some Actors together to a tree that can be manipulated as a whole. Feel free to correct me if I’m wrong.
Now, the actual questions:
Is it necessary to have an instance of the Level class in your game? Does Unreal Engine require it?
If you would try to generate a world, would you use the Level class for it? Would you start with an empty Level and attach Actors to it during the generation process?
3} What class is right for one level of the dynamically generated world, given that all should receive Ticks, but only one should be visible at a given moment? A Scene? Something else?
Given that the world should be generated on the fly, it will need to be split into chunks that load and generate on their own. What is the preferred class for such a chunk? Scene again, given that it groups some Actors (obstacles, etc.) together? Or maybe an Actor?
What is the actual difference between Level, Scene and Actor, considering they all look to be just a tree of other objects?
I can see you’ve phrased your question with as much detail as you can, but in terms of being able to provide real help, it’s incredibly vague.
Level = the thing in the viewport
Actor = something that goes in a level
Scene = no idea ( and I’ve made a lot of levels ).
In order of reducing complexity you have something like:
Multi level voxel terrain generaton ( aka Minecraft ): learn C++ and spend the next year making and scapping concepts or buy a plugin. Yes, people develop something that looks like it’s in the right ballpark in 24 hrs, but unless they already knew a lot about UE, it wont be any use.
World composition with level streaming. You only need composition if it’s going to be on a massive scale. Level streaming is way of not having to hold everything in memory at once. You can cause the streaming / composition to apply across the terrain as well as between terrains.
Just level streaming. Same as before but without the composition. Level stream can be triggered by volumes in your levels, it can also be controller by blueprint. So you could have everything in one big level using streaming volumes. Yes, all landscapes in all directions both across and up / down.
Separate levels where you make each landscape by hand and the player moves from one level to another. You can give them the impression this happens ‘continusously’, ie without interruption. ( Still streaming here ).
Getting much smaller now, but still very playable. You can have more than one landscape in a given level. Landscapes can also have holes. There’s nothing to stop you making a multi landscape area in a single level file ( map ).
Probably the lowest common demoninator, would be just making a standard landscape in a single level. Then make another in another level, and so on. Then move from one to another with ‘open level’. Could still be perfectly usable if the levels and pretty small. Really depends on your needs.
Thank you for the answer, it gave me a lot to go through (tried to look for tutorials on level streaming and world composition).
Neither actually look like what I need.
So, let me just ask much more specific question: If you would want to create a game that’s set inside a multi-story building, where you (as the player) always see just one floor (and you can switch between them), but your pawns would be able to traverse from one floor to another by stairs, how would you build such a world (in terms of used Unreal Engine building blocks and their structure) and what would you pick as a representation for the levels?