2D Layered Perspective?

Started by
5 comments, last by szecs 11 years, 10 months ago
Alright, I'm not even sure if my title makes any sense, but here goes. What I want to know is how games like The Legend of Zelda: A Link to the Past would make it seem that a certain area is higher or lower than another. There would be certain areas where you'd appear to jump down, but that clearly isn't possible in 2D as there is no depth, so there has to be some kind a layer based movement. My question is how would I make multiple layers that give the perspective of 3D without it being a 3D environment? (I personally use SDL and OpenGL if that makes any difference)
Advertisement
Actually, such pseudo-3D movement does not require multiple layers.

A cliff where you can jump in Zelda, for example, is merely a part of the map where you can move (the top of the cliff, with grass), and below it is a part of the map (with stone texture) where you can't move. Now if the player moves to the edge, you take movement away from the player, manually move the figure down until you hit a free spot (more grass, for example) and give movement control back to the player.

Of course, such pseudo-3D effects can be made better with a layer-based system. You could tie the "camera" to the layer where you currently move and make all layers above that appear slightly bigger than normal (because they are "closer to the camera").

2D is always about faking stuff, and there is not one golden way to do that.
Get on my horseI'll take you round the universeAnd all the other places tooI think you'll find that the universePretty much covers everythingShut up woman get on my horse
He pretty much covered most of it, but aside from what he said, casting a shadow on the surface below will trick the brain into assuming there is depth in 2D
I have the same problem now, falling down from the edge right in front of the camera is quite obvious now, but what if we jump of the edge from left or right? layering.png

BTW. If this map makes no sense please let me know.
Do you want to calculate how many tiles to fall? It depends on how you handle/store the maps, and slopes.

The map makes no sense, because the left cliff implies a slope that has a certain (we can't see) height and a length of 3+a portion of tiles. The the one right next to it implies an almost zero length slope.
Well, yes. Which of these arrows would be correct way to fall (from the arrows on the left). I believe the one reaching the bottom but wanted to make sure.
I think you have to mark the slopes, or the cliffs (more probably the slopes) somehow in your map data.

Which is the correct on the left side? Neither. The character would fall only a little, since it near to the starting point of the slope.
_______________________

The nearer the character to the cliff, the bigger it should fall. If it's at the cliff, it has to fall exactly the same amount as the height of the cliff. If it's at the starting point of the slope, it has to fall zero. Then linearly interpolate between the two values.


You can calculate the position of the character after jumping:

[font=courier new,courier,monospace]DistanceToFall = CharacterDistanceFromSlopeStartingPoint * HeightOfSlope/LengthOfSlope;[/font]

See image:
[attachment=9594:slope_and_cliff.JPG]

As you can see, you can't have both green and red slopes at the same place, so you can't just draw whatever cliffs.

You have to make a meaningful map, because with pseudo 3D, it is possible to make impossible spatial structures.
So you have to make sure that the cliffs and slopes make sense. Maybe the map editor tool for this task has to be really 3D. Or plan very carefully.

I still don't know how would I store the slopes. Maybe you don't have to, because you have those "edge of cliff" tiles and you only have to count them for getting the length.


I hope the post makes sense.

This topic is closed to new replies.

Advertisement