16
\$\begingroup\$

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?

\$\endgroup\$
7
  • \$\begingroup\$ 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)? \$\endgroup\$ Aug 10, 2011 at 15:43
  • \$\begingroup\$ 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. \$\endgroup\$ Aug 10, 2011 at 15:58
  • \$\begingroup\$ Related: gamedev.stackexchange.com/questions/9557/… \$\endgroup\$
    – Tetrad
    Aug 10, 2011 at 19:03
  • \$\begingroup\$ Define "3D engine"? Are we talking about something that covers gameplay, or just something that renders in 3D? \$\endgroup\$ Aug 10, 2011 at 20:20
  • \$\begingroup\$ @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) \$\endgroup\$
    – mrohlf
    Aug 10, 2011 at 20:47

4 Answers 4

15
\$\begingroup\$

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.

\$\endgroup\$
3
  • \$\begingroup\$ +1. Very thorough and applicable answer. I get the feeling you've tackled this before. \$\endgroup\$ Aug 10, 2011 at 22:26
  • \$\begingroup\$ 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. \$\endgroup\$
    – mrohlf
    Aug 11, 2011 at 5:25
  • \$\begingroup\$ 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! \$\endgroup\$
    – ashes999
    Jul 17, 2014 at 13:42
7
\$\begingroup\$

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).

\$\endgroup\$
2
\$\begingroup\$

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.

\$\endgroup\$
0
\$\begingroup\$

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.

\$\endgroup\$
2
  • \$\begingroup\$ Actually, now that UNITY has added 2D support this is even more of a no brainer: pcworld.com/article/2062740/… \$\endgroup\$
    – Aesadai
    Jun 5, 2014 at 23:21
  • 1
    \$\begingroup\$ I still say Unity sucks for 2D games. For 2d games it's NOT professional quality to me, just compare to a solid 2D engine like Cocos2D-swift. That's a no brainer. \$\endgroup\$
    – Jonny
    Dec 29, 2014 at 7:16

Not the answer you're looking for? Browse other questions tagged .