0
\$\begingroup\$

Let's say I have a game that allows the player completely free, open world flight, and the world itself is a bunch of floating islands. This creates some problems with flying too low, such as reaching the fake cloud "floor", being stuck without being able to get back up, and so on. How can I prevent this without introducing some jarring invisible "floor" that repels the player if he slams into it?

I thought about having some sort of in-universe wind near the "bottom" that might decelerate the player and then push him/her back up, but I'd like to hear some more ideas that might be less artificial.

\$\endgroup\$
3
\$\begingroup\$

The wind that pushes the player back into the navigation volume is a very good solution. Bespoke games like Sky and Journey by Thatgamecompany are examples where it is used nicely. Alternatively to that, you could have the player being caught by some flying something (like an eagle) to be taken back on track or you could have a lightning suddenly strike and teleport the player. Depending on your game’s context it might even make sense to have an entity pop out of the clouds and smack the player with an uppercut on the snout with a strong kick back. In most game styles I would prefer the wind but the context is what opens up possibilities.

\$\endgroup\$
1
\$\begingroup\$

You could take the Super Mario 64 aproach where if the player hasn’t collected enough stars he can ascend a stairway forever without making progress. In your case the player could fly down for as long as he wants and still remain at the same height so when he finally decides to fly up it is a short way to the island’s height.

\$\endgroup\$
0
\$\begingroup\$

In Star Fox 64 your ship would just stop moving on the Y axis when it was at the top or bottom of the playable space. I know you said this would appear to be "jarring", but there is a way to hide it.

When your player is approaching the boundary, the skybox or whatever backdrop that lies beyond is probably significantly far away (or static) that you no longer have a reference point in view to see if you're still moving on the Y axis. As long as there are no nearby objects from the level in sight, you can maintain the illusion that the player is still flying up or down. (Make sure that cloud floor appears far away from the boundary!) You can also reduce the FOV so that you can't see as many objects beside your character. Pull the camera back and reduce FOV (zoom in) and you will find that this trick is easier to pull off while the player is climbing or diving (looking straight up or down).

Also, if your game involves airplanes, you can constrain the min and max pitch of the plane based on the absolute Y position so that it is always flying level at the min and max Y values. Basically start lerping the (min or max) pitch between the player's input and 0° while in some region close to the Y boundary. That way there is a gradual "swoop" to level out the character before they go out of bounds, which won't appear jarring when combined with a hard limit on the Y position.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.