views:

510

answers:

13

what programming language/languages do they use to produce games lik Bioware's Dragon Age Origins and some other 3-d games like Call of Duty?

If I would like to do 3d-game programming, where do I start? Are there even simple tutorials for this? I would like to do 3-d game programming for PC games:)

+6  A: 

C++ is a solid start.

Game Institute has decent courses (for a fee). This is by no means trivial. Start with the basics (object oriented programming, 3d animation, threading, etc) and you'll get somewhere.

Remember to have fun. It makes learning easier.

MPelletier
C++ is no the best way to start from scratch with graphics. I would suggest an managed language and then go to C++. Yes I agree, C++ will give the speed needed, but its not the easiest to start off with.
monksy
I disagree. C++ is indeed a very solid start if you want to learn how to code. The OP does not, he wants to create a game. Pretty moving pictures and sound. The interest in programming is just a side effect, because thats how games happen to be created. What the OP needs is something quick and simple to boost his confidence. After his first game in some "simple and managed" language, he can opt to recreate it "for real".
mizipzor
steven and mizipzor make excellent points both, even in disagreement. C++ is a tough place to start with, but it is the core. The easiness/power ratio will not get better with other languages, IMHO.If Ygam gets a kick out of creating his first 'Hello World', reading a first character input from the console, making a first button click do something, there's hope for him yet!
MPelletier
+1 for the awesome link.
Gabriel
+6  A: 

Most major games are written in C++. This does not mean that you have to use C++. For indy games you can also consider C# with XNA if you're more familiar with that (or want to play your eventual creations on your xbox 360 relatively easily). XNA also has the benefit of being free.

GarageGames also makes a relatively well-respected series of games engines (which are not free, but are very affordable compared to most), including one which adds the standard capabilities to XNA so you don't have to write it all from scratch.

MPelletier's advice is good, though. Game development is very complex, and even a simple game is a huge undertaking. Get a good grasp on the basics first, and I'd strongly suggest starting out with 2-D games.

Donnie
Maybe I'm misunderstanding, but C++ is free too.
GMan
+2  A: 

C++ is the standard language, but no large project uses only one language. Senior staff will use assembly in some places, graphics programmers will often use whatever shader language is appropriate for the system. Whoever is working on tools or the build system will typically use scripting languages such as Python, Perl, Bash/Batch scripting or others. Game programmers will typically also use an in game scripting language that can range from standards like Lua, Python, or UnrealScript, to in house scripting languages created just for that engine.

Game Institute -- I have mixed feelings about this place... They offer a specialized curriculum you have a hard time finding else where; however a friend showed me some tests from this place that had answers which were at best outdated, or at worst flat out wrong. I wouldn't suggest against them, but be open minded afterwards.

Gamedev.net -- THE amature game programming website. Great community, tons of articles. They have some great posts on the forums about how to get started. Even as a professional I still visit this site.

Drakonite
Gamedev has very good articles on the nitty gritty.
gath
A: 

Object oriented languages with strong graphics libraries are needed to develop those kinds of games.

Those games can be done with:

  1. C++ : DirectX (with VC++), OpenGL, SDL
  2. C# : DirectX, OpenGL C# bindings (would not recommend this)
  3. Java : Java3d (which has bindings to OpenGL), JOGL (Java OpenGL)

If you are interested in learning about 3D Graphics and C++ take a look at this.

monksy
+1  A: 

http://www.garagegames.com has good resources for getting started in game development.

http://en.wikipedia.org/wiki/GarageGames

+2  A: 

If you want to go the managed route, try the XNA Game Studio from Microsoft. I think it's a good place to start, and you might not get discouraged (as I have) with some of the more powerful and complicated technologies, like pure DirectX or OpenGL programming with C++/WIN32. A lot of that stuff is abstracted away so you can focus on actually creating something. Heck, you could even make something that can end up on Xbox Live. It's free to start developing and there's sure to be a lot of resources out there to get you started.

Pwninstein
+2  A: 

Have a look at irrlicht. Its a very good game engine, its easy to use and best of all its free. The engine is in c++ however I remember I saw a .net wrapper of it also.

Probably its not as powerful engine as the ones used by Call of Duty etc. But assuming you are only starting game development you will never need such advance features. You can build very decent games using irrlicht. The site also has few tutorials and active community.

Umair Ahmed
+1  A: 

