Archived

This topic is now archived and is closed to further replies.

x-bishop

do i need learn 2D before 3D? Tricks vs Opengl book

Recommended Posts

it just makes sense to learn 2D before attempting 3D and I had decided to purchase "Tricks of the Windows Game Programming Gurus", but then i started reading numerous reviews on different websites and asking the dudes at #gamedev and many say that the book usues weird routines that the author developed, 8bit color and bitmaps for graphics..and that the book doesnt even cover 3D and then i started looking at "OpenGL Game Programming" and it seems to slowly guide the reader into 3D fundamentals...so that maybe even newbie game programmers can understand my question is..is learning 2D game development essential in learning how to make games?? i ultimately want to develop my own 3D engine...so should i just dive right into 3D? i just hope that if i order OGP that it wont be over my head or if i got TOTWGPG that it wouldnt prepare me for 3D at all i mean..i still have to learn collision detection/physics with any type of game...cant i just learn it in a 3D environment? or is it too difficult?

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
You should definately learn 2D before 3D, IMO. Rendering 3D models on the screen isn''t much more difficult than blitting sprites (if you''re using a 3D API, at least). But diving into BSP, Octrees, (C)LOD, etc. is probably not what you want to do for a first try.

Also, collision detection and pathfinding algorithms are much more difficult to handle in 3D.

I''d certainly suggest to start with 2D (note : you can do 2D with OpenGL) and once you feel *very* confortable, move to 3D.

Hope this helps.

Share this post


Link to post
Share on other sites
I learned 3d before 2d. You really do not need to know how to program 2d before 3d. Once you learn 3d programming you will be able program 2d without too much trouble. I have listed some sites that are helpful to get started in 3d programming.

http://nehe.gamedev.net

http://nexe.gamedev.net

http://www.gametutorials.com

http://www.opengl.org

have fun programming

Gaming is a way of life belive it

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
quote:
Original post by x-bishop
it just makes sense to learn 2D before attempting 3D


I don''t know any "2d" I only know 3d. 3d is not an extension of 2d; you don''t have to work your way up.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
quote:
Original post by x-bishop
it just makes sense to learn 2D before attempting 3D


I don''t know any "2d"; I only know 3d. 3d is not an extension of 2d.

quote:
Original post by x-bishop i ultimately want to develop my own 3D engine...



then learn 2d is a waste of time.

Share this post


Link to post
Share on other sites
Ok those 2 anonymous posters are me. I accidently pressed the "post" button twice (stupid interface). Anyway, I would recomend getting a book on OpenGL API only. And just concentrating on learning that, then get a book on advanced 3d programming that talks about general stuff not pertaining to API's like collision detection, shadow techniques, etc. I think this is your best bet.

[edit]: Its not that you learn 2d and work your way up to 3d, its that you learn 3d, make some shitty demos, and work your way up to games

Edited by - grady on August 8, 2001 5:50:27 PM

Share this post


Link to post
Share on other sites
Nothing is a waste of time. If you learn how to do 2D properly, you''re probably going to throw a lot of things away once you move to 3D(like blitting sprites). However, you do not lose the experience, and a more general understanding of computer graphics. Just imagine that at some point developing your 3D engine you think it would be cool to add procedural textures, for example. Then all that knowledge about manipulating and adding effects to a 2D surface would come handy.

But, on the other side of the coin, I still don''t know how to use DirectDraw(I''m just doing OpenGL for now), but I''ve been doing 2D since my MSX... your mileage may vary.



Gaiomard Dragon
-===(UDIC)===-

Share this post


Link to post
Share on other sites
I''d say it depends on what you want to do. If you are interested in making a 2d game or some type of 2d interface, then go for 2d graphics. If you want to make a 3d engine or anything else 3d then...you guessed it, work on 3d stuff. The two used to depend on each other to a small extent since you had to know scan conversions and stuff with drawing to a 2d buffer. I remember back when direct3d used to depend on directdraw (it really sucked to program for!!!) Point is, if you learn 3d, like others say, you wont depend on 2d knowledge to make something cool. The same goes for 2d. The two are really mutually exclusive. Like I said, it depends on what you want to do. I started right in on 3d graphics, and I''ve never looked back.

