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.