Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What is the best way to start from nothing when building your own game? What programming languages do you need to learn, and which platform would it be best to start on?

share|improve this question

closed as not constructive by Tetrad Oct 22 '11 at 0:14

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Subjective question without a lot of specific detail, converted to CW. – Tetrad Sep 4 '10 at 8:22
Surely this is a dupe of:… – Alex Schearer Sep 4 '10 at 9:06
@Alex, they're similar, but I would consider this question, as slightly less technology-specific, making it sufficiently different to be worth keeping. Note that some of the answers are about engines (technology), and some are about process and learning methods. – Cyclops Sep 4 '10 at 18:14
up vote 7 down vote accepted

I would suggest using XNA.

C# is awesome language.

Visual Studio is probably the best IDE. The free version Visual Studio Express is pretty decent too.

XNA wraps all the low level 'dirty' calls with DirectX or OpenGL into awesome classes etc. So it is much easier to understand. Even if you are planning to learn game dev with C++ or something else. I suggest learning XNA or the first few days because of this DirectX/OpenGL abstraction. And then go to C++ and you will be able to understand it easier.

XNA is a very powerful framework. Is used mainly by game dev enthusiasts for indie game development etc. There is plenty games built with XNA out there.

With XNA you can develop games for Windows, Xbox360 and for upcoming Windows Phone 7 at once! All you would need to do is write few additional conditional lines of code for each device. For example:

#if XBOX360
 // Do something for just XBOX360
 // Do something for the rest of the devices
share|improve this answer
XNA is wonderful if you want to make the engine yourself. That said, if you just want to sit down, import some models and start creating game content, you may be annoyed with how much programming you'll have to do. – ojrac Sep 4 '10 at 18:41
@ojrac I concur. XNA has a very.. um.. fussy way of handling stuff. Older versions of OpenGL are very, if you'll excuse the pun, Immediate. – Rushyo Sep 6 '10 at 8:37
Pimpin' a blog post of mine on using managed languages for indie development: – Rushyo Sep 6 '10 at 8:40

Unity3D: great architecture, lots of good community support. run it with visual studio and you've got a great, easy to use system, for hitting the ground running.

Just do stuff. don't spend too much time reading, experience trumps everything. Find tutorials where you do stuff and do it. Also, if you get stuck, move on. Just goof around with something else for a while.

Try to reflect on everything you did, and get a big picture grasp of the architecture. If you can't do what was done in a tutorial without watching it, you didn't learn it.

Finally, don't start with writing a big game. You'll hit roadblocks. break everything down to the simplest thing possible and sandbox that.

Sorry for the vague BS, but let me say this again: do something, and be persistent.

share|improve this answer
Unity3D seems pretty cool, but there's a cost-factor associated with the language. You can't really develop anything for long (30 days trial) unless you're committing hundreds of dollars to the program. – JFW Sep 6 '10 at 13:20
The Pro version, yes, @JFW - but there's a totally-free version that does most of what Pro does. And the features that are Pro-only, while nice - are not required to make an excellent game. – Cyclops Sep 6 '10 at 16:12

To start from nothing, from absolute zero to programming games. Good question.

First, disregard your other question, it's irrelevant. The question which language you need to learn and which platform would be best to start on depends entirely on you. Start with a language that makes it easy to learn, definitely don't try C++ as your first language unless you're a programming demigod but just don't know it yet. Highly unlikely.

C++ is the most ugly language to start learning, even though anyone would correctly point out that it's the most widely used language in the game industry - so why not start with that? For exactly the reason that you're not working in the game industry yet. Make it easy on yourself, stay motivated by learning a language that's easy on you.

Instead try a couple beginner's languages and stick with the one you can get the most out of. Look for all-in-one solutions like Game Maker first, where you can transition from icon-based scripting to text-based scripting but you also learn how everything else, sprites, animations, sound, levels, etc fit together.

It's also important to choose a community where you have people who are beginners just like you. In the Game Maker forum for example, you get help for the simplest of questions, besides being provided with great tutorials and a lot of example games.

As for platform, pick the one you use. If you play a lot of Xbox360 you should be familiar with Xbox Live Indie Games, so consider XNA. If you own an iPod Touch or iPhone or Android, maybe try your luck with the Lua-based engine Corona Game Edition. If you prefer PC/Mac pick any of the available game-making programs (like Game Maker) or SDKs that you like. Wikipedia offers a good starting point for your research on video game creation software.

As a general rule of thumb: start simple. Forget whatever idea you have in mind for the game you want to create. Keep that fresh for a later time when you have more experience. Instead start by making clones of classic games like Tetris, Asteroids, Pac-Man, Boulder Dash. Those will keep you occupied for a long time and will help you think like a programmer by analyzing how things work in the original game and discussing possible approaches with peers.

Another advice: to improve your programming skills, work with and talk to people who are just beyond your current skillset. You may often feel like the 5th wheel but you'll gain a lot of traction.

share|improve this answer

You can pretty much start with any language you want. I'd recommend Java or C++ (just because those are the only ones I've learned). You'll need an IDE (integrated development environment), which includes the editor, compiler, linker, etc. all in one package.

I'd recommend starting on Windows, but if you're experienced with Linux, why not start with that.

If you've never programmed before, try not to get too excited about making graphical games from the get go or you will become disillusioned once you start learning a programming language. There's so much to learn about a language and learning how to use it. You'll begin in a console environment which just means making programs that include only text. No graphics (except ASCII drawings).

Btw, really ask yourself what part of game development you're interested in. I've seen so many people who want to get into game development ask this questions and they think programming is the way to start out but most end up wanting only to do art, sound, or design. Most seem to begin programming only to find out soon that they loathe it.

But if you think it's your thing, I wish you luck and hope you hang in for the long run.

share|improve this answer
Another +1 for Java/C++ (or C#): a strongly typed object oriented language is a good place to start, because dynamic languages are easy to learn if you are used to stricter languages. Going the opposite direction can feel like you're programming with your hands tied behind your back. – ojrac Sep 4 '10 at 18:44
I'd say going from dynamic to strict typing makes you actually value the fact that you're working in a lower-level, or if not, the language isn't for you (yet). I would never recommend a total newbie to start out with a strictly typed language and worry about float or double, int or long, signed or unsigned, byte or char. Let alone other complexities. We don't learn our driver's licenses on a truck because going back to a car from that is so much easier. – LearnCocos2D Sep 4 '10 at 21:35

Depends on your goal. Are you more interested in programming, art, or design? If all you want to do is make a playable game, take a stack of index cards and make something that you can play on a tabletop, and save yourself years of time that you no longer need to spend learning programming. Seriously, I think physical board and card games are the best place to start if you want to be a game designer, and once you're comfortable with that, THEN you can go back and learn the programming parts if you want.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.