Moving from 2D to 3D programming.

Miscellaneous Forums/General Discussion/Moving from 2D to 3D programming.

For you guys that moved from the 2D world to the 3D world of programming. Could you outline the easiest and most difficult parts of the transition? Also, for someone just starting out in 3d programming, what tools, language would you recommend? Thanks!

I would suggest Blender and the B3D exporter (assuming you are using a Blitz language.)
Although.. Blender takes time to get the hang of, but it is the best Open Source modeler there is.

I tried Blender several times and got no clue of it.
Then I read the tutorial: from n00b to pro in 5 minutes, and I instantly loved Blender. Now it's so easy and powerful.
The tutorial can be found here:
http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Beginning_Tips
(click on the bottom link to go to the next page)

Where can I get the B3D exporter?

If you are already using BlitzMax for 2D programming, the obvious place to start with 3D is getting miniB3D.

Probably the trickiest difference between 2D and 3D programming is that you aren't drawing sprites directly, but rather you simply load entities into the scene and then everything visible to the camera is rendered every time you call RenderWorld.

I would recommend you only move to 3D if you don't mind 2 to 3 times the amount of work. I spent years learning B3D and now have switched to 2D as it is, imho, the only reasonable option for an indie developer. Take Tecno and Tank Universal as examples, those guys spent about 4 years each making one game. That extra dimension adds up to a LOT more work.

Interesting. Thanks for the replies. I'd like to start making the transition to 3D starting in 2009 and would hope to have a capable IDE/Framework choice stablized sometime in late 2009 with the goal of being able to prototype ideas starting in 2010. Imho it doesn't make sense to think about staying in the game development arena, indie or otherwise, longterm, without working in a true 3d environment eventually. I would probably still focus on 2D type games, the added possibilities of camera angles, 3d objects, etc, is something I really want to explore.

I reluctantly (at first) started making a transition from 2D to 3D. A big part of that was learning a lot about OpenGL via BlitzMax, starting to experiment in 3D and needing to learn a lot of the new lingo. I think you can learn a lot from the Blitz3D crowd. There is a lot to learn. You'd benefit from reading the GL documentation.

I've always found 3D to be easier. It's simply more intuitive to think about space as you do on a day to day basis. My advice is to let go of your preconceived fears and think about building your game as if you were building it in your backyard not within the confines of a computer screen.

The transition is hard in terms of math (if you have problems with that), you have to consider a lot more than in 2D and the asset creation, depending on your style, can be a lot more time consuming and demands more skills. Although it always depends on your specific projects i would say generally it's much harder doing an enjoyful 3D than an enjoyful 2D game because it takes a lot of experience making things smooth and easy for the player again due to the additional dimension, of course this also depends on your game design and there are a few situations were it's the other way around.

o 2D is good for getting things done if you aren't this experienced.
o 3D is good if you exactly know what you're after or if you just want to amaze yourself.
o 2.5D often combines the advantages of both aspects.

