views:

2497

answers:

26

I want to get into game development. Can you give me some tips/directions to get started?

+16  A: 

This Stack Overflow question covers it

You get different views on Direct X, OpenGL and XNA.

Prakash
+1  A: 

Make a small game, put it on the web and you have the start of a portfolio. I am not in the games industry but I do have a small web game (Google "World of Arl") and it was not hard to setup.

Teifion
+9  A: 

You can start with XNA, it's a great platform for beginners.

Pop Catalin
XNA is nice because it does all the hard work for you, all you have to to do is find content and maek the logic for the game.
David Basarab
A: 

I suggest starting with a text-based game, eg. a Rogue clone.

grom
A: 

You can use the SDL library for cross-platform game development using many different languages. For example if you are using Python, the pygame library uses SDL.

Alasdair
+4  A: 

It depends very much on the type of game you want to make - e.g. if you want to make a text based game you have very different requirements to someone wanting to make a 3D game. This discussion is very helpful/informative.

fluteflute
+22  A: 
An Old Sign reads:

Start by heading north on Guild St, and make a right at the first fork. 
From there, ye will notice the Adventurer's Guild, where ye can train
in thy chosen craft. 

Town Square
Nobody is here.
Obvious exits: north, east, south, west
[HP:25/25]: _
Shawn Simon
In this era, is as easy to make and game with graphical interface as it was 20 years ago to make a text based game, i don't think it's necessary nowadays to start with a text based game anymore, for simplicity sake. (unless you're a fan of muds ofc)
Pop Catalin
It's not necessary, but resource limitations help guide user interface design. Too many programs, including games, have bad interface design due to limitless choices. This isn't a bad path to take when learning game mechanics...
Adam Davis
@pop - It is clearly dependent of if this person has programming experience in not. The reasons for starting with a text adventure go far beyond the capabilities of today's technology. It's getting the programmer up to speed on game architecture, and programming.
David McGraw
I approve of this idea. I think it's a great way to think about the mechanics of interaction within a game before getting bogged down in the technical stuff like APIs and whatnot. I'm not saying that just make a text-game, but it's still a great first project/game.
Peter C.
Some of this stuff in the followups should really be added to the answer.
Shabbyrobe
+3  A: 

Here's a few developer links for game development:

spoulson
+2  A: 

Tip #1 - Don't. It's a low-paying industry where you work a billion hours and the chances of you actually being able to make your dream game are slim to none.

Next step is - what do you want to do? Most games are written C/C++. If you're making games for the Windows platform you use Direct X. OpenGL is a library a lot of people use for graphics programming. If you want to make iPhone games, it's Objective-C and Cocoa. If it's other mobile platforms it may be Java ME.

Since you're already on Stack Overflow you must be a developer of some kind. When I finished college I wanted to make games myself, but I only knew Java and had limited experience with Direct X and C. So, I found out how people make games in Java and I made a simple one. At that point at least I had something for my portfolio.

bpapa
As a game development student, I couldn't agree more. RUN WHILE YOU STILL CAN
TraumaPony
+1  A: 

You should consider the following:

  • The game theory involved in the games you want to create (first person shooter, role playing game)

  • The platform you want to develop the game on (web based, PC, XNA/XBox 360, Flash)

  • The languages and knowledge you already know (is it feasible to create with ActionScript, C# or C++, etc)

  • Are there any libraries developed for game projects that support the development language you want to use, or at least an API (how much custom code libraries are you going to need to create vs libraries already available)

JasonMichael
+3  A: 

Game development isn't precisely concrete.

Firstly developing games is made by a team with very different combination of abilitys (designers, graphic developers, AI experts, musicians, concept creators, as well as managers and every position in a standard project).

If you are interested in the "development" part I'd suggest starting with a "2D Battleship" game, that is, some sort of game in which you can move your ship, shot at enemy ships and that involves some sort of scrolling. That will get you familiarized with concepts such as textures, scroll, double buffering, AI and keyboard input. You can even implement some sort of easy 2D physics. It's also a good way to learn about the render loop.

An excelent resource to start and progress is the Neon Helilum page which covers OpenGL (from basic to advanced) as well as DirectInput and a lot of other gaming related concepts. It has also lots of code examples in a lot of different languages and I've found their tutorials to be quite good.

Jorge Córdoba
+4  A: 

Game development is now a massive industry involving many many people. I believe I heard that Spore took a team of 120 people. This means that there are many many different avenues you can look at with regards to games development.

A lot of people involved with games development either have little to do with programming, or otherwise have a very strong secondary skill (or even programming in their secondary skill). For example, designers do the graphics, modellers require understanding of what they are modelling (Biology for example to get the way people move right). Understanding of physics is very important for interaction of objects etc and also to help things like movement work well.

Mathematics is a common requirement for puzzles and also working out algorithms on how to convert formula into useful data. Linguistics are helpful for translations and also ingame texts (English is very important for this).

When it does come to actual programming, you would need to be a specialist in whatever you do. Many games are networked or internet ready, so an indepth understanding of network protocols and optimisations are a requirement. Infact, your development skills need to be merely competent in comparison to other skills.

Even the interface requires many more important skills than just programming. A well designed interface can make or break a game. This is a non-programming skill, and an understanding of psychology and how people think will certainly help with this.

As has already been mentioned, many games are written using C or C++ because of the low level abilities within these languages. An understanding of how the computer works at a fundamental level will help you no end. If you understand the inner working of, for example, the GPU then you will be able to work out what can and can't be done. Keeping up with developments in technology will also allow you to write games that will, by the time they are released, be able to use the latest technologies.

Games development is rarely done by the one person in their bedroom these days, but are rather more like the many person production of a movie. And in these movies, there are relatively few actors and rather more people behind the scenes.

As is usually my answer with these things, programming is a tool, like a spanner or screwdriver which is used to do a job. Understanding what you are trying to do is a much better skill than learning how to turn a screwdriver.

One important concept of all games is learning the ability to make the computers sequential processes appear as multiple process streams and how to map these to the concepts of your game.

Xetius
+2  A: 

I recommend Flash to begin. It's really easy to get into and prototype things quickly... Even if you don't have a "big plan" in mind. From there you can move to more heavyweight stuff if you feel like you're getting the hang of things.

Pedro
+9  A: 

For you average well selling game, it takes a large staff to create that game. Maybe a third of those are programmers (depending on the game, this percentage can differ greatly).

Common areas of programming might be:

  • Graphics - This is the one that people tend to think of when talking about games
  • Gameplay - These programmers are the ones that "make" the game. This includes such things as dialog systems, combat, etc.
  • Tools - As games get larger and more complex, the need for better and custom tools is going up.
  • Server - Many games, for example MMOs require server programmers
  • Web/Billing - Community sites, ClubPogo.com, etc...
  • Audio/Localization -

After 15 years of industrial automation I got into BioWare by doing work in BioWare's NWN community. I also did some work in the Half-Life community. I took this route as a method of getting noticed. I worked :).

Doing some personal game work is probably a good idea, but to be honest, I never cared too much about what personal game projects people did because there is a world of difference between a part time personal project and a real live game project. It never hurts to do these projects and look at how game engines, such as the public domain engines work.

There is common feeling in the game industry that you need game experience to work in games. I've personally have been fighting against that.

Game industry, the hours are long, the pay is ummmm and in the end it is still just a job. But I still love what I do.

Torlack
Not true at all, there are several games which started with just 2-3 guys and grew on to be immensely successful. The only limitations you have are those setup in your own mind. Someone downvote this answer on my behalf please
Click Upvote
Yes lets downvote the person who speaks from personal experience and makes a pretty reasonable statement that working on small projects is pretty different then working on large scale project.
James McMahon
It's ironic that "Click Upvote" wants people to click downvote...
David Oneill
+26  A: 

There's a really good answer at the end of Ars Technica's interview of Pete Hayes, an artist on Gears of War. I found this quote particularly insightful:

People come up to me all the time and tell me "I want to make games," and I'm like "What games have you made?" and they're like, "None," and I'm like, "Well, why not?" You can go online and search "making video games" and come up with a billion links and a billion things.

So step 1: go make a game! If you complete an entire game, other people enjoy what you've done, and you still feel like it's something you want to do, then you're on the right track. If you throw up your hands halfway through and move on to the next thing... well, at least you didn't waste any more time than that.

Adam V
+5  A: 

I would recommend start off by understand how the gaming technology works, and the basic algorithms used today. A great way would be to read some books and as many basic articles of that issue as you can, and so - here goes:

After you've done that (or during) you might want to download the latest XNA SDK and try it out - it has a lot of examples and is well documented. True, it's not C++ but rather C#, but if that's not too much of a problem you'll find that getting up and running on it is very fast and it is very easy to try out things using this dev environment.

Have fun

Adi
+2  A: 

Competing in PyWeek is a fun way to get started. But first you'll need to spend some time learning Pygame.

Paul Reiners
You don't have to use PyGame, just Python. I used a custom binding to Irrlicht on my first PyWeek entry.
postfuturist
+2  A: 

try creating a pacman game.

Abhishek Mishra
A: 

Buy a nintendo ds or one of the family of GameBoy Advance. Get an R4DS or CycloDS or supercard from which you can run your programs.

Using simulators/emulators is also educational but at some point you will need to go through the exercise of popping the cartridge out plugging it or the sd card into a programmer, loading the new program, back in the cartridge back in the unit, power on, wait for boot, etc. There is some education about how many changes to the code before you test, education about how documentation is often misleading or incorrect so dont write too many lines of code before testing. Etc.

And study up on math and physics, you will need it.

dwelch
+4  A: 

You may want to consider the employment practices of the cut throat game industry. EA spouse happened for a reason, and for all the publicity she has garnered, from what I have seen (I know more than my fair share of game developers in the UK) nothing has really changed much. it's certainly not like jPod.

if sweatshop working conditions are a good trade-off for working in a cool industry then go for it (not trying to be a downer - and i'm sure i'll get downvoted, but from what I have seen, it's not worth it. just be sure it's what you really want to do) It certainly has a draw when you can say "yeah, that top rated game that came out last week with the kick ass graphics - I did that" but for every AAA title, there are plenty that get canned at like 80% at which point you effectively have a hole in your CV/resume.

do it foe experience, but don't expect to have a family life (if that's your thing) unless you can call the shots, which if you're starting out, you can't.

geocoin
A: 

Check out the job listings for the various major game vendors and see what skills they are seeking. Do this on a regular basis and you will see a trend develop for the skills they want. This is a good technique for most types of IT work.

Derek
+2  A: 

Learn C++.

Start writing games. My first game was an asteroids clone. Eventually, I made a small first person shooter. 2.5 years after the asteroids clone, I was working on a title for a major video game console.

The rest of the story, unfortunately, is that the video game industry taught me the meaning of these terms: "death march" and "stress migraine."

postfuturist
A: 

Make a game. It's the simplest, most effective answer you'll find. What kind of game is up to you. Make it more advanced than black and white Asteroids, but don't reach for the stars of say Freespace. Flash games are mostly acceptable, if complicated enough.

MOD. Mod a game that is already out there. Not just a level, make a whole modification to it. Usually making a single player mod is easiest to avoid the hassles of multiplayer code.

Talk to developers. They are not hard to find or contact. Try not to talk to the big wigs (Raph Koster, Lord British, etc.) as they are too high level and have been out of the trenches too long. Those "Contact" buttons on the company web page for your favorite game or company? Click them.

Organiccat
+2  A: 

I like the comment above, try "creating a pacman game". "It all depends" is the short useless answer. Do you like 2D or 3D games, which would you like to create? They are totally different beasts. Do you like action, strategy, puzzle, first person shooter? My first suggestion is write something that you like it will be much easier to stay motivated if you struggle or hit brick walls, which you will. A reasonable easy way to start might be get Dark Basic Professional (www.thegamecreators.com) or BlitzMax or Blitz3D (www.blitzbasic.com). They use BASIC as their base language, not C, C++, C# or Java and they product very good quality games, with must less effort and up-front learning curve. If you then find you're pushing the limits of what you're trying to do, then consider alternative technologies.

Paul Sagor
A: 

Nobody mentioned NEHEs Open GL tutorial so far. At least for graphics it's quite good.

Nils
+1  A: 

You can find heaps of tutorials on the net. If you want to get started making flash games you can find a Flash Adventure Game tutorial here, and a shoot'em'up tutorial here.

alt text

Phyxx