views:

394

answers:

8

Hi there, I am very new to this site and to programming. I started doing some basic programming with python a few weeks ago and recently, messing around with Java basics.

My main problem is that I am completely overwhelmed and haven't got the slightest clue where I should be starting.

I want to learn programming because I really enjoy doing it, the simple applications that I have managed to conjure up put a smile on my face.

My plan is to eventually (by eventually I'm talking about 6 years+) go into games programming.

I have been informed that C++ is the best way to go about this but haven't got the slightest clue what book/sight is optimal for someone who is still learning the very basics.

These are my questions:

  • I have been to the Definitive C++ Book Guide but am still unsure which book is best to start of with.

  • Should I stick with Python or Java instead of moving on to C++?

  • Is there any advice you would give to a beginner programmer?

Thanks again for all your help.

Edit:

The book on Java I am currently using is Programming Video Games for the Evil Genius. Sadly it's riddled with errors and he doesn't go into explaining certain important commands.

+7  A: 

C++ is horrible for beginners. It's a sprawling mixed metaphor of a language. You would certainly find it easier to approach once comfortable with object-orientation through more disciplined environments like C# or Java.

Scripting languages like Python are a much better place to start. Bash up some stuff in Pygame or whatever to get some practice. Modern games typically use a scripting language for controlling the high-level game logic anyway.

If you're a beginner, it's going to be a long slog before you'll be capable of writing full game engines in C++. Take your time!

bobince
+2  A: 

If you want to go into games programming then study games, play games, immerse yourself in games. Pick up a couple of books on games programming. At the beginning, the language(s) you program in are much less important than learning about game play, about data structures and algorithms, about narrative structure and user interaction. Both Python and Java are good choices for beginners programming languages. Once you have a good grasp of the programming basics, start studying any games codes you can find -- if they are written in a language you don't know, that might be a good way to learn another language. Before your 6 years are up, within 2 years of starting, you should be able to make your own mind up about the best way to proceed.

High Performance Mark
+3  A: 

Keep in mind that the game industry is very competitive and there are not really that many jobs. That means that it will be hard to get in the door. The biggest growth area is currently games for mobile devices,like iPhone and Android, so I would focus my effort there. If you think you would like to focus on mobile platforms, you can get started using the SDK for the platform of your choice. I would suggest the Android SDK with Java. Java is easier to learn than C++ and is a fine choice for mobile games.

The best teacher at this point is your hands-on experience. Design a simple game and start putting it together. Bash your head off the wall. Dig up Internet resources. Get it done. Use the experience you gain to do a more involved, complex game. Work hard on your math skills in school. Before long, you will have the knowledge and experience you need to be an excellent game programmer.

When you have time and passion to pursue programming in every spare moment you can pick things up incredibly quickly. I remember when I could program for 30 hours straight. The energy of youth is really an amazing thing. I would not be surprised if you have a game in the Android store within a year.

Tom Cabanski
+11  A: 

Game programming is a lot about design and gameplay; the language is merely a tool. Of course, C++ is widely used, but even a C++ guru wouldn't be able to make a decent game if he didn't play games or understand how the actual mechanics work.

You can learn C++ any day, learning how to create a game that is actually fun to play is much more important, in my opinion.

I would suggest starting with something like PyGame. Yeah, the C++ guys will tell you that nobody uses PyGame in the real game business, but you don't want to sell your game on XBLA/PSN/WiiWare tomorrow, do you?

You'd rather learn how to make one, and therefore it's important that you focus more on the game itself rather than having to deal with pointers and garbage collection.

So my suggestions are:
- Start small, do a platformer or an adventure game, start to understand the systems behind a 2D world like in Mario or Zelda
- Don't be afraid to copy! Even making a Zelda/Metroid/Mario clone will help you a lot, since you'll see that even simple things are often not as simple as they appear
- After you've written a couple of 2D games, try to extract the reused parts into a generic engine that you can then use as the base of your projects
- Learn to be creative, learn how to draw basic stuff. Creating a game is more then coding. Of course you most likely won't end up as a graphics designer, but understanding what those do will help you later, when you have to work with them

Ivo Wetzel
Thank you for your answer. This cleared up a lot of my questions. I find sometimes I dive way to deep into subjects and end up losing myself. I will definitely take your suggestions and expand on them. Cheers
Kraivyne
A: 

There is a book, aimed for beginners in programming, using C++, and written by the createor of C++.

It is Programming: Principles and Practice Using C++, and it is very useful (even for non beginners).

http://www.stroustrup.com/Programming/

It's a start, but a good one. You will not end up programming 3D games in a Windows environment from this book but it's a very good basis.

Nikko
+1  A: 

My advice is to power through a university's course on Java (not sure how many offer Python?) and perhaps their lower level data structures units and algorithms units. A lot of universities have their notes online, accessible to everyone. They will generally be a good guide to the basics that you should know, once you have the basics down you should have some idea of what you are missing and also how to fix the missing gaps in logical ways. At the very least, they provide a list of topics that you might want to know about. Once you have the basics down you can start to do the things you want to do.

Farthingworth
A: 

If you're feeling overwhelmed, stick with Python for a while. It's fairly easy to work with, and it's easy to read. Keep making small programs with it. Maybe do some Project Euler problems. Game programming is complicated, and if you start working with C++ now, you'll get discouraged and want to give up. I know I did :-P. Learn how to program well first, and get a feel for how to build larger applications before you tackle game programming (or at least start with extremely small and simple games. Like Pong).

Beyond that, read, read, read. Read Stack Overflow. Read Wikipedia articles on programming topics. Go to your local library and read all their programming books. Focus on books that talk about programming, not specific languages. Focus on design patterns, algorithms, what the difference between good and bad code is, etc. Go to college/university and take programming courses. It's not impossible to go without formal education, but you'll learn much more much faster than you would on your own (and I'm sure a diploma/degree will help you get jobs in the industry).

Joel
A: 

stick with java. 6 years from now java (or something similar that runs on the jvm) will be a more popular language for games (especially mobile ones due to android).

just in case you need a job in 6 years, be aware of this: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (note the percentages of java and c compared to each of the other languages).

Ray Tayek