1
Discussion / Re: Moving from 2D to 3D
« on: June 02, 2011, 05:30:37 am »
If it's not too late to respond, I'd like to offer my suggestions.
- Do you use a particular engine to make 3D games? (Preferably something using C, C++ or Python)
Well, you have several choices.
Unity 3D is an excellent engine, it supports C#, Boo (a Python implementation), and Javascript (or rather, a built-in scripting language that is syntactically based on Javascript). It's powerful, flexible, and is fairly simple to learn. It's also 100% free. Or rather, there is a free version available. This version is still quite full-featured, and the free license allows you to use it for commercial purposes if you plan on going that route. The paid version is pretty expensive, but more full-featured. You shouldn't have to worry about that for some time though, as again, the free version is still very powerful.
Another upside to Unity is it can build for most major platforms. You can publish games for Mac, PC, and even browser-based games with the free version of Unity. Certain paid versions of Unity can also publish for PS3, Wii, 360, iPhone, and Android.
Another fantastic free engine is Unreal Engine 3 (also known as Unreal Development Kit, or UDK). It's more powerful than the free version of Unity, but also requires more in terms of hardware to run. I can't speak to ease of use, having no personal experience with the engine, but I'm sure it's decent in that department. However, it only supports a scripting language called Unrealscript, so if you have a preferred language, you'll have to compromise on that. Again, this engine is *incredibly* powerful and totally free.
I'm sure there are other quality free engines out there besides those two, but none come to mind.
- What tools do you use to create animations, terrains, etc.? In what file format do you keep models and textures? How do you import and animate them?
Let's see, for creating 3d models, animations, and other assets, there are several packages out there. Most of them cost quite a bit of money, but some of them are free or have free versions available.
There's an open source, free modeling and animation tool out there called Blender, that supports most major modeling and animation formats. Its functionality is okay, but from what I can tell ease of use is not its strongsuit. The UI's a bit hard to work with (however, I hear recently it's gone through quite a major UI overhaul).
Then there are the commercial quality packages like 3dsMax and Maya. These packages are quite expensive, but the manufacturer of those two apps, Autodesk, does offer a free version to college students.
There are several major file formats for storing animations and models. One industry standard for basic model storage is .obj(though I believe .obj doesn't support textures), and a popular format for storing models with animations is .fbx. Many apps support these formats. Maya also uses a pair of formats called .mb and .ma for storing files, and 3ds max also has a format I can't remember the name of right now.
Terrains can be modelled out in your 3d app of choice, but some game engines also have a toolkit for creating terrains in the engine itself. Unity has a built-in terrain system, and I'm fairly certain Unreal does as well.
Usually it's a better idea to animate your models in your modelling app, rather than in the game engine. Unity has the ability to create animations in the editor, but I far prefer to use Maya for this job and import them into Unity later. Although, Unreal apparently has an excellent cut-scene creating tool called Matinee.
When it comes to importing your assets, I'm sure the UI of whatever engine you use will help make it clear how to do that.
- Do you use effects like reflections, shadows, alpha blending, normal maps, Phong interpolation, etc.? (all of these seem to be a pain to make work in OpenGL...)
Yes. All of this stuff is much, much easier to do using a game engine and 3d animation apps. For instance, Maya can generate normal maps automatically, taking a base mesh to apply it to and a detail mesh to get the normal information from, and applying this normal map in your engine should be easy. Phong interpolation comes down to a shader you can simply drag and drop onto your objects in your game engine. Reflections also comes down to built-in shaders, or even shaders you write yourself.
Unity doesn't support real-time lighting-based shadows in the free version, but Unreal does. However, the free version of Unity does support lightmapping to fake shadows, and I'm sure there's all kinds of stuff you could do with custom shaders to get proper shadowing effects.
- What about collision detection and physics? Do you use any techniques different from 2D?
Well, if you're using an engine, most of the low-level collision handling and physics code will already be written for you, and you'll simply be accessing methods and classes from the existing physics API.
I hope that was all helpful information. Let me know how it goes! Or, since this answer is a bit late, let me know how it went.
- Do you use a particular engine to make 3D games? (Preferably something using C, C++ or Python)
Well, you have several choices.
Unity 3D is an excellent engine, it supports C#, Boo (a Python implementation), and Javascript (or rather, a built-in scripting language that is syntactically based on Javascript). It's powerful, flexible, and is fairly simple to learn. It's also 100% free. Or rather, there is a free version available. This version is still quite full-featured, and the free license allows you to use it for commercial purposes if you plan on going that route. The paid version is pretty expensive, but more full-featured. You shouldn't have to worry about that for some time though, as again, the free version is still very powerful.
Another upside to Unity is it can build for most major platforms. You can publish games for Mac, PC, and even browser-based games with the free version of Unity. Certain paid versions of Unity can also publish for PS3, Wii, 360, iPhone, and Android.
Another fantastic free engine is Unreal Engine 3 (also known as Unreal Development Kit, or UDK). It's more powerful than the free version of Unity, but also requires more in terms of hardware to run. I can't speak to ease of use, having no personal experience with the engine, but I'm sure it's decent in that department. However, it only supports a scripting language called Unrealscript, so if you have a preferred language, you'll have to compromise on that. Again, this engine is *incredibly* powerful and totally free.
I'm sure there are other quality free engines out there besides those two, but none come to mind.
- What tools do you use to create animations, terrains, etc.? In what file format do you keep models and textures? How do you import and animate them?
Let's see, for creating 3d models, animations, and other assets, there are several packages out there. Most of them cost quite a bit of money, but some of them are free or have free versions available.
There's an open source, free modeling and animation tool out there called Blender, that supports most major modeling and animation formats. Its functionality is okay, but from what I can tell ease of use is not its strongsuit. The UI's a bit hard to work with (however, I hear recently it's gone through quite a major UI overhaul).
Then there are the commercial quality packages like 3dsMax and Maya. These packages are quite expensive, but the manufacturer of those two apps, Autodesk, does offer a free version to college students.
There are several major file formats for storing animations and models. One industry standard for basic model storage is .obj(though I believe .obj doesn't support textures), and a popular format for storing models with animations is .fbx. Many apps support these formats. Maya also uses a pair of formats called .mb and .ma for storing files, and 3ds max also has a format I can't remember the name of right now.
Terrains can be modelled out in your 3d app of choice, but some game engines also have a toolkit for creating terrains in the engine itself. Unity has a built-in terrain system, and I'm fairly certain Unreal does as well.
Usually it's a better idea to animate your models in your modelling app, rather than in the game engine. Unity has the ability to create animations in the editor, but I far prefer to use Maya for this job and import them into Unity later. Although, Unreal apparently has an excellent cut-scene creating tool called Matinee.
When it comes to importing your assets, I'm sure the UI of whatever engine you use will help make it clear how to do that.
- Do you use effects like reflections, shadows, alpha blending, normal maps, Phong interpolation, etc.? (all of these seem to be a pain to make work in OpenGL...)
Yes. All of this stuff is much, much easier to do using a game engine and 3d animation apps. For instance, Maya can generate normal maps automatically, taking a base mesh to apply it to and a detail mesh to get the normal information from, and applying this normal map in your engine should be easy. Phong interpolation comes down to a shader you can simply drag and drop onto your objects in your game engine. Reflections also comes down to built-in shaders, or even shaders you write yourself.
Unity doesn't support real-time lighting-based shadows in the free version, but Unreal does. However, the free version of Unity does support lightmapping to fake shadows, and I'm sure there's all kinds of stuff you could do with custom shaders to get proper shadowing effects.
- What about collision detection and physics? Do you use any techniques different from 2D?
Well, if you're using an engine, most of the low-level collision handling and physics code will already be written for you, and you'll simply be accessing methods and classes from the existing physics API.
I hope that was all helpful information. Let me know how it goes! Or, since this answer is a bit late, let me know how it went.