Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm an iPhone app developer. I want to get into iOS gaming. The question is-should I start with learning 2D like Cocos 2D or Corona SDK before learning 3D gaming like Unity? I'm more interested in 3D gaming, but do you think that knowing 2D gaming is a prerequisite to learning 3D development?

share|improve this question

closed as off-topic by Josh Petrie Mar 2 at 1:55

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions about "how to get started," "what to learn next," or "which technology to use" are discussion-oriented questions which involve answers that are either based on opinion, or which are all equally valid. Those kinds of questions are outside the scope of this site. Visit our help center for more information." – Josh Petrie
If this question can be reworded to fit the rules in the help center, please edit the question.

possible duplicate of What are the pros/cons of using a 3d engine for 2d games? – bummzack Aug 17 '11 at 6:02
Sorry, I think the given question is probably not a dupe of the one I linked. Although the answers cover a lot of the same ground. – bummzack Aug 17 '11 at 6:06
up vote 10 down vote accepted

It depends on how strong you are with mathematics, and 3D game programming concepts.

2D you can get by using only concepts of x,y positions and velocities (and adding and subtracting them - basically vectors) and 2D box collision.

In 3D, you have to worry about a lot more math: projection matrices, viewing matrices, frusta..

In addition, you have to interact with a much richer set of functions from the drawing API you're using, (just by virtue of the fact that you're doing 3D, so you have to learn a lot more functions that deal with 3D).

Microsoft XNA has excellent support for starting out in 2D, and makes rendering easy using SpriteBatch. As soon as you venture into 3D, you automatically have to learn VertexBuffer, or Model, and then comes ModelBones and everything else that goes with it.

You're best off starting 2D just because the concepts you need to grasp is less (2D sprites? A cakewalk!). After you have some experience under your belt, then you should be fine doing 3D.

share|improve this answer

The only fundamental difference between 2D and 3D game development is whether or not you use the 3rd axis. If you're using an engine like Unity you can just as easily make 2D games as 3D games by simply using an orthographic camera projection and sprites instead of models.

That being said, if you're not using an engine that does a lot of the 3D heavy lifting for you, it is a lot harder. See the answer to this question: What to consider when deciding on 2D vs 3D for a game?

What you should do is decide what game you want to make and the art and design will tell you if it needs to be 2D or 3D.

share|improve this answer
I think you're oversimplifying. 2D is hella easier because by throwing out that 3rd axis, there's much less to think about. Collision becomes simpler, discussing problems on paper is easier, and learning how to program a 2D game is easier than learning how to program a 3D game. – bobobobo Aug 17 '11 at 3:40
It is a simplification, but mainly what I was getting at is that 1) 2D or 3D doesn't matter for a large subset of things that you do in a game (UI flow, core mechanics, networking etc.), and 2) Using any robust middleware (particularly Unity) will do the vast majority of the math for you, hopefully allowing you to concentrate on the game logic itself. – Tetrad Aug 17 '11 at 6:12
Last sentence nails it. – Tim Holt Aug 17 '11 at 17:19

I agree with Tetrad that you should think about the art and design and that will lead you if it needs to be 2D or 3D. I also will say that it may be a good idea to create a 2D game first so that you won't have to think about the harder things that come along with 3D games. Also, one thing to realize is that the brain will process less information with 2D games which is what you want for a more casual experience.

If you look at most of the successful indie games over the passed 3 years, many of them were 2D.

So a company can be successful making just 2D games. The success of games comes from game mechanics, story, aesthetics, and technology. Otherwise known as the tetrad. I'm getting off topic so I digress.

share|improve this answer
+1 for that final paragraph because it emphasizes the importance of the quality of the content (such as the story) as a success trait -- some game builders seem to miss out on these other factors and focus only on the 3D aspects, but there are a lot of fans who do value the depth that a good story and a well thought-out background can bring to the playing field (regardless of the number of dimensions). – Randolf Richardson Aug 17 '11 at 4:15
While I agree with most of your statements, there were some excellent 2D games which could never has been considered casual, while your average 3d shooter is far less involved by comparison. – Edwin Buck Jun 21 '12 at 18:09

Keep in mind, it will be simpler for you to get 2D art assets to practice with. So while I don't think learning 2D game development is a prerequisite to learning 3D game development (either way the game code on top of the graphics code is pretty much the same) I would still recommend most beginners start with 2D games unless you already have a solid resource for 3D graphics (eg. you'll be learning alongside a buddy who is a 3D artist).

Code-wise, the difficulty depends on what you are trying to learn and what engine you will be using (and in particular if you will be writing your own engine). Low-level 3D graphics code is much more complicated than low-level 2D graphics code, but if you will be using an engine like Unity then you won't be writing low-level graphics code. The code for a 3D game built in that engine is no more complicated than the code for a 2D game. Indeed, it may be considerably less complicated, depending again on the specific engine you are talking about.

share|improve this answer

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