views:

562

answers:

13

I've been learning a little of C++ and Java but my main field of interest is gaming and i would like to write code for making my own 3D Games to complement my artistic expertise

+14  A: 

I think the C++ is a classical game programming language. Most of the PC games are being written in C++. So I would continue to learn C++ and a 3D graphics library - OpenGL, DirectX or something else.

grigy
From everything I've seen, pro games have a C++ engine with a scripting overlayer. Lua is a popular scripting language.
Paul Nathan
+9  A: 

Try the free Visual C#.NET Express Edition and check out this page on Game Dev from Microsoft here. Its quite easy using Managed DirectX.

Jenko
+5  A: 

Plenty of engines should be available for C++. My personal favorite game programming environment, however, is Python with Pyglet. That should give you fine and convenient control of windows and monitors, OpenGL contexts, batches of indexed vertex arrays, image loading for textures, OpenAL audio, and of course keyboard and mouse events.

Nick Retallack
+6  A: 

Check out pygame if you want to try Python.

Mark Ransom
pygame is a SDL Wrapper and is for 2D games
Martin
Oops, sorry about that.
Mark Ransom
Actually, PyGame combined with OpenGL bindings makes a perfectly viable 3D framework. Alternatively, Pyglet can be used instead of PyGame - it contains its own built-in set of OpenGL bindings (or you can use PyOpenGL if you prefer). Once you have your data in vertex arrays or buffers, either of these approaches will yield 60fps animation on modest hardware with about 10,000 vertices.
Tartley
I miscounted. I'm getting 80,000 vertices.
Tartley
+2  A: 

I think even C++ can be a little heavy; learn C. Learn it WELL. Optimization of things like game engines is really best done in C, and NOT C++; while I like C++ for high-level things and design and stuff like that, game engines are usually written in optimized C. Learn it, and learn it well. And then, when you think you've learned it well, learn it better. There's a lot of depth available in extremely well optimized C; and you're going to need all that optimization.

McWafflestix
+4  A: 

Naughty Dog uses Common Lisp.

Svante
I know the guy who wrote their implementation. He is a freaking genius... I wouldn't necessarily recommend following their route though...
Andrew Rollings
I thought they used GOAL (Game-Oriented Assembly Lisp)
Nick Retallack
Naught Dog is a game right?
rzlines
Roman A. Taycher
+2  A: 

To get quick results up on screen, and focus on the fun/art side rather than get entrenched in API details, you could try something like DarkBasic or Blitz3D.

These are simple to use languages that are geared towards 3D games.

Andrew Rollings
"to complement my artistic expertise" sounds like a person who can draw, and these simplified libraries are definitely the way to go. C would be a different world.
Karl
+3  A: 

I'd recommend that you start with C++ and one of the 3D graphics libraries, since it is probably what you will be using if you get a job in the field. May as well get a head start now. Alternatively you could give XNA a try, I heard it's pretty good as well.

John T
+3  A: 

Depends on your ultimate platform preference, I think.

C# is very nice now. Combined with the Microsoft XNA platform you can produce some really great games with limited experience. Also, the community is really shaping up nicely so you'd have tons of resources to draw upon.

Here are a couple of good resources:

XNA Creaters Club

Ziggyware

Sailing Judo
+7  A: 

Since it is to complement artistic experience, I would highly recommend C# and XNA. C and C++ can be a nightmare because of the pointer syntax when you start.

C# does all this for you.

Using XNA, you can develop games for XBox 360, Zune and PC. This gives you a few interesting targets to deploy your games.

Using C++ (as an hobyist), you probably only develop easily for pc.

(I am assuming the poster does not have much programming experience)

For thoses who said to go C because of performance, I think this would be premature optimization, and the poster is learning, so he should not bother with optimizing, until he gets the concepts right.

Martin
I believe Martin has a very wise perspective here: C#/XNA will get him into the concepts needed for game programming without throwing him into the ocean and telling him to swim.
EdgarVerona
A: 

I'd like to echo the suggestions for Python, especially for someone who hasn't done masses of programming before. Learning it is very easy. Getting something up and running takes a very small amount of code. Programs will pretty much 'just work' seamlessly across Windows, Linux and Macs. Bindings to OpenGL are available.

Since the grunt work is being done by the GPU, Python being a slow language isn't much of an issue - I whipped up a demo of 80,000 vertices at 60fps over this weekend, on modest hardware (2005 end-of-line ThinkPad T60, an ATI Radion X1400.) I know that isn't going to break any records, but on the other hand, it's plenty for a beginner to get started with.

Tartley
A: 

I would recommend XNA 3.0 C# libraries. You can build very powerful games for PC / XBox / Zune and the learning curve is very low if you have any C# or Java programming experience.

Andrew Hubbs
A: 

Speaking for my current studio, we use:

  • primarily C++, with some C++0x and boost features for the engine
  • lua for scripting
  • occasionally C for lower-level libraries the engine uses (e.g. sound)
  • a bit of ARM, PPC, or x86 assembly here and there for really core engine routines (instrumented profilers, image processing, matrix manipulation, DMA engine control) -- almost always backed up by an equivalent C implementation, for porting
  • C# artist- and designer-facing tools (mostly producing intermediate data formats)
  • C++, C#, or Perl for data pipeline (intermediate to final) and coder-facing tools; some bits of python here and there too
  • make and jam for source and data building respectively, although we're moving toward all-jam

We occasionally do fun little experiments like rolling tinyscheme into our engines, to see how that works... But by in large, the above is a mostly-exhaustive list.

leander