Archived

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

EbonySeraph

Should I not be using 3D?

Recommended Posts

I havent learned anything about 2D graphics(thought the concepts are probably too easy.) I did all the matrix crap for 2D graphs in algebra one but have never programmed anything 2D before. Should jump right in and start learning Direct3D like I am or should I learn only 2D first. And the NeXe tutorial starts you off learning 3D anyways...so I am thinking its ok that I am learning 3D first. And besides, I dont know any APIs that are focused on 2D anyways. And barely any games are made 2D anymore. The closest thing are RTS games but even those use an isometric veiw. "Ogun''s Laughter Is No Joke!!!" - Ogun Kills On The Right, A Nigerian Poem.

Share this post


Link to post
Share on other sites
Thanks, I just though there is an oder that you should learn things in. I know most people start out making 2D games before 3D and here I am learning graphics in 3D and not 2D...

"Ogun''s Laughter Is No Joke!!!" - Ogun Kills On The Right, A Nigerian Poem.

Share this post


Link to post
Share on other sites
Ok, first NeXe start off with Direct 3D because the purpose of the articles is to teach Direct 3D. Second having and isometric view in a game doesn''t mean the game is 3D, ex. Starcraft, Diablo, Age of Empires were all 2D.

Ok now I think you should learn 2D first here''s why. 3D graphics is more advanced than 2D graphics, and 2D graphics may seem very simple to you, but the reason to make a 2D game is to learn game programming not graphics programming. Game programming involves game logic, structuring a game, organizing data, etc. Also, you may want to do a game which involves AI routines, multiplayer modes, etc. Doing these things within a 3D game can get very complicated and will take much longer to get the results you want, almost everything becomes more complicated in 3D.

Finally, Direct X 8 supports 2D b/c DX 8 has every previous version of DX in it, so the Direct Draw from Direct X 7 is still there. Also, you could use sprites in DX 8 and ignore the z-coordinate.

Digital Radiation

Share this post


Link to post
Share on other sites
Well, what +AA said is all well and good, but who the hell wants to learn and program game logic and multiplayer modes when what you really want to do is learn 3d?

Learn what you are motivated to learn. You''ll very quickly see where your deficiencies are and correct them quickly. Learn 3d AND 2d simultaneously. How could it be any better than that?

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
I agree that if you''re into learning 3d go for it. Keep in mind that you might have serious troubles along the way but if you can handle that (there are a lot of people on these forums who can''t) go for it.

Share this post


Link to post
Share on other sites
I''d recommend learning some of the 2d graphics stuff, because somewhere down the line, chances are you are going to use it. Maybe you are writing a game that will have some special effects that will use a lot of the concepts from 2d, or the most likely thing, is that even if you only make 3d games the rest of your life, you will probably make some sort of editor at some point, that will use 2d graphics.
so, the point is, even though you don''t think you''ll use it much, and that you may not make a game with it, atleast be able to write some simple progs and demos in 2d, so you can have that background going into 3d.
Just my oppinion mostly, but a good one I think.

--Drakonite

[Insert Witty Signature Here]

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
What +AA_970+ is complete bullshit, and you guys have the wrong idea about 2d.
Here is why.
#1 AA_970 2d graphics aren''t made to learn. That statement right there is so wrong it''s not even funny. In fact, I think if you said that in person, you''d probably get an ass kicking. In this day and age 3d graphics are complicated, but not complicated enough that lot''s of magnificant art can be put into it. No matter how complicated and realistic looking the art is in a 2d texture it will take as many resources as a crappy texture. Also, many 3d games are far too complicated. Some people want simple games because most of them are just funner to play if done right. 2d graphics are a style, not a learning device.
#2 DirectDraw isn''t JUST in directx8 because it uses the OLDER stuff. Thats the most bullshit I''ve ever heard. DirectDraw might not be updated that much, but thats because 2d isn''t as complicated and doesn''t need much updating.

Also, 3d isn''t that much more complicated as you think it is. If you''re writing the 3d code yourself its a lot more complicated but if your using an API like OpenGL or Direct3d it''s not that much more, you just have to store an extra dimension.

