Jump to content

View more

Image of the Day

#indiedev  #indiegame #screenshotsaturday https://t.co/IwVbswGrhe
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

Sign up now

2D Layered Perspective?

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 Spirrwell   Members   


Posted 20 June 2012 - 06:53 AM

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)

Edited by Spirrwell, 20 June 2012 - 06:54 AM.

#2 TheSHEEEP   Members   


Posted 20 June 2012 - 07:04 AM

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.

Edited by TheSHEEEP, 20 June 2012 - 07:07 AM.

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

#3 StillWorkingOnIt   Members   


Posted 20 June 2012 - 11:10 AM

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

Edited by StillWorkingOnIt, 20 June 2012 - 11:12 AM.

#4 Pic   Members   


Posted 21 June 2012 - 01:06 AM

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? Posted Image

BTW. If this map makes no sense please let me know.

#5 szecs   Members   


Posted 21 June 2012 - 02:29 AM

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.

Edited by szecs, 21 June 2012 - 02:40 AM.

#6 Pic   Members   


Posted 21 June 2012 - 02:33 AM

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.

#7 szecs   Members   


Posted 21 June 2012 - 02:47 AM

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:

DistanceToFall = CharacterDistanceFromSlopeStartingPoint * HeightOfSlope/LengthOfSlope;

See image:

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.

Edited by szecs, 21 June 2012 - 03:16 AM.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.