2D Isometric vs 3D Isometric

Started by
5 comments, last by Jungletoe 12 years ago
I didn't know which section to post this in, but I think this would be most suitable since I don't have the general direction of my game picked out AND I also know close to nothing about isometric. Basically, my team and I have already paid an experienced networking programmer to create the base engine for us. The engine's client uses 2D OpenGL and freeglut. The engine is top-down already, but he said that it could possibly be made into isometric.

Anyways, I was wondering whether it is better to use 2D isometric in OpenGL or use a 3D projection. My personal experience stems purely from 2D SDL (I've created many small-scale 2D topdown games using it). I've tried out OpenGL and 3D before and it didn't go so well because of all the complexity with texturing, lighting, etc. I feel like using a 3D projection, which is apparently "easier" to implement, but I feel that it will be overwhelming for a 1 man programming team. I talked to a Computer Science PhD about the subject and he said that 3D would be the more viable choice because it would allow for more flexability, yet very little is written on the subject. 3D also seems a bit pointless considering that I won't use models, but rather billboards.

I have a few questions:
-What are the advantages of using 3D besides lighting, shadows, and reflections?
-Is 2D or 3D more desirable and easy for a project which should have the same graphics style as this?
-What major limitations will I face if I use 2D? How much will the rendering order be a pain for me?
-Won't 2D be better since I won't be using models?
-Will collision detection be easier with 3D or 2D?

Note:
I won't be using a Z-axis at all. Everything will exist on a single tiled plane. The only "lighting" I will use will be a shadowless night/day system and a torch lighting system (which I guess could be accomplished in 2D with an alpha channel).
Advertisement
There have been a few threads about that in the past. Most seemed to converge on ordering being a real pain to the point it basically zeroes-out the benefit of an easier 2D model. There's no such thing around it: if you need to simulate 3D, you're better not simulate it at all in the first place.


  1. What are the advantages of using 3D besides lighting, shadows, and reflections?
  2. Is 2D or 3D more desirable and easy for a project which should have the same graphics style as this?
  3. [s]What major limitations will I face if I use 2D? How much will the rendering order be a pain for me?[/s]
  4. Won't 2D be better since I won't be using models?
  5. Will collision detection be easier with 3D or 2D?


  1. Main advantage in your case: zbuffer solves visibility for you. No messing up with draw order.
  2. I would still do 3D. Draworder is still something I don't figure out. Billboarding - when required - can be somewhat problematic but I'd rather do that than messing up with draw orders.
  3. Not answered on purpose. Too similar to other questions.
  4. Pure 2D is possibly better. Unfortunately, isometric is not pure 2D. In that case, you'll really want to use models anyway.
  5. Of course it will be easier in 2D. Keep in mind nobody forbids to use a 2D collision representation with a 3D isometric or somewhat-3D visualization.

I won't be using a Z-axis at all.
I'm not sold on that. The link you provided has height for sure.

Previously "Krohm"


There have been a few threads about that in the past. Most seemed to converge on ordering being a real pain to the point it basically zeroes-out the benefit of an easier 2D model. There's no such thing around it: if you need to simulate 3D, you're better not simulate it at all in the first place.

[quote name='Jungletoe' timestamp='1334203894' post='4930481']

  1. What are the advantages of using 3D besides lighting, shadows, and reflections?
  2. Is 2D or 3D more desirable and easy for a project which should have the same graphics style as this?
  3. [s]What major limitations will I face if I use 2D? How much will the rendering order be a pain for me?[/s]
  4. Won't 2D be better since I won't be using models?
  5. Will collision detection be easier with 3D or 2D?


  1. Main advantage in your case: zbuffer solves visibility for you. No messing up with draw order.
  2. I would still do 3D. Draworder is still something I don't figure out. Billboarding - when required - can be somewhat problematic but I'd rather do that than messing up with draw orders.
  3. Not answered on purpose. Too similar to other questions.
  4. Pure 2D is possibly better. Unfortunately, isometric is not pure 2D. In that case, you'll really want to use models anyway.
  5. Of course it will be easier in 2D. Keep in mind nobody forbids to use a 2D collision representation with a 3D isometric or somewhat-3D visualization.

I won't be using a Z-axis at all.
I'm not sold on that. The link you provided has height for sure.
[/quote]

Hmm... I guess you're right about simulating 3D versus actually doing it. That linked game I showed actually takes place on one plane without any real Z-axis. It does, however, have a wireframe mode so I know it's 3D.

I'd still like to have a game that's not pure 3D (model loading, Z-axises, and shading are a bane of my existance) but rather a game that looks 2D isometric while using 3D to aid in the rendering process. The problem I've always faced with 3D is lack of documentation. I honestly have no idea where a beginner into 3D should start. Also, since I don't want this game to be actual pure 3D, where does that leave me?
In this day and age, the only reason to go with pure 2D for an isometric is if the platform doesn't support 3D. Using 3D, even if you continue to use textured billboard sprites rather than actual models, opens up so many options and possible effects. Not to mention, as was already noted by Krohm, it fixes the draw order which in pure 2D isometric has always been problematic and riddled with edge cases. Doing basic 3D is scarcely more difficult than 2D anyway. As far as learning, you might check out the NeHe tutorials for OpenGL. They are re-tooling everything for more current GL, I understand, but even their legacy tutorials might be good to learn the basics.
I think it depends a little bit on what you want to do with your isometric projections. If you have a flat plane like that it isn't too difficult, but if you start to add height it can get very complex very quickly. I tried making an isometric engine at one point using pure SDL. Eventually I came to the conclusion that if I wanted to accomplish what I was aiming towards all my sprites would have to be the same size (although I could have objects composed of multiple sprites); otherwise, there would always be a corner case where a sprite would overlap part of another sprite incorrectly. Granted, I may have simply been going about it the wrong way, but it is nevertheless complicated.

If I were to work on it again today I would use simple textured quads in a 3d rendering environment for an isometric sprite engine.

I think it depends a little bit on what you want to do with your isometric projections. If you have a flat plane like that it isn't too difficult, but if you start to add height it can get very complex very quickly. I tried making an isometric engine at one point using pure SDL. Eventually I came to the conclusion that if I wanted to accomplish what I was aiming towards all my sprites would have to be the same size (although I could have objects composed of multiple sprites); otherwise, there would always be a corner case where a sprite would overlap part of another sprite incorrectly. Granted, I may have simply been going about it the wrong way, but it is nevertheless complicated.


That's the thing. Everything will exist on a single plane with same-sized sprites.

I'm pretty sure that I'll use 3D at this point. I still have no idea how I'll pull it off or how complicated it will be, but oh well. I haven't even received the base engine from my friend yet, so I guess a lot of this depends on how that engine works. All I know about it is that he's rendering everything in 2D OpenGL to a single plane. I don't even know if it will be possible to make it 3D since he's using top-down 2D rendering atm. I'll probably have to end up changing EVERYTHING around if I want it to be 3D, including the server.
Okay, I talked to the people who make mods on that game I just posted and here were their replies:


It's using openGL as 2D but openGL is drawing everything as 3D textures with locked z coordinate. Something like that.
[/quote]


I believe most everything is handled server side. This is evident when a lag spike hits and you keep walking right through cliffs, walls, houses, etc. The client only renders and catches input. I think the picking algorithms are even handled server side. This means you're going to have to ask the developers about specific algorithms used.
[/quote]

This topic is closed to new replies.

Advertisement