So here is my advice to EbonySeraph. If you want to learn 3d first then go for it because you probably won''t realize it at first, but when you learn 3d graphics you''ll end up learning a lot about 2d also.

Akira

The only witty comment I can think of is don''t listen to peoples shitty advice, especially if they tell you that they keep stuff in computer stuff because it has old stuff in it, if 2d graphics were obsolete they would get rid of it to save space in the libraries etc.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Well, i started the same way you did. First book i ever bought was "The Black Art of 3d Game Programming", and let me tell ya.. i didnt have a clue. With all the programming experience i had, nothing in the book looked at all familiar. But i wanted 3d, not 2d, so i bought another book.. i bought "3d game programming with c++", read it all, loved the book, liked how it taught everything.. then when i finished it i realized i couldnt use any of the info as it was too out of date, and i still couldnt picture anything in 3d.. 2d mind i guess =(. So i gave up, i went to 2d, mastered it, and tried out 3d again.. the 2d knowledge didnt help AT ALL! Eventually i just sat down, re-read all my 3d books over and over again, going through them very slowly, read hundreds of opengl and direct3d articles, and books, untill i finally got down the base knowledge.. took almost a year to get the base knowledge down, but once i got that, i got everything else very very quickly.

So IMO, it doesnt matter if you start 3d, if thats what you want, the 2d knowledge didnt help me any, you should be able to do straight 3d fine. 2d did, however, help me in creating level editors for my 3d "games". Anyway, all knowledge is good knowledge =)

Share this post


Link to post
Share on other sites
I''m pretty sure it IS just there to have backwords compatability...

I''m sure I read somewhere that Microsoft officially said they wont be updating DirectDraw anymore, and highly advise you to use D3D even for 2D projects.

OpenGL doesn''t support 2D graphics well, and I assume D3D doesn''t, eather (I use OpenGL), since you have to do some tricks to get it working right... it''s much easier to do 3D in OpenGl to begin with.

Once you know how, though, it''s quite easy to do 2D in OpenGL... just gota'' figure out how to get the camera angle right :-)

Drawing 3D graphics in OpenGL is easy.
Drawing 2D graphics requires you to know how to draw 3D graphics.

Problem lies in the usability... 3D graphics in OpenGL may be easy to draw, but doing something usefull with them is another story. Collision detection, effects, and an endles list of hurdles you gota figure out to make even a simple 3D engine are quite hard. Making a 2D engine, though, is one of the easiest things to make as far as games go :-)

3D = good if your just learning graphics
2D = good if you want to learn the other parts of game design too

Cuz, like someone said, just about everything is far more complicated when dealing with 3D crap, and the amount of stuff you need to learn to do even simple engines is a LOT...

Pluss, you will always need at least a little 2D knowledge... even 3D games have 2D GUIs :-)

Share this post


Link to post
Share on other sites
Since 1997 or even sooner, NEC engineers are saying to use the 3d rendering pipeline speed and efficiency to write 2D games.

It''s faster, gives you a lot of nice effects almost free and make the dev easier.

M$ is simply repeating what NEC is saying since years.

-* So many things to do, so little time to spend. *-

Share this post


Link to post
Share on other sites
quote:
Original post by Sydius
Drawing 3D graphics in OpenGL is easy.
Drawing 2D graphics requires you to know how to draw 3D graphics.



Not really, you just use gluOrthogonal (sp?) to set an orthogonal projection matrix, set your MODELVIEW matrix to the identity and you''re all set for 2D stuff... You can supply coordinates in screen spave and everything using glVertex2i(x, y);

Also, about NEC. What do they have to do with 2D/3D graphics? I thought all they did was make white goods and TV and suchlike?
I''ve been known to be wrong though...



War Worlds - A 3D Real-Time Strategy game in development.

Share this post


