views:

436

answers:

7

I'm looking for a new project to fill the evenings and I wish to make a 3d game. I have mediocre experience in Pascal,and VB but realise that neither of these may be best for the job. I realize I may have to spend some time reading some books and maybe learning a new language but I don't actually know what would be needed?

Would learning C++ and stuff about OpenGL be best?

What do I do? and how do I do it?

+4  A: 

I'd check this out on SO - http://stackoverflow.com/questions/174830/learning-game-programming

Its a more general question, but should provide to be very useful in what you need to know.

kevchadders
A: 

You could try this.

http://www.amazon.com/Beginning-Game-Programming-Tom-Miller/dp/0672326612

I think most professional games you buy are written in C++. But, from the languages you've got experience with, using C# may be less of a learning curve.

Scott Langham
+1  A: 

OpenGL is C library and will hardly help you to learn C++. Start with a OpenGL 3d game... try something (far) easier. You'll be drown in window management/texture loading/models generation/GL extensions and many other stuff.

alxx
+1  A: 

For a sneak peek at game development, i'd recommend using a tookit which helps you avoiding the lowest level stuff such as loading sprites and playing soundfiles.

For a 2D-Game, I have had quite a good time using Allegro, which is an open source giftware cross platform toolkit. Alternatively, if you want to stay with Pascal

Some Games developed using allegro can be found on this site.

If you already have experience in game development or want to get started with 3d right away, i'd suggest NeHe's Opengl Tutorials as a primer.

This will be a lot of work, but well worth it.

Or you could have a look at MS XNA. I have no experience with MS XNA, but heard it should be quite friendly to the Novice.

sum1stolemyname
+8  A: 

The first thing I'd recommend is to step back from the technology and plan your game out. Write your ideas down, plan the levels on paper, work out the goals and game mechanics etc. It's a mistake to start prototyping in code immediately, especially if you have no game design experience.

The next steps are really dependent on what platform you're targeting. If you're definitely targeting a 3D game and aren't too confident about the programming side of things (and 3D engines are complex beasts), I'd go for a pre-built engine such as OGRE (open-source, OpenGL or DirectX) or Epic's Unreal Development Kit. OGRE was used to produce Torchlight on PC, and UDK boasts one of the best engines on the planet and is free for non-commercial use. Both let you focus on scripting your game rather than having to mess with the logistics of game engine programming, and may be just what you're after.

If you want more fine-grained control over every aspect of your project, then going the XNA route may be what you're after. This is free for PC games development and will let you target Xbox 360 (for a price) and Windows Phone 7 platforms if you want. You will have to learn C#, but that's a good investment as it's a great popular language.

Final tip: start small.

Best of luck and don't forget to have fun on the way!

Dave R.
other alternatives would be Panda3d(open source, primarily used by Disney), Unity, Valve's Source engine, and Blender's built in game engine.
stonemetal
+2  A: 

I suggest you have a look at Blender, it's a very powerful tool with full support for Python scripting (for modeling, rendering, animation and AI) and OpenGL. It's open source, its runs on Windows, OS X, Linux, FreeBSD and (drum roll) Sun Solaris. Games aside, I currently rely on Rhinoceros 4 for 3D modeling and rendering (with VRay), but I think learning Blender would be "the sh*t". Btw, you can get started with some basics in 3D modeling using Rhino. It's powerful, intuitive and it supports VBscript (also other languages in 5.0). Not free, though.

EDIT: the reason I think you should try Blender is that it allows you to focus on the looks while using the power and ease of learning of Python; you can work with high level tools for both the graphics and the programming, there are physics tools and there's already an open source game built with it.

Mattia Gobbi
Blender has a helluva complicated interface because of it's powerfullness, so learning the use of blender alone is quite a task.
sum1stolemyname
@sum1stolemyname It could be, I heard it can be somehow difficult to get used to it. still, if we talk about making a 3D game, its not easier at all to learn use a corresponding 3D design and animation software like 3Ds max or maya, which must then be integrated with some programming language, physics libraries and stuff. one way or another, its gonna be really hard for the thread opener to reach his goal without learning a huge amount of new notions.
Mattia Gobbi
@Mattia I fully agree with the amount of work it is to create a 3d-Game all by oneself.
sum1stolemyname
+2  A: 

Hi Arthur,

This type of project can be a lot of fun, and kudos to you for wanting to try it out. I would warn you, though, that it can get very frustrating if you just push at it aimlessly.

There are already several good answers posted before me, and I'd like to expand on them, as well as offer my own advice.

As has been mentioned, you're going to want to plan out your game before starting to program it. Some advice on this:

  • Pick one simple idea to build around
  • Decide on a small set of "shiny" features
  • Don't worry about "How" it will work yet, just "What" you want to do

Make sure the project is something you feel like you can stick with, regardless of roadblocks you might encounter. Programming can get frustrating, especially when complex issues arise. If you have the drive to push through, you'll enjoy the end result even more.

With a clear direction, you will have a better idea of what you already know how to do, and what you need to learn how to do.

Another piece of advice given already was to look at the following question: http://stackoverflow.com/questions/174830/learning-game-programming

The accepted answer runs through the different parts of a game engine. You won't necessarily want to build the engine yourself, but if you do, it's a good guideline to the bare minimum of work that needs to be done to build one.

However, there are other options out there. Free and open-source engines are available to use for your project. OGRE has already been mentioned, and it's one that I've heard good things about from amateur designers trying to build their own games. One that I've recently had a chance to look through the code for is Valve's Source Engine, which would be a good choice if the game you want to design could be done as a "Mod" for the Half-Life series of games (which can still be fun). Another way to use these engines is to use them as learning references to see how others have implemented basic (and not-so-basic) engine features.

You can see why, with so many options, it's good to first decide what you're doing so you can make good choices for your tools and other options.

You talk a bit about language in your question, so let's talk about that next. My background is in C++, so it's an easy choice for me what language to use. However, using C# and the XNA Framework is a good place to start if you want an alternative. Even if you're not sold on XNA, you can still use C# and learn DirectX (Basic DirectX Tutorials: ZophusX).

EDIT: IT seems ZophusX no longer has anything on C#, but the DirectX Tutorials are still to notch (though basic)

Finally, if you come to a point where the project is not enjoyable, take a break. Maybe discuss it with someone, or return to your design and make some tweaks. It's a personal project, so you're under no deadlines beyond what you apply to yourself. I believe wholeheartedly that this type of project is a great way to learn or improve programming skills, and makes for an enjoyable experience.

Marc Reside