Archived

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

drdarkon

When is it time to move to 3d?

Recommended Posts

Hello there, I have a question relating to 3d games. I have made a few small 2d games and I understand the fundamentals of game programming. I feel very comfortable with C and I have a firm grasp of many C++ features such as classes, etc. I am wondering if I am at a point where I can move into 3d? I have a very big interest in doing 3d games. I started doing 2d stuff first though because I knew that I should understand the game elements before I move into the realm of 3d. Now I am wondering if you think it is okay for me to make the leap ito 3d... Also a couple questions on 3d stuff. First off, what is Quake, Doom 3, etc written in. I am wondering because I am wondering what is the most used language for 3d stuff. I don''t want this to become a huge argument over which is better. I am just wondering what are the advantages and disadvatages of each, and who uses which. Thanks a bunch in advance . I will be checking out the books section of this site looking for some good books. - Thanks

Share this post


Link to post
Share on other sites
Yes, certainly, now would be a very good time to get into 3d. It''s very good that you''ve had experience with 2d games; that''ll help you immensely. This is NOT to say that anyone but you can be the judge of what you can accomplish; you could start 3d programming at any time - earlier, now, or in the future.
As to who uses what and so forth:
It seems to me that there are two programming languages used most - C/C++ and Visual Basic. Of course there are quite a few others that may or may not be suited to graphical programming, but I won''t get into them.
C++: This language seems most often to be the faster one. (Meaning its compiled code executes more quickly.) It is quite often used by the makers of those 3d-intense games that are currently on the market. Since you appear to have had plenty of experience with it, then (in [u]my[/u] opinion) you should use it.
Visual Basic: This language is generally slightly slower to execute when compiled, but it is almost certainly easier to learn and program in. It is often used to throw something together quickly, something for which the slightly slower speed doesn''t matter, such as editors and testing programs, and non-intensive graphics programs (it can also used for 3d programs, but with mixed results in my experience).

Summary: You should probably stick with C and C++. It would also be a good idea to learn how to program with DirectX or OpenGL (I won''t recommend which; each has its own strengths and weaknesses), since these are the up-and-coming 3d APIs, and are much easier and more standardized than trying to build your own 3d graphics foundation with straight C++.

Twilight Dragon
Win32 API Expert
www.freewebz.com/j-world

Share this post


Link to post
Share on other sites
Okay thanks for the advice and the encouragment. I am currently using C/C++ and I think I will stick with that. What about OpenGL vs. Direct X? Again, I don''t want to make it a huge discussion, I am just curious to know what you believe are the strengths and weaknesses of each, what games are written with each (just a couple big name games). Thanks again

- Jesse Barksdale

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Don''t listen to people that say to start small. They''re all full of it. How many of them started small? Many people here started big and failed. So they reason that starting big early on is a bad thing. So what if you fail the first, 2nd, 3rd, or whatever times. Its all apart of the learning experience. There''s nothing wrong with failing as long as you learn from it. Jump into 3D programming. Make up OOP interfaces; try to make a game. So what if certain things don''t work. Just try new ones. You''re still in the learning phase so learn. Its not like you''re trying to make a game to sell. Practice lots of things so you can have first hand experience on what''s better. That''s what i think.

Share this post


Link to post
Share on other sites
Well,

That is straight foward and honestly refreshing. That makes me feel good about diving right in to 3d games. Now do you have any advice about OpenGL vs Direct3d?

- Jesse Barksdale

Share this post


Link to post
Share on other sites
You probobly arn''t aware, but this question has been deadly on these forums. If you''d really like to see the trouble, do a search on the forums for it. Although there''s a decent article about this on this site, I''ll make a quick answer of my oppinion.

I recommend neither to start out. Start with a ''simple'' software rendering engine. That will teach you the fundimentals of 3D graphics programming so that if you were to ever get caught in a situation where you couldn''t use ogl or dx, you have something to fall back on. I honestly think both are good to work with and no matter what people say, they''re both just as powerful as each other. DirectX and OGL are both releaseing new versions fairly soon so try both current versions to see which one you prefer and stick with it.

If you want a more detailed response, visit the article about this topic on this site. One more thing, good games on the market are written in a lot of assembly also just to let you know. C++ can''t get quite the speeds assembly can.

---
My Site
Come join us on IRC in #directxdev @ irc.afternet.org

Share this post


Link to post
Share on other sites
That bit about assembly is actually not true anymore. Take, for example, the Torque game engine (Tribes II engine). There is very little assembly used there. The days of using assembly to optimize certain algorithms are gone. In most cases, good optimization of your C/C++ algos will get the performance you need, if they need to be optimized at all.

The best argument for using assembly in today's games is to take advantage of special instruction sets such as SSE. This is useful for code that will be used heavily throughout the engine, such as the 3D math routines, and even then may not be nessecary if profiling and optmizations don't warrant it. And when I speak of assembly, I am not including shader languages which have a similar syntax.

My advice, don't get sidetracked learning assembly. Stick with the language(s) you know, learn 3D fundamentals, and go from there. The idea of coding a software engine is a good one, IMO, and will really give you a good grasp of what goes on under the hood with D3D and OpenGL.

[edited by - Aldacron on July 15, 2002 11:17:51 PM]

Share this post


Link to post
Share on other sites
Just for the record...

All of id''s games (Doom, Quake, etc.) have been written in C, with the exception of upcomming Doom 3, which is finally being written in C++.

Half-Life uses C++ for its Game DLLs, but its engine is written in C, which is because its based off of the Quake engine (and slight additions from Quake 2).

No idea what Unreal is written in.

Share this post


Link to post
Share on other sites
quote:
Original post by GroZZleR
Just for the record...

All of id''s games (Doom, Quake, etc.) have been written in C, with the exception of upcomming Doom 3, which is finally being written in C++.

Half-Life uses C++ for its Game DLLs, but its engine is written in C, which is because its based off of the Quake engine (and slight additions from Quake 2).

No idea what Unreal is written in.


Doom 3 graphics engine is still pure C, however the rest is C++.

Share this post


Link to post
Share on other sites
quote:
That bit about assembly is actually not true anymore. Take, for example, the Torque game engine (Tribes II engine). There is very little assembly used there. The days of using assembly to optimize certain algorithms are gone. In most cases, good optimization of your C/C++ algos will get the performance you need, if they need to be optimized at all.


Umm, I don''t wanna get in an argument or anything but I disagree. For one, I didn''t recommend using assembly but ment to comment on the previous q of what games were written in. Maybe it came off the wrong way. Anyways, I only said it''s faster in assembly, not that it should be used constantly.

quote:
Just for the record...

All of id''s games (Doom, Quake, etc.) have been written in C, with the exception of upcomming Doom 3, which is finally being written in C++.

Half-Life uses C++ for its Game DLLs, but its engine is written in C, which is because its based off of the Quake engine (and slight additions from Quake 2).

No idea what Unreal is written in.


Also, if you look at the original doom/quake engine, you''ll notice there''s a lot of assembly in there although it was written in c. I''m not contradicting you, just commenting.

---
My Site
Come join us on IRC in #directxdev @ irc.afternet.org

Share this post


Link to post
Share on other sites
How the hell would you make your own graphics API? ie. not directx or openGL? wouldnt that require that you make all the drivers and stuff? that doesnt sound like a newbie task to me...

Share this post


Link to post
Share on other sites