Share this post


Link to post
Share on other sites
I have to disagree strongly with lunarss and grady.

How can you say 2D and 3D are mutally exclusive or unrelated? That makes absolutely no sense logically or mathematically.

You''re doing 3D programming, right..Take away one of the axis.. surprise, now its 2D programming!

Sure, there''s API differences, you do things differently in DirectDraw than you would in OpenGL, but those are API differences, not differences in "2D" vs "3D".

I would have to say that if you''re a new games programmer and you don''t have an extensive math background (lots of 3D geometry and linear algebra experience, at the very least), learn 2D games programming first.

All of the concepts in 3D are extentions of simpler concepts in 2D -- collisiond detection, physics, surfaces, etc. And there''s some aspects of both you have to worry about no matter what, depending upon which API you use and how high level it goes -- color depth, color conversion, pitch on surfaces/textures, efficient use of video memory, and on and on.

Learning 2D keeps things simpler so that you aren''t overwhelmed by everything at once. There''s more to games than graphics: timing, sound, input, networking (maybe), AI, etc...All of these are much simpler to deal with when you''re dealing with a 2D dataset, but again the concepts you learn in 2D programming are perfectly applicable to 3D programming, you just need to learn them more in-depth.

Anyone who says 2D and 3D are mutually exclusive should not, in my opinion, be trusted, because he/she is focusing too much on the API and not enough on general concepts which are universal and do extend or contract when moving up or down along the N dimensional space.

Share this post


Link to post
Share on other sites
Whoa there gmcbay! Calm down a little. I didn''t mean to get you so riled up over such a simple discussion. It comes down to the fact that we''re both trying to help this guy. If I give him some bad advice its fine to correct me on it and tell him what, in your opinion is right. You don''t really need to be condescending about it. Saying that I "focus too much on the API", and that I "shouldn''t be trusted (do you know me??)" is a gross assumption. I''ll try to make my point a little more clear so I don''t confuse people again. I''m saying that 2d knowledge applies to 3d to an extent yes, but it won''t help you a ton. Mathematically, yes, 3d is an extension of 2d, but they are quite different in application. Going from 3d to 2d would be easier. If you''re going to program an all software 3d engine, then knowing something about 2d will help you fill a screen buffer and do double buffering. Knowing 2d will not help you transform, rotate, and project a 3d point into 2d. No, you don''t just take off the z coordinate. Sorry to harp on you gmc, I just didn''t really appreciate you saying that nobody should trust me.

Share this post


Link to post
Share on other sites
Would using NeHe''s tutorials be called learning 3D programming? Sorry if that sounded a bit smarty, I didn''t mean it like that, but what I''m saying is that I have no previous 2D programmig knowlege and I seem to be doing fine with NeHe''s tuts. Mybe I''m completely off subject? I''m about to Buy OGLGP too, don''t think it will be a problem. Learning 2D programming wouldn''t HURT, but it might not HELP...

_BUSTER_



www.crosswinds.net/~dotspot
______________________________
Check out my for sale domain name!

http://www.theatermonkey.com

Share this post


Link to post
Share on other sites
I''ll say again: since you want to develop your own 3D engine, you can probably just start learning 3D. But my advice is, IF you''ve got the time to spare, do a little research on how people used to do stuff before the modern 3D cards. Maybe it won''t help directly your project, but I am certain that this knowledge will be useful, sooner or later(even if it''s just to understand what a "sprite" is when you hear it - you''re probably going to call it a "billboard" [before anyone flames me, I know they''re not the same thing, but are generally used with the same purpose]).

In fact, the best thing one could do would be writing a software engine... THEN you get to understand how those stupid vertexes end up drawn on the screen(a 2D surface, by the way) with textures, lightning etc. But it''s something that us, mere mortals, generally don''t have time to do(I''ve trashed mine due to an incredible number of bugs, but I''ve learned a lot).



Gaiomard Dragon
-===(UDIC)===-

Share this post


Link to post
Share on other sites
All "3d" is 2d.

