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?

4 Answers
4

It depends on how strong you are with mathematics,and3D 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.

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.

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.
–
boboboboAug 17 '11 at 3:40

3

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

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.

+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 RichardsonAug 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 BuckJun 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.