There are some great C++ game programming frameworks to get you started. DarkGDK is a great one, I have used it and it takes some of the pain out of making a game in C++.

Sam152
+6  A: 

I don't want to be discouraging, but I don't want to lie either. Creating even the simplest 2D game is a major feat. Here are some things you'll probably have to learn, if you're going to code a game on your own :

  • General concepts and techniques used in computer graphics.
  • Network programming (if applicable)
  • Audio programming and Digital Signal Processing theory.
  • Linear algebra, trigonometry and geometry branches in mathematics
  • AI concepts like fuzzy logic, finite state machines or neural networks.

Not to mention you need a solid background in programming. Most of the bigger game developers use C++, which is a decent choice when performance is of the essence. But one size doesn't fit all. I recommend you look at C++, Python and Java and figure out which one you like to use.

Now, this might come as a disappointment, but it needs to be said. If you're just starting out with programming, you're not going to make a 3D game for a long time. I learned C++ back in 2002 and I still learn new ways to use the programming language. There's a lot of books named Teach yourself programming language X in Y weeks. Don't believe the lie. There is no way one can learn anything that complex within that timespan. What I'm trying to say is, don't be in a hurry! Patience is everything, and there is no such thing as a free lunch.

And when you finally have the knowledge to make a game, start simple. Even coding a Nethack clone which uses ascii art graphics gives you new experience you can extend on. And your first games should be 2D. Working in two dimensions is much simpler, and a lot of the math involved extends nicely to three dimensions when you are ready to advance further.

Mads Elvheim
+2  A: 

Take a look at the Unreal Development Kit. The same engine that was used to power Unreal Tournament and Gears of War is available free for independent developers and takes care of the truly grueling work in making a game.

It's a great way to get into learning the terminology and concepts, while gradually adjusting you to the realm of software development through scripting. Once you feel comfortable with how geometry, textures, particle effects and lighting is used, then venture into the territory of XNA. In both the case of UDK and XNA, you'll find both excellent communities and dozens of tutorials available.

seraphym
gath
+2  A: 

May I suggest a different approach? Im going to assume that 3D graphics are not essential. I believe that if youre really just starting out, going straight for 3D rendering can be a bit complex. 2D is much simpler.

Therefor, follow these simple steps, expect it to last about two hours or so:

  1. Download (and install) Python
  2. Download (and install) PyGame
  3. Download (and install) Notepad++, you will use this to write your code, save it with the .py extension (not .txt)
  4. Head over to the Line By Line Chimp Tutorial (great tutorial!)

After youve read and experimented with that you should be able to create something of your own with a complexity level of, say, Tetris. I created an asteroids clone.

Dont hesitate to return here on Stackoverflow to ask for help if you run into problems. I have helped a few friends through that tutorial that wanted to "try out game programming" and should be able to help you with anything you can manage to get stuck on.

Now go nuts on the keyboard! Before you know it, you'll have created Dragon Age 2!

mizipzor
+1  A: 

Typically professional games are primarily developed in C++. However, unless you're a veteran C++ developer I'd recommend choosing a language you are more familiar with while learning the nuances of game development otherwise you may find yourself battling the syntax and general nature of C++ more than the conceptual particulars related to game programming. C# and XNA, or even the now-defunct Managed Direct X, is a great way to start as a few have already mentioned. A wealth of information covering game development in C# is readily available on the web and in print and a large number of communities exist to provide you support while you learn, so take advantage of them.

Also take note that while XNA is a more complete game development framework there are many other available libraries such as Ogre, OpenGL, and Irrlicht that cover everything from audio to physics.

Try to gain an understanding of game fundamentals and build up your experience through ever increasingly complex projects. This is not to say it is impossible to take on a large project as your first, but in my experience smaller projects tend to be completed with more regularity. Each game you finish will build your confidence, experience, and skill set.

I'd recommend checking out http://www.GameDev.net, the resources there are invaluable. Riemers.net also contains a some great tutorials on XNA and Direct X.

Finally try not to become disheartened by the vastness of understanding game development requires. Things may seem overwhelming when you're beginning in the field but try to keep in mind that even the industry gurus started with no knowledge at some point. With persistence, passion, and patience you'll master the necessary skills to create truly enjoyable games.

Good luck.

AldenHurley
A: 

Try out looking at open sourced games. This game just went open source recently and it's pretty advanced. It already employs great physics, visual effects and cut scenes so this could be a great learning opportunity.

jonasespelita