Link to post
Share on other sites
quote:
Original post by Anonymous Poster
What +AA_970+ is complete bullshit, and you guys have the wrong idea about 2d.
Here is why.
#1 AA_970 2d graphics aren''t made to learn. That statement right there is so wrong it''s not even funny. In fact, I think if you said that in person, you''d probably get an ass kicking. In this day and age 3d graphics are complicated, but not complicated enough that lot''s of magnificant art can be put into it. No matter how complicated and realistic looking the art is in a 2d texture it will take as many resources as a crappy texture. Also, many 3d games are far too complicated. Some people want simple games because most of them are just funner to play if done right. 2d graphics are a style, not a learning device.
#2 DirectDraw isn''t JUST in directx8 because it uses the OLDER stuff. Thats the most bullshit I''ve ever heard. DirectDraw might not be updated that much, but thats because 2d isn''t as complicated and doesn''t need much updating.

Also, 3d isn''t that much more complicated as you think it is. If you''re writing the 3d code yourself its a lot more complicated but if your using an API like OpenGL or Direct3d it''s not that much more, you just have to store an extra dimension.

So here is my advice to EbonySeraph. If you want to learn 3d first then go for it because you probably won''t realize it at first, but when you learn 3d graphics you''ll end up learning a lot about 2d also.

Akira

The only witty comment I can think of is don''t listen to peoples shitty advice, especially if they tell you that they keep stuff in computer stuff because it has old stuff in it, if 2d graphics were obsolete they would get rid of it to save space in the libraries etc.




#1 I never said 2d graphics are made to learn, they are used to learn because they are simpler to work with than 3d graphics. Yes you could make simple 3d games, no one is gonna start out making quake, but even simple games require much more knowledge than a simple 2d game.

#2 Your looking way too deep into what I said. I was simply mentioning ways to get 2d graphics under DX8 b/c many people think that DX8 only has the ability to do 3D graphics.

Having said that I''ll agree with bishop_pass and say that you should learn what your motivated to learn, I guess it would be stupid to force yourself to learn 2D graphics if your not interested in it at all.

Digital Radiation

Share this post


Link to post
Share on other sites
Wow! Thanks for all the replies. I didn''t mean to start any arugments or flaming here...but now where would I learn 2D graphics with the DirectX API?

Also I think I could learn both at the same time...right?

"Ogun''s Laughter Is No Joke!!!" - Ogun Kills On The Right, A Nigerian Poem.

Share this post


Link to post
Share on other sites
I HAD to chip in here. here is my advice
LEARN 2D FIRST
I couldnt believe this quote:

"who the hell wants to learn and program game logic and multiplayer modes when what you really want to do is learn 3d?"

Well maybe thats where The company I work for now is swamped with 3D programmers who are ten a penny, and is desperately looking for people who understand code structure,gameplay mechanics and network coding? Do you people really think that games are nothing but 3D APIs? How much of a game like SimCity or Deus Ex is the 3D engine, and how much is game logic and other stuff? you would be amazed at what a small chunk the actual 3D engine is.
Modern games are absurdly complex, and few people have a real grasp of "The big picture". IMHO showing a completed demo of a 2D game earns you a much higher chance of breaking into the industry than a 3D demo with no gameplay,
My CV got me 5 interviews and 3 job offers, and it consisted of 4 finished games. Needless to say they were 2D games. (But i used the D3D API for 2 of them)
LEARN 2D FIRST!!!!!!!!!!!!!! that way you will time to learn "The other stuff".

http://www.positech.co.uk

Share this post


Link to post
Share on other sites
Start with 2D. Hell if you have the time/patience, start with 2D in DOS, you can get a lot more intimate with the video card and it never hurts to know something about the internal workings. DirectDraw hides so much, and you may end up losing out on critical knowledge, and when in a jam where you are having trouble with your code, knowing how the video card works can give you quite the idea of what can be wrong. And just because you learn 2D in math class doesn''t mean you know anything about 2D related to programming. You would be surprised just how much goes into making that 2D image appear on your screen.

Also the stuff above about game logic, yes, definitely. If you start with 3D you will become bogged down in a lot of stuff. You might end up being able to write an awesome 3D rendering program, but you won''t be able to program PacMan.

