Thoughts on beginning Game Develop

From Seoushi Games

Jump to: navigation, search

There are always people asking me how to program and what language to learn. Programming isn't an easy thing, it takes time, patience and a lot of motivation. If you want to learn how to program to make a game in a short amount of time your going to fail. I give this warning because many people think they can make a new hit just by learning a few simple things, this isn't true. Good games take time and a good team, AAA games that are released now days take years to complete and have a full team of programmers, artists, story board writers and more resources then you will ever have on your own. This isn't to say that you can't make a good game, it's just that it takes a lot of time and resources to do so. I hear so many people wanting to make a World of Warcraft clone or some other MMO and make it the next big thing but MMOs are the hardest games to make right now, aside from all the usual resources you have to have for a good game you add on networking, server costs, dealing with customers and a whole load of things that most people don't realize. Now, If I haven't scared you away already and you still want to learn to program then read on, I'll give you my opinions on logical steps to get into the field.

The best way to learn programming is by taking a class, the professor will help you out and explain to you things you don't understand. Also a class is structured to help you learn things in a logical manner, starting simple and working your way up. While I didn't start learning in a class it would have helped me greatly and now that I've been taking classes it has helped my understanding of certain elements.

If you can't get into a class, don't have the money, time or for whatever reason your second best bet is to get a good book and have a friend or possibly message board to help you out. There are a lot of books out there to chose from and most of them are complete crap. If you see a book that says learn such and such in 21 days/hours or any other timeframe avoid them like the plague. Likewise if you see xxxx for dummies or anything to that nature it is a usually sign of a bad book.

The last resort I would take is learning things online. Don't get me wrong there are a lot of good tutorials for specific things online but hardly any resources on beginning programming and the ones that are focus on certain things and don't tell you the whole story. I would use the Internet to supplement a good book or class or if you want to learn something specific not as a general starting point.

Now that I have gotten that out of the way I can ramble on about the programming language(s) you will want to learn. Today there are a lot of programming languages out there and it's hard to chose from. There are the C variants, C/C++/C#; basic variants QBasic/VB/; java; python; lisp and some others that aren't to well known. I started out learning C++ in high school circa 1998 and I think it was a good way to start out. Other might disagree saying it's too complex for beginners or it's too low level. However you look at it there is no denying that C++ is the language that is most used today and while there are new ones coming out C++ is here to stay for a long while. I recommend you start by learning C++ and not C. C while it doesn't have as much complexity as C++ is actually harder to use for bigger projects and general tasks without any benefit these days. C is only used in operating systems, embedded devices and things where speed it really important however some of these things are changing in favor of C++. Java is also a good language to learn off the bat as it follows the same syntax of C/C++ and makes things simpler at the cost of performance and having to install the java virtual machine to run the program. While I'm not a big advocate for java in any way I believe that it would be an ideal language to learn just because of the similarities to other languages. A lot of people are in the camp that .net is the way to go now days but I disagree. While .net is a nice language you limit yourself to windows only, if you don't care about that (I do) then you might want to check it out.

When I first got to the University my first programming was in Dr. Scheme, a lisp variant. I thought it was horrible and nothing ever good would come from learning it but I was wrong. While Dr. Scheme is not a practical to make things in it did teach how to deal with common programming problems. I would recommend this programming languages above C++ and Java if it wasn't for the simple fact that there are limited resource on the subject and if your not taking a class which assign problems to do then your most likely not going to see the benefits of using Dr. Scheme.

With that said I highly recommend learning C++. The main reasons for this is that it most programs today use it, it's at a high enough level that you don't struggle for simple things and low enough you can do anything with it. You can also learning subsets of C++ very easily and build your knowledge at your own pace. When you start out programming read through your book, tutorials or do your class work, don't try to do a project right off the bat. Instead learn the syntax, common algorithms and structure of a normal program. Once you feel you can go no further for the common ground start messing with libraries and learn their api's. I highly recommend SDL for learning how to program games, it's very simple to use and will make you think of how a game works instead of focusing on graphics and some of the basics. Once you made a few demo projects of different things then start with a real game project, this should be a small simple but complete game such as tetris. Once you have that under your belt then you can move on to more complex games such as zelda or mario.

Now that you have learned the basics for game programming and have a few games that you have done you can move on in any direction you want. I've been learning OpenGL and designing game engines from scratch. You might want to take a different path however. Once you get to this point you should be able to decide on your own what you want to do with programming and learn things on your own. If you have any question of comments feel free to contact me, I'd love to improve this article.