Tools like Unity (sorry that i have to bring it up again but it's simply true) are trying to make things a lot easier for the developer but it's still a very different thing and most Indies more likely will squeeze out an enjoyful 2D game than an enjoyful 3D game. Of course there are also people who can do this in 3D as well.

For someone new i also would recommend a tool like Unity if you can afford it over a combination out of a Programming language plus a seperate 3D Engine because the primary purpose of these tools is 3D development and so they are optimized for that and take away quite some of the pain you will otherwise run into, things are optimized that they work together in a 3D style, you can easily place your objects, alter your lightning, test your scene and so on, ... it's an easier and much more intuitive process which you might not need if you're experienced (but also there you'll love it once you have used it) but which you'll find very handy if you're not.

On a first view 3D became a lot easier than compared to the amiga days for instance because a lot of the low level work is automatically done for you but on the other side things also became complicate and time consuming because the visual quality you're used to these days, the different hardware basis and the much more complicated process of asset creation.

3D definately is a lot of fun but it's not easy mastering it well.

I find 3D a lot easier and less maths intensive than 2D

The bigger the dimension the more variables you'll have to consider. In the best case you'll use a somehow powerful command which solves this for you but a) the underlying code is still more complex and you'll have to feed the variables and b) you won't find commands which solve all for you.

MiniB3D is a good way to start.

I tried playing with it a bit and didn't expect the examples would have that few lines of code at first. To move a character over the screen only requires 1 line for keys and movement using moveentity and 1 line extra to turn your character using rotateentity.

At first I thought 3D would be a lot harder to tackle. But when I look at it now, 3D programming is easier, but creating 3D media will always be harder then 2D.

I wouldn't say less maths in 3D. It really depends what your going to be doing. For angles and such, your parent entity, pivot and rotate/scale and align to vector commands save you alot of bother, but when you need something beyond them, you need a good grasp of maths, in the extra dimension i've found.

I can see your point though boomboom. To make a game where you simply turn and move a character would be easier in 3d than it would in 2d.

Ok, to answer your question better.

the easiest and most difficult parts of the transition?

Assuming you mean B3D or MiniB3D then I think Surfaces, Brushes, Animations, Collisions, 3D Maths (and Timing) are the hard topics.

in 3d programming, what tools, language would you recommend?

I'm not sure what you mean by "language" but I assume you mean which 3D programming language? Unless you are after latest tech then I would say B3D for Windows or MiniB3D for cross-platform.
For tools I don't have any specific recommendations, finding what tools you need is part of the transition.

Less math involved in 3D?

You're basically using a framework that saves you from having to write those thousands of calculations for those single line functions. In-depth, there is a ridiculous amount of math going on. It takes a bit more than grade-school math.

3D is folds more complicated than 2D...some of you are just using plenty of tools and a simplified engine that does 90% of the work for you (minib3d for example). Like comparing the use of creating your own 2d engine for your games, as opposed to 'using' a 3d engine to create your games. Even still, unless you've created a game that simply allowed you to 'move around' in a map, I don't understand how less math is involved.

More on-topic to MGE though, the big difference comes with media. If you are one of those people who easily adapts to different systems, then 3d itself should be a lot more simple for you, especially considering you seem to have created a 2d particle effects system...you obviously have experience with most of the math that will be involved in 3d. Sin/Cos 4 life.

But with media: characters and environmental design becomes quite a bit more difficult...or in other words, more time consuming with 3d - which you already seem to understand.

Good luck on the transition. I'm sure you'll find it a lot more fun to play around with. When you start messing around with physics, don't get too sidetracked playing around =p

Time

Excellent replies. Very much appreciated to all. ;)

I think 3D is definitely harder to pull off than 2D. Not only are you now trying to model entire worlds of objects in a reasonably representable appearance, plus you have to now deal with stuff like lighting and shadows and 3D physics and timing and harder collision detection and 3D audio and 3D particle systems and getting particles to face the camera and all that stuff. It's not as easy as 2D.

You make a good point, IH.
But I would say lighting is harder in 2d, and attempting an isometric world (simulated 3d) in 2d is also much harder (correct animations from 3d models > 2d images).

I find most things in 3d easy to get used to, and much more productive because most engines have simple interfaces to things like lighting, physics, audio, and sometimes particle systems (Irrlicht has this).

As Retimer says, 3d math is a hell of alot harder then 2d math.

Just look at B3D's geometry code:

http://blitzbasic.com/Community/posts.php?topic=42657

If you failed Geometry/Trig your not going to make a 3d engine anytime soon.

But luckily the engine takes care of the hard part ;)

Ahh I just thought of what the most difficult part about 3d is *grin*....choosing the right 3d engine =p

All I can suggest on that part is to really look at the features in an engine and look for negative feedback first so you really know what to expect and where you'll grind your teeth at later on, so you can possibly save years of development time when you hit the realization that you aren't comfortable anymore with what you are using. A mistake made time and time again by so many projects, repeated, and thus, dropped in the end due to loss of motivation from lack of real progress.