Hehe if your really up to the challenge, try using SVGA modes in DOS (hint: research VESA), you will have a new found respect for what goes on behind the scenes (as well as a massive headache)

Resist Windows XP''s Invasive Production Activation Technology!

Share this post


Link to post
Share on other sites
I think DirectDraw7 is about 3.27 orders of magnitude easier than x modes & SVGA bank-switching.

You need some 2D stuff for 3D games, so you may as well figure out how to draw stuff in 2D and load bitmaps.

You should just try working with 3D and see where you get stuck; that will indicate whether you need to rewind and learn all about 2D first. If you don''t know what a vector or a matrix is, then you have some math to learn to (or you can just fake it and try every combination until it looks & works like you''d expect...). Getting stuff on the screen and moving around in 3D might take you a while the first time. Getting stuff on the screen and moving around in 2D is a lot easier.

Share this post


Link to post
Share on other sites
Its probably a good idea to start with 2D then once you feel you''re comfortable with it, move to 2D in Direct3D, which will teach you the basics of 3D, then move into proper 3D.

If you like, download my D3DXSprite 2DBlit wrapper template and check out the source code to get an idea of how a basic 3D system works.

  Game Download  ZeroOne Realm

Share this post


Link to post
Share on other sites
Cliffski is right. You could get the best looking graphics in the world to the screen in 3D, but without knowing how to do anything with them is going to put you between a rock and a hard place. I haven''t even touched 3D yet but this has allowed me to focus on getting a firm grasp on the concepts of game programming.

Share this post


Link to post
Share on other sites
quote:
Original post by cliffski

I couldnt believe this quote:

"who the hell wants to learn and program game logic and multiplayer modes when what you really want to do is learn 3d?"


I couldn't believe this guy couldn't believe I said that.

It's pretty simple. Who the hell wants to learn that stuff when they want to learn something else. How damned simple could it be? Nowhere, and I mean absolutely nowhere is it determined that game logic and multiplayer modes are a prerequisite for programming 3d graphics.

Maybe the guy already knows about that shit. Or maybe the guy doesn't give a shit about that shit. He sure as hell isn't asking about it here. He's asking about 3d graphics. Who the hell is going to go off and tell him to learn that shit when it doesn't have anything to do with 3d graphics. Hell. maybe he doesn't ever want to do that stuff. Maybe he wants to become a 3d guru and program a radiosity discontinuity mesher for shadow computation of light maps for games.

Everybody here thinks everybody else here wants to program your basic little game starting with Tetris and working their way up to a 2d scroller and then an isometric game and then a first person shooter.

Hello. That is not the case.


Edited by - bishop_pass on June 25, 2001 11:54:04 PM

Share this post


Link to post
Share on other sites
just a simple question for the above poster...
have you ever programmed a whole computer game?
if not, what makes you think (as the 3D guru you must surely be) that you have even the slimmest understanding of what the other guys on your team do?
Right now i am doing sound coding, but thanks to my earlier experience, i know how the AI guys and GUI guys might want to interact with my sound stuff. In turn that means i code a more usefull API.
Some of the 3D coders out there should try adopting a similar attitude methinks

http://www.positech.co.uk

Share this post


Link to post
Share on other sites
bishop:

This is a game development site. And a forum entitled Game Programming. Is it not logical to assume he wants to do something that involves making games? Especially since there is also a devoted graphics forum here...

Resist Windows XP''s Invasive Production Activation Technology!

Share this post


Link to post
Share on other sites
quote:
Original post by cliffski
just a simple question for the above poster...
have you ever programmed a whole computer game?


No, and I don''t want to. Therefore I am proof positive that not everyone here wants to program a whole computer game. However, what were you doing in 1982 when I was programming scrollable maps in 6502 assembly language on an Apple II computer?

quote:
Original post by cliffski
if not, what makes you think (as the 3D guru you must surely be) that you have even the slimmest understanding of what the other guys on your team do?