I don''t really think it''s necessary to do 2d _buffer_based_ graphics before doing "3d." But you should know what your preferred 3d graphics API is doing, at least for the simple stuff.

If I told you how to plot a pixel to the screen in Mode13h, could you make a wireframe cube spin?

If you couldn''t, you don''t understand what your API is doing for you, and you should learn.

Share this post


Link to post
Share on other sites
Personally, I learned both 2d and 3d in a leapfrog fashion. I learned a little DirectDraw, and then a little OpenGL, and alternated. The main reason I learned DirectDraw was that it was a good start just to learn DirectX period. After that I understood COM better (I usually use Delphi, and doing COM in Delphi is a little different since it does reference counting and such for you), and could move on to other interfaces in DirectX. One thing that is nice about doing 2D is that you can get used to vector math in a little easier environment, but overall if you learned it in highschool (or are still in highschool and read up on it elsewhere like me ) along with basic matrix operations, then you should be good to go. TWGPG is a good book for A.I., physics, DirectSound, DirecInput, ect..., so I would keep it even if you don't use DDraw. There are some articles on 3d on the CD too, and a plethora of other cool stuff to look at, so I'd check that out.

Edited by - HardMario on August 8, 2001 11:03:03 PM

Share this post


Link to post
Share on other sites
After Dave and I finished writing OpenGL Game Programming, we had a discussion on whether or not people should learn 2D or 3D first, or both.

It''s funny, because beforehand we had both supported the notion that people new to game development should strictly work with 2D games until they were comfortable with the process; however, after writing this book on 3D graphics and game development, we both concluded that it really didn''t matter what you start with.

While it can be said that 2D and 3D are alike in that it''s a matter of +/- one dimension, the harsh fact is that there''s much more to it than that. When you''re working in 2D, you''re ultimately working with pixels, whether you represent your 2D world in world units or not, you still have to work with individual pixels and screen coordinates. When working with 3D, this is not always the case. Using an API, you can think of the 3D world as the real, physical world, which for some people (such as myself) is much easier than thinking in terms of screen coordinates. When you''re doing your software renderer, sure, you have to work with more 2D techniques such as polygon scan conversion, poly fill, clipping, etc. (I''ve been there) But to get something working in 3D nowadays is very easy, and as you work more with 3D, you can learn more about the advanced techniques involved to create truly awesome worlds.

But hey, that''s just mine and Dave''s opinion. It''s ultimately up to the person wanting to learn. He has to decide what will work best for himself.

Kevin

Share this post


Link to post
Share on other sites
i really appreciate the responses ive received in this thread. my decision to start off with 2D games (tetris -> pacman -> supermario) then jump over to 3D has not been easy...im still comtemplating whether or not I should grab TOTWGPGs first, learn about basic window game programming environment or just completely start using 3D with opengl

the 2 biggest reasons why i dont want to learn 2D right away with TOTWGPGs is that it uses DX7, and i dont wanna unlearn anything for DX8 since the two versions are supposedly really different architecturally, and that the author of the book allegedly uses a very awkward and unconventional coding style and unnecessary header files.

but wholeheartly think that one should start really small and incrementally move forward, and i agree with gmcbay that 2D and 3D game programming is fundamentally similiar and that learning the basics of game development in a 2D environment will make it easier for me to extend that knowledge into 3D, plus i dont really want to rely too much on a specific graphics API, as i''d like to use both D3D and OpenGL in any project

i think going from 2D game development (not just graphics) into 3D would be easier for me than jumping straight into 3D becuz of all the extra headaches that 3D brings ...and im afraid that ill just give up becuz be over my head

ill give it another day, but if nothing changes im gonna buy that TOTWGPGs learn 2D, finish up my final fight like beat em up game using Street Fighter characters...Final Fighters! then start research on 3D engine development with the OpenGL Game Programming book

Aug - Jan: 2D and Game Development Fundamentals
Feb - Dec: Research and completion of a basic 3D engine, graduate with a BSc in Computer Science and start working in the game industry

i just hope i dont dig myself into a hole by learning a more or less a software rendering approach with 2D thatll make it harder to transistion over to Hardware accelerated 3D

Share this post


Link to post
Share on other sites