How much "harder" is 3D than 2D in terms of:
- Amount/complexity of the code
- Level of math skills required
- Time involved in making art assets
Original title: How hard is 3D game development versus 2D?
3D is an order of magnitude harder than 2D:
Lots harder. If you're not comfortable making a 2D game, you will REALLY not like what it takes to make a 3D game.
The good news: 99% of the time, you don't really need it. Think of any 3D game you can. Take the camera, fix it on the ceiling looking down so that you're now looking at a 2D plane. Doom becomes Gauntlet. Civ IV becomes Civ I. Metal Gear Solid becomes the original Metal Gear. None of these games are "bad" just because they're 2D; they are perfectly playable and generally have much of the same gameplay.
Largely, 3D is going to introduce more difficulties than simplifications. But I just feel like adding a few things that might actually be easier in a 3D game:
This is a highly subjective question, since the answer depends on personal preference/experience/knowledge/intelligence.
I will try to answer neutrally, but since I am only a programmer and not an artist i can only hypothesize for the last point.
Code complexity should not be so very different, except in maths and maybe rendering/physics. Game Logic isn't so much different if you take a healthy level of abstraction (not too much - you're trying to make a game not an engine, at least I guess from your question.) Obviously its a lot easier to calculate movement in 2D because you have limited perspective. Physics is WAY more difficult when dealing in three axes. Also, loading a Sprite from a Bitmap is a lot easier than loading a 3D Model (and possibly texturing).
Maths is more complicated for 3D (a no-brainer really - quaternions, vectors, matrices. 'nuff said)
For art, I think it must be more difficult for 3D too, since you need to create art that looks good from every possible viewing angle (or at least a wide range), and you usually want to texture things too. Animating a mesh is no picnic to get realistic, and getting the texture to play along isn't either.
The other thing to consider ... with a 3D game you probably want to consider using a pre-existing engine and concentrate on making a game not an engine. It can go someway to reducing the time and difficulty taken in a 3D game (as excellently identified by munificent).
It's much easier to build a 2D game ground up. But obviously you can (and should consider) using sprite, sound, portability libraries as well. No point in reinventing the wheel except for education purposes.
Seems obvious - but I thought it was worth saying.
Allow me to offer one interesting consideration for mobile devices where 2D performance can actually lag behind low poly 3d models:
1) Fill rate can cause quite a bit of performance trouble when dealing with many sprites on screen at a given time.
2) Texture memory requirements for a fully fleshed out 2D game are actually much higher if you're using frame based animation. Each and every single character frame blows out your total texture budget in a linear way. This means that if you use simple flipbook animation you actually have a more constricted animation budget than you would with skeleton based 3D animation.
Toolkits like Spine help level this playing field a bit by creating 2d deformations of a texture.
So, considering this, and the ease of access of Unity and UDK which both extract much of the complexity of game development that existed years ago for 3D, the answer is not so straight forward.
It depends on game developer. The time consuming part is making game assets. If you feel it is easier for you to make these assets with illustrator and Photoshop then 2D is easier for you, but if you know 3D modeling probably you agree with me that 3D is much easier than 2D.
Regarding animation, definitely 3D is easier and faster and easier to manage.
For example while in 3D you can make all of animations for a character in a few hours in one scene, in 2d you have to draw the character from scratch for any activity he is suppose to do and save many files, it takes days in 2D vs. hours in 3D.
Also if you change something, you have to redo it all in 2D, but you don't have to change everything for example if you decide your character should not have a hat. You don't have to redo all the animation you just delete the hat in 3D.
If you have humanoid characters, there are Thousands of free mo-cap animations. Most of the time you don't need to make any animation for your game.
Regarding complexity and programming there is no difference.
But you should know 3D well, otherwise you may end up in game engine your animation is different from your 3D app or your character head is rotating in reverse direction and you don't know how to solve the problem, and some other glitches.
Also you should be familiar with low poly modeling for game and how to do texturing for game, it is different from modeling and texturing for animation.
By the way Contrary to popular belief 3D is less hardware demanding for mobile devices .