Hello! I’m trying to make an open world game where you fly around on a ship above clouds and descend onto the surface for short periods of time. I thought a good way of doing this would be to have your ship not actually move and just have the rest of the world (creatures in the sky, floating islands, etc) orient themselves around you. Then a small portion of the map would be loaded when you go on to the surface depending on where you’ve “moved” to.
I feel like the first step in creating this system is having the code to orient the world around the ship so I can create its movement. How would I do this?
Or, you could try the tiny world approach–an actual world built to whatever size you wish and just rotate your camera (and ship) around its origin. See below:
That first idea might actually work. There won’t be much in the clouds, just floating island and such like I mentioned, so it wouldn’t be inconceivable to have that all in one actor. The problem would be that I want there to be flying creatures with pretty complex AIs. Those couldn’t also exist within that actor could they?
Would it be crazy to suggest that everything above the clouds just has an event or interface or whatever which tells it if any movement is being applied to your ship and to use the ship’s orientation to know which direction to apply that movement? So no sort of orbiting has to be calculated because your ship would actually be turning, and just the translation would be done by the environment.
Technically yes, you can have an actor within another. See image below. I’ve only toyed with it enough to know it didn’t work for my application and that the child actor is subject to the BP’s movement in simulation mode. I can only presume this would mean that if you rotate the ‘BP_planet’ with input actions, the creatures will likely rotate (orbit) as well. Physics changes things a bit, but they will receive impulses to move prior to physics kicking in.
Your idea about sky movement is feasible. I would suggest thinking of the sky, and the entire system actually, as small rather than big. Image everything is the size of a ball in your hands, and the camera is just really close, giving the illusion of being far away from something large. Materials/textures will be key.
The sky sphere can be as small as you need it to be and can fit in an actor, though I guess you’d maybe have to invert it to see the clouds from the outside (never tried). To see what I mean find the sky sphere in your editor, select it, and press ‘F’ to zoom focus it. You may have to change your camera movement speed to navigate around it, see image below:
Additionally, the creatures and/or sky can be separate actors, which share a common origin with your planet, simply being spawned at the same time. You can just manage their mesh offsets, within their BPs, from the spawn point to ensure that they don’t overlap collisions/meshes–kind of like how the follow camera is always offset from its BP’s origin.
Wow that all sounds great thank you! I’ll do some experimenting to see which solution works the best but I’m certain one of these will do it. Thanks again for the help!