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.

I'm a software engineer that's new to game programming so forgive me if this is a dumb question as I don't know that much about game engines.

If I was building a 2D game am I better off going with an engine like Torque that looks like it's built for 2D, or would higher powered engines like Unreal, Source and Unity work better?

I'm mainly asking if 2D vs 3D is a large factor in choosing an engine.

For the purpose of comparison, let's eliminate variables by saying price isn't a factor (even though it probably is).

EDIT: I should probably also mention that the game we're developing has a lot of RTS and RPG elements regarding leveling up

share|improve this question
    
@Adam, what is your target platform? –  AttackingHobo Mar 9 '11 at 21:09
    
@AttackingHobo - It's a PC game. I'm developing it using a Windows computer and it would be ideal to be able to use my Macbook from time to time if possible. –  Adam Mar 9 '11 at 21:14
2  
I would choose Unity over Torque any day for anything, since the useful 95% of Unity is free. –  The Communist Duck Mar 9 '11 at 21:15
    
@AttackingHobo - We're also thinking about eventually having it on iPad/iPhone but that's down the line. –  Adam Mar 9 '11 at 21:15
    
@TheCommunistDuck - Thanks! –  Adam Mar 9 '11 at 21:16
show 3 more comments

migrated from gaming.stackexchange.com Mar 9 '11 at 21:06

This question came from our site for passionate videogamers on all platforms.

2 Answers

up vote 15 down vote accepted

There are two factors here, speed of development and speed of execution.

All other things being equal, you're going to want something that's hardware accelerated. So your "2d engine' is going to be fundamentally a 3D engine, just using sprites and an orthographic projection. With that assumption there, there isn't much fundamentally different between a "2d" and a "3d" engine.

Now that being said, there are certain optimizations that you would do in a 2D engine that may or may not be built into a 3D engine. Batching of sprites (to reduce draw call count) is probably the biggest one. Depending on your 3D engine, this isn't terribly difficult to add. However if you have to add it yourself it's going to add some time to development. But in the end, in theory, there shouldn't be much of a speed difference other than additional overhead a "heavier" 3D engine may bring.

To help aid with sprite batching, it's pretty common that 2D engines have atlasing tools built in. Atlasing is combining a bunch of individual sprite images into one texture so you can batch more (as more things on screen are using the same material). Again, if you have to add this to a 3D engine, or do it yourself, it's going to hurt development time.

And on top of that it might be easier to do 2D physics with an engine with a 2D physics engine rather than a 3D physics engine with constraints.

But on the flip side, using a robust 3D engine gives you more options. You can have a fundamentally 2D game but not use an ortho projection. You can do 3D particle effects. Most 3D engines have nice skeletal animation systems and you can do interesting things with that (like attaching planes for body parts and animating a rig instead of spitting out more sprite frames).

At the end of the day it's all about your needs and your resources.

share|improve this answer
    
TL;DR No; developing 2D stuff is better for 2D than developing 3D stuff. :P –  Matthew Read Mar 9 '11 at 21:29
1  
Thanks! Do you know if it's common for 3D engines to be able to import sprites from Photoshop –  Adam Mar 9 '11 at 21:30
    
I would say an engine would be poor if it didn't have image loading capabilities. –  The Communist Duck Mar 9 '11 at 21:31
2  
@Adam: Unity supports full .psd import, and offers instant use. –  daemonfire300 Mar 9 '11 at 21:48
3  
Hardware accelerated doesn't always mean 2d via ortographic projection of 3d. You can implement it like that if your game is just sprites, but there are lots of things you can only do with native 2d acceleration that you can't with 3d, such as vector graphics, geometry operations (union, intersect, etc), subpixel font rendering, and many others. For a modern API, check Direct2D. –  slcpfmmm Mar 10 '11 at 2:08
show 5 more comments

It depends on your needs. There is a widespread misconception that all 2D games can be implemented on a 3D engine by drawing sprites as textured quads, with Z=0. While this is possible, very efficient, and has very widespread use (I even use it myself most of the time), there is much more to 2D than sprites.

A modern 2D engine or library should allow you to do things such as (list courtesy of wikipedia with some additions):

  1. Draw vector graphics, procedural model generation does exist in 3D but procedural model generation is hardly the best tool to do 2D vector graphics
  2. Subpixel font rendering such as ClearType (usually not supported in 3D)
  3. Per-primitive antialiasing (is usually a render state in 3D, it -can- be done, but very inefficiently)
  4. Drawing and filling commands (nonexistent concept in 3D)
  5. Solid color, linear, radial, and bitmap brushes (nonexistent concepts in 3D)
  6. Rendering to intermediate layers (layering concept is usually nonexistent in 3D, although it can be faked)
  7. Geometry operations (eg. unions, intersections, widening, outlining, etc) (nonexistent in 3D)

So if you're interested in making games that make use of any of these concepts, or many other non-trivial 2D operations beyond simple spriting, and have them hardware accelerated, you should look for a 2D library or engine. I've used Direct2D, and it's really fun, and it readily works with Direct3D, so you can mix as you want.

On the other hand, if you want to make a sprite-only game, you can use your choice of engine, because I find it unlikely that you're going to be pushing the limits of 3D hardware with only textured quads. Since it's really simple, I'd recommend you make it just on top of Direct3D or OpenGL, and save your engine budget for popcorn.

Note that this only applies for the rendering part of your 2D game. Physics and other simulations are out of the scope of this post.

share|improve this answer
    
How exactly are vector graphics and solid color, linear, radial brushes nonexistent concepts in 3D? –  Dyppl Mar 10 '11 at 7:42
    
@Dyppl OK, vector graphics do have their equivalence in 3D, which is procedural model generation. But as far as I know, it's not as widespread and usable in the design world as vector graphics are. But brushes and general painting are concepts that as far as I know can only apply to flat surfaces. I still haven't seen raster art on the actual voxels of a 3-dimensional space, and I don't really see much use for it. –  slcpfmmm Mar 10 '11 at 8:16
    
Bump mapping is fairly equivalent to 3D raster art, three dimensional textures can also utilize brush / painting concepts. –  Garet Claborn Mar 10 '11 at 9:08
1  
I can't believe I got carried by the first comment and forgot what my original point was. I'm not trying to say that there are no 3D equivalences for these 2D features, but that a 3D engine is by far not the best tool to do these things in 2D. For example, drawing a 2D spline with a 3D engine would involve the procedural generation of a large list of triangles which when seen from afar look like a pixelwide spline, while a 2D engine readily does it for you. Technically you can do anything by making a mesh with one quad per pixel, or you could just use a 2D engine. –  slcpfmmm Mar 10 '11 at 9:53
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.