Because I have programmed security analysis software for my own use that applied the back propogation learning algorithm to neural networks as described by Rumelhart in his landmark cognitive science book. Because I have programmed a lite Lisp interpreter. Because I have programmed a predicate calculus parser. Because I have hand drawn frames of little running characters for 2d applications on an Apple II computer. Because I programmed a ray tracer on an Amiga computer which intersected Bezier surfaces using 6th degree root finding algorithms. Because I coded a z buffer polygon rasterizer on a 386 under Windows 3.1 Because I have studied Soar and Cyc and other AI architectures. Because I was in conversation with the developer of the Soar API and was making suggestions to improve the Soar API. Because I have programmed genetic algorithms for option analysis in the securities markets. Because I have been in correspondence with an individual regarding the implementation of a full version of the ROAM terrain renderer. Because I have studied geomorphology and implemented an erosion algorithm to create realistic drainage netowrks given an inital fractal landscape. Because I have written an interactive spline editor.

quote:
Original post by cliffski
Right now i am doing sound coding, but thanks to my earlier experience, i know how the AI guys and GUI guys might want to interact with my sound stuff. In turn that means i code a more usefull API. Some of the 3D coders out there should try adopting a similar attitude methinks


Hmmm. Methinks some of the other coders out there should start going to the library and pulling out texts and journals on subjects other than game programming. I think they should start exploring what really fascinates them. But no, people like you think within a constrained channel and want to play it by the book which is some book called "How to program a game" or some other such nonsense. Such techniques will yield programmers who are able to program games like they were programmed yesterday. I think the more interesting and talented people out there are the ones who take the initiative to explore their passions and develop code which paves a new avenue for software development whereever it may go.

A useful 3d API is not built by programming a 2d game like Tetris. A useful 3d API is built by studying highly useful 3d APIs like OpenGL. A useful API in general is built by encapsulating the API''s functionality within a set of functions which minimize input and output to the bare essentials. A useful API is built by organizing an API''s set of functions into separate groups based on input and output.

Learning is a process which can occur in at least two different ways.

One of the ways being advocated here (not mine) is to follow through with the basics even if there is NO applicability to your goal. And you cannot make the claim that the topic starter here has or needs the desire to do something like multiplayer modes in games. You cannot even make the claim that he wants to get on a team and do that. Like I said, maybe he wants to do something entirely different. Even if there was applicability to his end goal, he may not realize how it ties in, and not retain what he has learned.

Another way being advocated here is to dive right into what you want to learn (my way). Upon realizing where you are over your head, you then backtrack and learn the basics. This is a top down learning approach. It has the advantage of tying the basics into the ultimate application and this increases retention and inspiration. It is akin to the light bulb going on when complete understanding occurs. It also provides greater motivation and interest in learning the basics.

Share this post


Link to post
Share on other sites
quote:
Original post by LordElectro
bishop:

This is a game development site. And a forum entitled Game Programming. Is it not logical to assume he wants to do something that involves making games? Especially since there is also a devoted graphics forum here...


Sure, but he was asking about learning 3d graphics. Why must one throw the whole "PROCEDURE and PLAN for BUILDING a GAME" at him? A lot applies to making games and there are numerous specialties of interest and expertise.

Share this post


Link to post
Share on other sites
Bishop_pass,

I know what you mean. I''m just now getting into 3d game programming. I have been reading and programming for a decade now on totally unrelated stuff ( mabye it''s been more than a decade... comodore 64 ). I always was reading the archived articals in my university library from siggraph ( chock full of great stuff ). Getting magazines and reading articals on the web. I''m farmiliar with matrix programming and stack processing. I remeber writing a protected mode memory manager that had video card auto-banking to make my trident 1mb video card appear as one linear peice of memory. Too bad it was completly in assembler I didn''t have access to a good complier at the time.

I''ve always just done what excited and facinated me. I also personaly believe that you should have a vision of what you want your game to look like before you write one line of code. Without a vision you will end up going on too many tangents.

Share this post


Link to post
Share on other sites