the 2d vs 3d flame/thread for games - which is easy or/and difficult.
Hi all,
It was surprising to see/learn that nobody ventured into the 2d vs 3d flamewar (till yet), hence decided to make the thread.
I read quite a few threads on different sites on the topic :-
https://gamedev.stackexchange.com/questions/37865/do-3d-assets-cost-a-lo...
https://gamedev.stackexchange.com/questions/59744/what-is-more-expensive...
http://forums.tigsource.com/index.php?topic=22460.0 (still going through the last one)
It seems the answer isn't an easy one. I do see great artwork being done in the site for instance artwork by PantherOne http://opengameart.org/users/pantherone but don't see many FOSS games use 3D . The only ones which seem to have some sort of 3D are 0ad, stunt rally and supertuxkart of which the last two started using 3d recentish.
On the other hand, I have been observing for almost 2-3 years there has been a barrage of hidden object games and time-management games which seem to be selling fine and are 2D (there may be an exception or two but mostly they are 2D).
for FOSS to have games in 3D, what are we missing, game engines ?
(BGE is one which is supposed to be free, foss and 3D), UDK is there but it's free only for non-commercial use (as far as the license terms state) https://www.unrealengine.com/products/udk/udk-licensing-resources#commer...
OGRE3d, Torque 3D, Panda3D, irrlicht are others which are used , gameplay3d is another one I just came to know
http://gameplay3d.org/ https://github.com/blackberry/GamePlay
but seems more suited for blackberry and mobile games.
Could it be that 2D games can be played almost anywhere (no heavy requirements) thereby increasing probable/possible audience for their game while 3D games would need some dedicated hardware when people are making choices to make games ?
I think what happens is that developers think, "it's a lot easier to make a 3D game, you model your characters only once instead of painting countless animation frames by hand". Then they start working, and realize that's not the case... and on top of that the programming is a lot harder for 3D. Also what you said: there's this perception that nowadays 3D acceleration is ubiquitous... but that's simply not the case, and even where it is (Android devices for example must have GPUs, it's a basic OS requirement), the performance often just isn't there. Something has to feed data to the GPU...
What happens, in my opinion -- and this really is just a gut feeling -- is that once this double realization sinks in it's easy for developers to remember that a lot of the best games ever, all those classics you can find on GOG.com, were in fact 2D. So they go back to good old sprites and parallax scrolling.
Which is not to say that 3D doesn't have its place. It does. I love 1st-person games for example. But it's just a tool in the toolbox.
Both definitely have their place but both require a significant investment of time and work to make. To each their own.
Oh, absolutely. But it's still worth discussing the relative merits of 2D versus 3D. After all, when starting a new project you want to choose the most suitable approach. And for that, you want to be informed.
Neah, the audience doesn't care what's under the hood. But for the developer it definitely matters. As I like to say, with software rendering all you need is a Turing-complete language and a surface to draw on. Whereas hardware acceleration is always very specialized. For example, modern GPUs can only do polygons, they can't help with voxels or raytracing. (Games like Minecraft pull lots of dirty tricks to optimize all those cube faces. In software.) And maybe you've heard about the way Amiga's incredibly clever 2D chips turned out to be completely useless once gaming moved on to 3D, while the weak CPU couldn't compensate. The simple, stolid, but upgradable PC won on generality.
Me, I like to explore that intriguing space between 2D and 3D, that after all these decades of gamedev remains a mystery. And no specialized hardware can help there.
There is no doubt the pipeline to produce 2d assest is much easier than 3d; whereas 3d needs lots of knowledge and work on different fields(modelling, uvmapping, texturing, rigging, animating) 2d assests just need some degree of artistical sense, your programs of choosing and mostly is about modifying your base model to get the needed sprites (in cases you directly dont need static ones).
Normally the needed time to produce 2d is much shorter, which means more productivity and variety of assest from the same autor, this assests will share the same style and quality overall; meanwhile the slower production of 3d means you will get only a few models from your average 3d contributor, nowhere enougth to fill all the needs of a 3d game, and forcing to get models from a different person with a different style. And normally the results of that mixing are not good at all, producing a ugly mishmash.
So i would say 2d wins because of abundance of assest and easiness of modifications and creation.
3D being more difficult etc. has been true so far, but we are right now in a transition as with 3D you can get away with re-using generic assets much better.
High quality engines are more or less free these days, and you can buy a lot of high quality back-ground art for not that much money in the Unity asset store for example. The lower need to optimized 3D meshes coupled with the improved quality of 3D modeling tools also does their part in driving down the "cost" of 3D.
The amount of creative commons 3D art is also increasing a lot lately, but it is sadly still mostly lacking the final bit of polish to be able to just slap it in an engine and use it as background stuff.
--
http://freegamedev.net
I think part of it is FOSS usually means personal projects and folks usually start off small and "simple". That means tilesets and 2D. Beginners aren't going to rush into 3D game-dev, unless they are learning from a book. I can't see a book using FOSS engines. Look at the progress of FLARE. It's all about building, learning and growing. You can design art in blender and bake your content. It doesn't mean you can't grow later on and use the same content in a 3D world.
The big factor is engines aren't cheap for licensing. I've looked at ogre, unity and find I've got more API to learn how to use then getting to focus on the game, having to learn the quirks of the system. You end up writing wrapper classes to hide details you don't require and then forget about the APIs. Yes, old man memory kicks in and you don't remember anything about anything.
Of course, knowing your audience, style and the platform you plan on targeting will effect your options. However it always comes down to what @William.Thompsonj said, the "Cost and Value of Time."
Personally from my own experience I find if you are a do-er, you need a thinker to help with the creative side. If you are lucky enough to be creative to do art and the level of an artist, that great but we all need help. It's finding the right people to come together.
I, myself for instance want to create a "first" game - as much as I can by myself, mostly to say I created it and be proud of it, even if it sucks and no one plays it. I want learn something about myself, and game design, etc.
I'll get in on this. I have lots of experience building both 2D and 3D games, and 3D is way harder. I've even used some 3D game engines and it's still harder.
Not only that, but the quality of open source game assets is generally much higher in 2D art.
If I was going to assign a number to it, I'd suggest that a 3D game is approximately 4 to 7 times harder.
Edit: Oh, and if I was going to recommend a 3D game engine to use, I'd pick Panda3D. It comes very close to the simplicity of building a 2D game.
I think there are a lot more 3D foss games than you have listed. I have played 0ad, ufo, open arena. Learning 3D game development is not easy. A simple shooter will require ray casting, 3D collision along with skeleton based animations and path finding. A 2D game with 3D graphics will not be too hard but I guess not many has the motivation to do it. 3D assets for 3D games are also hard to came by. They vary wildly in style and most of them requires additional work.
But if you are asking about 3D or 2D assets, I would say 3D would be a lot easier for many reasons. It is possible to render a 3D asset for any purpose, side scrolling, top-down, isometric, large / small, cartoon or realistic rendering. Also, its easier to create new poses or animations. If you are planning on investing time to create assets, I guess it will be much more useful if its in 3D.
When all is said and done, a 3D asset is a greater investment on the creation side, but has (potentially) a great deal more usablity once it is completed, compared to the 2d asset. But as others have mentioned, quality and style vary widely.
From the artist's perspective, I find that the process of translating assets (e.g. Blender file) to the game engine can be a road block. While I love solving technical problems, my time should be spent making art, not fiddling with file formats.
Well, that's getting a bit off topic.
I prefer to spend the additional time/energy on 3d assets because I don't have to draw dozens of versions everytime they need to be used in a new way. :)
"Dammit Jim, I'm an artist, not a software engineer."
There is work on that.
For e.g. see http://mont29.wordpress.com/2014/07/21/fbx-7-4-updates-iii/ and
http://www.leadwerks.com/werkspace/blog/41/entry-1247-blender-exporter-f...
how good or bad the exporter are and how much loss or any artefacts (if any) can only be known by people trying it.
I *think* I shared the news of Epic Games donating 10k to Blender Foundation for better FBX support.
https://forums.unrealengine.com/showthread.php?16011-Epic-Donates-to-the...
Similar thread (though more specific to 3D RPGs) on Freegamedev at http://forum.freegamedev.net/viewtopic.php?f=5&t=4070 .
I don't find 3D technically harder in itself, though there are various issues:
* It's easier to get away with simpler stuff in 2D. So most 2D games will have axis-aligned tile-based worlds. You could do a similar thing in 3D, but as graphics become more "real" there's the problem that simplifications become more noticable. So this means more complex algorithms for path-finding, collision detection and so on. This also applies to art - in a 2D game, people don't mind if every tree looks the same (or perhaps you have two or three variations), or the sprites are rendered from low poly models, because it's not realistic looking in the first place, and the viewpoint is far more restricted, but this becomes far more noticable in a 3D world where things are trying to look more realistic, and you can walk up close - suddenly the other simplifications stick out like a sore thumb. Players are more likely to notice if the character isn't shown wearing the right kind of clothing/armour or using the weapon that they are meant to be armed with. It's not a hard rule - you could have a realistic looking isometric 2D game where you can zoom in close; and a 3D game that's cartoonish graphics. But most of the time people try to use 3D graphics to improve the realism. Rogue-likes take this to the extreme, shsowing how you can get away with simple graphics and no animation at time. You could do that in 3D, but there seems little point.
* A 2D game engine like SDL and SFML is all you need; for 3D, game engines tend to be more complex, there's more to learn, there's probably less choice if you're looking for Open Source 3D game engines, and probably harder to make something that's cross-platform across many platforms. Or you roll your own graphics engine, which is time consuming (and means fighting with graphics driver issues on various different chipsets or platforms).
* Maybe others have more experience of this than I, but one problem I've had is simply getting 3D content into a game. With 2D it's easy - there are standard common formats, which easily convert to one another. 3D gets more complex when you consider animations - different formats do things differently, and they don't translate easily (e.g., key frames versus using bones). There are also plenty of free libraries to read image formats, but less so for 3D. I tried ASSIMP, though depending on format, there were some things not supported; similarly some of the Blender exports don't support everything, as noted in comments above, so I had a hard time finding common formats to convert between. How do other developers do this? Is there an Open Source library for reading Blend models (which seem to be pretty much the standard on OGA), or is it a case of writing your own exporter (or dealing with the existing ones)?
ETA: That's good news about Leadworks Blender exporter - is Leadworks format open/documented (could this be used as a route even for people not using the Leadworks engine)...?
* Tools may be another issue. With 2D games using axis-aligned tile-based worlds, there are generic tools which can be used for that, and it's also very quick to generate levels/worlds like this.
"As I like to say, with software rendering all you need is a Turing-complete language and a surface to draw on. Whereas hardware acceleration is always very specialized. For example, modern GPUs can only do polygons, they can't help with voxels or raytracing. (Games like Minecraft pull lots of dirty tricks to optimize all those cube faces. In software.) And maybe you've heard about the way Amiga's incredibly clever 2D chips turned out to be completely useless once gaming moved on to 3D, while the weak CPU couldn't compensate. The simple, stolid, but upgradable PC won on generality."
Just to nitpick, GPUs have been turing complete since the early 2000s since the addition of shaders. So non-polygon based stuff is possible, though yes, less straightforward. It's true that CPUs are still easier to program. Roughly speaking, CPUs are optimised for running single complex threads very fast, whilst GPUs are optimised for running lots of simple things massively in parallel.
I don't think this is a reason for fewer Open Source 3D games, as developers can still do the traditional polygon-based graphics rather than voxels or raytracing. Though yes, it does mean GPUs are less interesting for people wanting to do some kinds of graphics.
The PC's 2D graphics chips of the early 90s were also useless for 3D gaming, though yes, the point is still true that dedicated 2D chips couldn't be used for 3D, and game developers instead turned to using the CPU. Unfortunately Commodore management had increasingly focused on the low end, perhaps relying on the 2D chips, though they were also having to deal with Intel x86 pulling increasingly ahead of Motorola 680x0. I don't think it was short-sighted to use 2D chips; newer models could have come with updated 3D chips, or simply faster CPUs - but Commodore had then of course gone bust.
Also note that this age of CPU-graphics was very short-lived, with hardware companies and developers switching to 3D hardware as soon as they could, because doing it in dedicated hardware is faster (who cares if it's less general or shorter term, people will need to upgrade to play new games anyway). Another example would be the Playstation, which again showed that dedicated hardware meant you could get decent games at a low cost. Since then, dedicated graphics chips has continued to be almost always the norm.
It did however mean a period where 3D games looked all a bit the same, because of the lack of freedom in 3D graphics hardware, but as I say, with shaders, graphics hardware is now fully programmable, so we get the best of both worlds :)