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.

What pros or cons should a beginner be aware of when deciding between a 2d game engine (like Slick2D/Flixel/FlashPunk) and a 3d engine (like Unity) for 2d game development?

I am just getting started in indie game development, though I have dabbled a bit with Game Maker, Flash, and XNA in the past. I've heard a lot of positive things about Unity, and its cross-platform nature makes it appealing, but as I understand, it's a 3d engine at its core.

For a strictly 2d game, are there any compelling reasons to work with a 3d engine like Unity? Or would it just add unneeded complexity to my initial learning experience?

share|improve this question
    
Are you asking in the context of a purely 2D game in something like Unity (like sprites and 2D movement) or a 3D game with 2D gameplay (like with 3D assets but only moving on a single plane)? –  chaosTechnician Aug 10 '11 at 15:43
    
I have some friends that have worked with Unity to make a 2D game called Coypu Space Rumble. The initial 2D part was apparently quite tedious, I'll ask for more prescisions as to why. –  Jonathan Connell Aug 10 '11 at 15:58
    
Related: gamedev.stackexchange.com/questions/9557/… –  Tetrad Aug 10 '11 at 19:03
    
Define "3D engine"? Are we talking about something that covers gameplay, or just something that renders in 3D? –  Nicol Bolas Aug 10 '11 at 20:20
    
@chaosTechnician - The first one: purely 2D sprites, 2D movement, basically no real z-axis whatsoever (just a simple z-index to determine the sprite rendering order) –  mrohlf Aug 10 '11 at 20:47
show 1 more comment

4 Answers 4

up vote 11 down vote accepted

It depends on the game, but for the most part, it will be easier to make a strictly 2d game using an engine that is specifically designed for 2d.

Now for some of the pros and cons (some of these will be related to Unity specifically, some of them are more general)

Cons

  1. 3d engines are usually designed around game objects being 3d models (polygons and textures). While it's certainly possible to make a flat plane and apply a texture to it, you're actively working against the engine when you do that.

  2. Additionally, many 3d engines lack the ability to deal with sprite sheets (all frames of animation on one texture), because they expect animation to act on the model (though rigging and other methods), not the texture. Again, there's ways around this, but again, you're actively working against the engine to accomplish this.

  3. Added complexity. As mentioned in Josh Petrie's answer, 3d is a huge bit more complex than 2d, mostly in math and scene management. Moving objects and handling 3d space is tough, and if this is one of your first games, it's just going to be all that much harder. The good news: Unity abstracts away some of these issues, though there's going to be some things you still have to handle (and much of the abstraction is, yet again, meant for 3d models, not 2d sprites)

  4. Most libraries that Unity comes with or that you can get for it are meant for 3d objects. This includes stuff like lighting, pathfinding, physics, etc. In the meantime, box2d will easily work with Flash, or XNA, or something (well, maybe).

Pros

  1. 3d Acceleration. Graphics cards are a lot better at handling lots of objects in a scene than a CPU, and with Unity you can get that benefit really easily. This lets you display thousands of sprites on the screen, or include particle effects easily, or add in something fun like shaders to support cool effects like warping space and time to your will. Unity has many of these effects built in, which makes it really easy. Note that a lot of 2d engines use OpenGL or DirectX behind the scenes, and in many cases can be hardware accelerated, as well.

  2. Support for models. Remember that thing that was a problem earlier? Yeah, it can be a benefit, too. Depending on the game, being able to include rotating spheres or something cool like a 3d object in the background can be a benefit. You can also have a game made out of 3d, but simply forced into a 2d perspective, which can give you the option of rotating the world geometry without having to do tons of extra graphics to handle it.

  3. Learning 3d. Let's face it, lots of games are written in 3d, and if you learn how to use Unity, you'll be able to apply many of those skills to the next game which might require 3d. Additionally, a lot of artists coming out of school right now are being taught 3d modelling, so it's "easier" to find a 3d artist than a traditional 2d game artist (whether said artists are any good....)

Conclusion

There's a lot of cons, there's also a decent amount of pros. It's all going to depend on the sort of game you want to make, it's up to you to decide if it's worth it. Flash is still an extremely viable option, so there's nothing wrong with going with a 2d engine if that's what fits your game better.

share|improve this answer
    
+1. Very thorough and applicable answer. I get the feeling you've tackled this before. –  chaosTechnician Aug 10 '11 at 22:26
    
Thanks, just what I was looking for! I think I'll continue focusing on 2d engines, since most of the ones I've seen have been built on top of OpenGL or DirectX, and 3d modeling is a bit outside my abilities right now. I would like to learn Unity at some point, but I'll probably be better off tackling that after I have a 2d game under my belt. –  mrohlf Aug 11 '11 at 5:25
    
+1 Really well thought/laid out. –  Nick Wiggill Aug 11 '11 at 9:02
    
Also, 3D engines let you draw sprites with arbitrary rotation and alpha really, really easily; more easily than if you had a pure 2D engine. This is why many modern 2D engines are really 3D under the hood; you also get to write custom shaders! –  ashes999 Jul 17 at 13:42
add comment

One big drawback is the extra complexity -- 3D engines don't always have the same level of first-class support for 2D graphics as dedicated 2D engines would. This means that it's either a lot of extra work to deal with composing and managing a 2D scene, and/or you're still having to deal with the complexity of the 3D math and transformation pipeline. Especially if you're not entirely familiar with the fundamentals of 3D graphics theory, you can find yourself lost and confused when your images don't show up and if you are not careful, you can stumble on to a "solution" that makes your images appear but isn't necessarily correct (and will thus bite you later on).

But beyond the human aspect, as long as the 3D engine has the tools you need to build your 2D game, it's not a bad idea to use one. They are far more prevalent these days and tend to be developed more aggressively, so that's a plus. Additionally there are probably still a handful of 2D-focused engines or frameworks out there that aren't using D3D or OpenGL behind the scenes, and thus may not be getting the benefits of modern GPUs.

In this related question you can see a lot of discussion about what might make 3D more difficult (you will only have to deal with a subset of that were you to only use the 3D engine for a 2D game though).

share|improve this answer
add comment

Pro: More effort is spent by video card manufacturers optimizing their 3D drivers. You're not stuck in 2D for special FX or fluorishes. You don't have to simulate over-and-under yourself. Switching viewpoints doesn't require a complete re-do of all your art. I'll argue that 3D scales better visually.

Con: Asset pipelines will probably have to be adapted to your engine. Some operations that are simple in 2D are more complex in 3D. Libraries will probably have extra functionality that you'll never use.

share|improve this answer
add comment

Just learn Unity if you can. Unity works REALLY well with Blender 3D which is open source and free. There are a ton of good online tutorials on how to model and animate 2D in Blender with planes. Also there are a TON of models you can download online usually for free or cheap that you can use as starting points.

This of course is assuming that you aren't adept to creating your own Game Engine. My favorite 2D game right now is Super Meat Boy which was designed in Flash and the programming end was done custom... making a game engine that suited that games particular needs. This is the best way to approach a project like that because it gives you a lot of freedom. That said it takes a lot of work to go that route.

share|improve this answer
    
Actually, now that UNITY has added 2D support this is even more of a no brainer: pcworld.com/article/2062740/… –  Aesadai Jun 5 at 23:21
add comment

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.