Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

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?

share|improve this question

5 Answers 5

up vote 107 down vote accepted

3D is an order of magnitude harder than 2D:

Programming:

  • The math is significantly more complex for rendering, physics, collision, etc. Hope you like matrices and vectors!
  • Because of the previous point, good performance is much more difficult to attain. With today's hardware, you can make a nice-looking 2D game without having to think about performance at all beyond not being actively stupid. With 3D, you will have to do some optimization.
  • The data structures are much more complex. Because of the previous point, you'll need to think about culling, space partitioning, etc. all of which are more challenging then a simple "here's a list of everything in the level".
  • Animation is much more complicated. Animation in 2D is just a filmstrip of frames with possibly different positions for each frame. With 3D, you'll need to deal with separate animation assets, bones, skinning, etc.
  • The volume of data is much higher. You'll have to do intelligent resource management. Games ship with gigs of content, but consoles sure as hell don't have gigs of memory.
  • The pipelines are more complex to develop and maintain. You'll need code to get assets into your engine's preferred format. That code doesn't write itself.

Art:

  • The assets are, of course, much more complex. You'll need textures, models, rigs/skeletons, animation, etc. The tools are much more complex and expensive, and the skills to use them harder to find.
  • The set of skills needed is wider. Good animators aren't often good texture artists. Good lighters may not be good riggers.
  • The dependencies between the assets are more complex. With 2D, you can partition your assets across different artists cleanly: this guy does level one, this guy does enemies, etc. With 3D, the animation affects the rig which affects the skeleton which affects the model which affects the textures which affect the lighting... Your art team will have to coordinate carefully and constantly.
  • The technical limitations are more complex to deal with. With 2D it's basically "here's your palette and your max sprite size". With 3D, your artists will have to balance texture size (for multiple textures: specular, color, normal, etc.), polygon count, keyframe count, bone count, etc. The particulars of the engine will place random weird requirements on them ("Engine X blows up if you have more than 23 bones!").
  • Asset processing takes longer. Pipelines to convert 3D assets to game-ready format are complex, slow, and often buggy. This makes it take much longer for artists to see their changes in game, which slows them down.

Design:

  • User input is bitch. You have to deal with camera tracking, converting user input into the character's space intuitively, projecting 2D selections into world space, etc.
  • Levels are hard to author. Your level designers basically need the skills of a game designer and an architect. They have to take into account players getting lost, visibility, etc. when building levels.
  • Level physics is tedious to author. You'll have to check and recheck and recheck again to make sure there aren't gaps and bugs in the level physics where players can get stuck or fall through the world.
  • Tools are much harder. Most games need their own tools for authoring things like levels. Since the content is so much more complex, the tools are more work to create. That usually results in tools that are buggier, incomplete, and harder to use.
share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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:

  • Player customizations. Imagine if Team Fortress 2 were a 2D platformer with 20 animations for each class. Now, imagine your marketing director has suggested you add hats to the game. This would mean 20 new spritesheets for every class; and it would only expand if you decide to add other miscellaneous items. One company I worked for ran into this frustration.
  • Character movements. Rigging and animating is definitely not a simple task, but if your characters are complex, then it's eventually going to be an easier job than in 2D, where you'd be redrawing the character completely for each pose. Practically the first mark of excellence in any 2D game is how many times the creators were willing to redraw their characters for additional animation.
  • Finding an engine. I can make a simple platformer in less than one hour in 3D with no coding at all, but it might take a bit longer in 2D. You'll definitely find plenty of good 2D engines out there after some looking, but honestly nothing immediately comes to mind for me; few have hit their massive popularity the way Ogre3D or other 3D engines have. For 3D, there's UDK, Unity, and far more frameworks available. Part of this might be that the reduced complexity of 2D means that it's not so difficult for amateurs to just write their own, basing off of XNA. (Plus, some of the mentioned 3D engines can be made viable to create a 2D game)
share|improve this answer

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["                  <li><a href=\"//area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"//careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2015 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a> \r\n                with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2015.3.31.2417\r\n            </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-warning\">Game Development Stack Exchange works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\"\" class=\"dno\">"], "copyright__copyright__copyright": ["d by munificent).\n\nIt'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.\n\nSeems obvious - but I thought it was worth saying.\n\nshare|improve this answer\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}