The new forums will be named Coin Return (based on the most recent vote)! You can check on the status and timeline of the transition to the new forums here.
The Guiding Principles and New Rules document is now in effect.
Lets say that I have a passion for games and gaming in general, and really enjoyed the few programming classes I've taken (just a college semester in Python and some Java). Well, what if I want to make games of my own? Indie is a big thing right now, so obviously its possible to make enjoyable games with few resources and a lot of ingenuity. Lets leave creativity and luck and passion all out of the question for a moment though, because only time could tell if someone has those three things.
So the basics. How and where should I learn to code games? Are there good free references? Suggested reading or tutorials? Should I take college classes on it?
I don't expect to be the next Minecraft or Super Meat Boy or even the next Haven and Hearth, I just want to know where I can learn the programming skills necessary to make a solid game. I'm starting from pretty much scratch when it comes to everything coding. All I know how to do so far is random integers, logic loops, basic algorithms, that sort of thing. Manipulate a command window. I have no idea how to make a working GUI or code sprites and models and animations or anything at all really. Where and how is the best place to learn? What programming language would be a good starting point/which language is standard for indie games or is there even a difference between the languages AAA titles and homebrew video games use? Anyone have any advice?
TheZoobler on
0
Posts
Sir CarcassI have been shown the end of my worldRound Rock, TXRegistered Userregular
edited March 2011
If you want to be a good game programmer, you need to first be a good programmer. You can learn on your own through books and websites, but the best way is to do college courses. But you'll pretty much have to do a 4 year Computer Science program to really learn it.
If you want to jump in feet first, you could try getting XNA and going through tutorials for it. It's probably the easiest way I know to start messing with games, but ultimately, you're going to need to be a good programmer, because coding games is an advanced coding project. You can learn to drive a car through driver's ed, but if you want to do stunts for the movies or drive race cars, you're going to have to put some time and effort in before you're anywhere near ready for that point.
If you want to be a good game programmer, you need to first be a good programmer. You can learn on your own through books and websites, but the best way is to do college courses. But you'll pretty much have to do a 4 year Computer Science program to really learn it.
If you want to jump in feet first, you could try getting XNA and going through tutorials for it. It's probably the easiest way I know to start messing with games, but ultimately, you're going to need to be a good programmer, because coding games is an advanced coding project. You can learn to drive a car through driver's ed, but if you want to do stunts for the movies or drive race cars, you're going to have to put some time and effort in before you're anywhere near ready for that point.
Heh, yeah, I know that it'll be a huge investment of time and effort. Years. Still debating whether or not I want to devote that time and effort to writing, psychology, or programming, and its difficult, but in the meantime I'm looking into good ways to get started . College courses I could probably do, I haven't really fully developed a major yet (just been getting core classes knocked out). So I'm pretty open. Are there any books or websites that are especially good?
TheZoobler on
0
Sir CarcassI have been shown the end of my worldRound Rock, TXRegistered Userregular
edited March 2011
I personally don't know of any good books or websites for learning programming, but I will add that it's not really a good idea to go through a CS program with the intent to be a game programmer. If you'd be fine with coding database software for a living, then by all means, but game programming is a tough field to break into. You really should be getting a degree in something related to what you want to do as a career.
My personal feeling is that the best way, especially if you want to go indie, is get a CS degree, get a regular old programming job or whatever to pay the bills, and program games in your spare time. It's pretty easy to get burnt out and hate something when you do it all day every day and also you'll actually get to work on your own projects and all that, which is probably what you really want to do.
XNA has a lot of sophisticated game API's packed into it, and you could certainly do it, but it would just train you on how to use XNA, not on how to program. Which is consistent with every other framework Microsoft puts out.
I think Python is a good flexible language to start with. It isn't totally freeform like Ruby but it isn't depressingly rigid like C#. It's a harmonious middleground with a large community behind it and plenty of good libraries to make simple games with.
Also happens to be pretty useable on both Windows and UNIX systems.
C# with XNA is what a LOT of the homebrew/indie stuff is using these days as it's free, really easy (as far as game programming goes), and works for windows and xbox 360. PyGame is another I see mentioned frequently, which uses Python. I have no experience with PyGame.
As Sir Carcass said, though, you don't learn "game programming". You learn "programming". Games just happens to be one thing you can create with that skillset and potentially later on specialize in. Game programmers are, for the most part, the best of the best. They are programming's version of professional athletes, but with way shittier pay.
It sounds like you DO have some programming experience already, though. So my advice would be to continue taking those classes if you enjoy it. Grab XNA or PyGame in your free time and see if you can make a simple single screen 2d game. My first (and really, only) graphical games were a Snake clone in C with ncurses and a Space Invaders clone with C#/XNA. Games like this are good starters because you don't have to worry about scrolling the background, what's coming up/going on off screen, etc. You've got a set field that everything moves around in.
Well I tend to program games as a hobby. Nothing I can publish since I'm no artist and I used other people's sprites/music/sound. But the way I learned was pretty simple. First learn how to program, very important. I have my degree in Computer Science so I learned from college. My first programming language was C, but there a bunch of great languages out there. There are alot of resources online, but I have always learned more easily from a book than the internet, so YMMV.
After learning a language and getting accustomed to its syntax and semantics, I started reading up on how games are designed from a programming perspective (I forget the name of the book, I think it was Tips and Tricks from Game Programming Gurus, but its been 3 address changes across 10 years since I've seen that book about so I'm not 100% certain about the name any longer). Then after that I took a pretty easy to use library system to cut my teeth on, I used SDL originally.
Then jumped in feet-first. Grabbed some sprites and music. Had an idea about a Kid Icarus-clone, and went to town. Took me a few months but I made my first game. Looking back now the game was pretty much uninspired piece of trash, but it was probably the most difficult, yet fulfilling programming experience I've ever had. Good luck, its a lot of work. Don't confuse playing or designing games with programming them. They are not the same thing.
What programming language would be a good starting point/which language is standard for indie games or is there even a difference between the languages AAA titles and homebrew video games use? Anyone have any advice?
Since you know a little Java and Python, start there. You can make simple games in java with nothing else needed, and PyGame is a good system for making games with Python.
AAA titles generally use C++ primarily. But it's probably best not to start with C++ unless you really want to, because it's not a great beginner language. They also use a ton of expensive middleware that you can't afford.
Homebrew video games have a vast range of things to choose from, from dedicated game creation kits like RPGmakerXP to simple game languages like Blitz Basic to fully featured engines like Unity. I'd stick to something similar to what you know, for now.
There is no one right way, so the best way is to get stuck in and try and make a tiny game, like Pong or Tetris, and see if you like it.
To sort of jump in feet first into the graphics part, you might want to try processing or http://processing.js, it's pretty easy to pick up and can definitely get you to a basic game pretty quickly. If you're choosing one over the other I'd pick processing over processing.js because it's better supported.
i took a class that had us program our own game by the end in Visual Basic using the DirectX, Direct3D libraries... not a sophisticated game by any means - just a 2D side scroller thing, but some people got creative and put together a 3/4 view real time strategy game - but it was fun and a good start
we used this book in class - and i recommend it b/c it really takes you through the game creation process from scratch
Practice practice practice! Write a lot of code. So much code that your eyes melt.
The best advice I can give you is pick small projects and take them through to completion, even if they're dumb. The first game I ever wrote in C++ was a console blackjack program, and now I'm in the middle of shipping my sixth (and working on an indie side project). I highly recommend you start with something similar to blackjack. You can write it in any language you want (I suggest C#). If you don't know any C#, pick up a book at your college library and work your way through it.
You'll learn a lot just getting from an empty project to a game you can play. Polish it to the point where you think it's by far the best console blackjack game ever made, then pick a new project and start over. I recommend you stick to console stuff at first. Once you're comfortable in the language you can move into 2d graphics programming (an Arkanoid clone is a great project)- but I warn you, graphics work is exceptionally difficult for beginners. You're going to need a lot of 3d math, so start signing up for those classes now if you can. 1: start small 2: set realistic goals 3: work until you achieve those goals 4: goto 2.
Good luck! Making games has never been easier or more fun than it is right now. The indie scene is huge and getting bigger every day; even if you never make a dime doing it, it's a great hobby.
*SNIP* Don't confuse playing or designing games with programming them. They are not the same thing.
A million times this. A designer / producer / studio head / impressivetitle are probably held by under a hundred people across the entire industry.
Try to take a look at some university's computer science course pages and see if you can find syllabus or assignments or similiar things to get an idea of some exercises that you can practice with.
You could try your luck with some open source games / coding as well. It's a good way to see some live production ready code easily.
Haha, thank you all for all of the friendly advice . I'm pretty much stuck deciding whether I want to pour time and effort into a writing, psychological/anthropological, or programming career, and I know I need to pick just one for the next decade or so if I really want to get good at it. I really enjoy coding, figuring out the most efficient and logical way to get a program running, and even debugging. That moment of triumph when you finally get a code to run right is just unbeatable. But if I decide to go with computer science/programming, I think I have some ideas for a start now thank you!
Now the question is where to find the time and what to use that time on...
And hehe yeah, I understand that programming games is vastly different from the general public's perception of the task, but I still think it could be fun and some games have been just fine with a ridiculously small work team. Haven and Hearth is a good example, I'm pretty sure only two people put it together, and its very basic, but very fun, unique, and rewarding.
Whether as a hobby or as a job, whether as a solo(duo with my girlfriend) act or on some far off and away design team, I think it could be fun to program games. And even more rewarding if I was somehow able to muster up the effort required to code my own game from scratch to finish, mostly focusing on the programming, mechanics, and writing. Music, art, and animations aren't so much my forte. Either way. I'm surprised at how much advice my semi-casual possibly-serious question received. Thank you!
Also remember just because you dont decide to do programming as a career doesnt mean you cant still do it for fun.
I did a programming based degree but by the end of it I knew it wasnt what I wanted to do for a career. But I still code a few times a week and enjoy it more as its now a treat rather then the bread winner.
Prime on
0
Sir CarcassI have been shown the end of my worldRound Rock, TXRegistered Userregular
And hehe yeah, I understand that programming games is vastly different from the general public's perception of the task, but I still think it could be fun and some games have been just fine with a ridiculously small work team. Haven and Hearth is a good example, I'm pretty sure only two people put it together, and its very basic, but very fun, unique, and rewarding.
Whether as a hobby or as a job, whether as a solo(duo with my girlfriend) act or on some far off and away design team, I think it could be fun to program games. And even more rewarding if I was somehow able to muster up the effort required to code my own game from scratch to finish, mostly focusing on the programming, mechanics, and writing. Music, art, and animations aren't so much my forte. Either way. I'm surprised at how much advice my semi-casual possibly-serious question received. Thank you!
Oh, game programming is a lot of fun, otherwise there pretty much wouldn't be an indie scene, but it's also incredibly difficult and a lot of work. Just know you're not going to be making the next Dwarf Fortress after a couple of programming classes. But if you enjoy programming, you should totally check it out. I'm a pretty mediocre programmer myself and haven't actually completed a game yet, but I do just enjoy hacking along because, like you said, that moment when you see something work as intended is pretty awesome.
Sir Carcass on
0
acidlacedpenguinInstitutionalizedSafe in jail.Registered Userregular
edited March 2011
Also, you should check out the Programming thread in the stupid technology sub-forum of G&T and also the XNA thread in G&T. The programming thread might help give you an idea what the different languages are like and their strengths and weaknesses, the XNA thread is specific to game programming for windows/WP7/XBLIG using C# which is the platform I'm personally going to recommend, but again you should ultimately choose the language that is easiest for you to use.
For books, I just got two really great books about XNA and C# from the publisher O'Reilly -- the books are: Learning XNA 4.0: Game Development for the PC, Xbox 360, and Windows Phone 7 and Programming C# 4.0: Building Windows, Web, and RIA Applications for the .NET 4.0 Framework
I can't recommend these books enough for reference. Whatever language you end up picking I'd recommend checking to see if O'Reilly publishes any books about it.
I've also had a great experience with the "Addison-Wesley Professional Computing Series" of reference books, namely Effective STL and More Effective STL. I find them great reference because they are well written and just generally interesting to read. I don't think the STL books would be all that pertinent to your current goal so I wouldn't recommend buying them, but you might want to check the series out for books more related to game programming.
As an alternative to XNA you might want to investigate using Unity. It seems to be the next big thing for game prototyping, though that's about all I know about it.
XNA has a lot of sophisticated game API's packed into it, and you could certainly do it, but it would just train you on how to use XNA, not on how to program. Which is consistent with every other framework Microsoft puts out.
I think Python is a good flexible language to start with. It isn't totally freeform like Ruby but it isn't depressingly rigid like C#. It's a harmonious middleground with a large community behind it and plenty of good libraries to make simple games with.
Also happens to be pretty useable on both Windows and UNIX systems.
You wanna get on the indie game scene and are new to programming? That's it right there.
Yeah, while XNA is a good alternative, it is more "DirectX oriented" in the fact that what you learn with it isn't necessarily helpful as a whole until you get to 3D and need to use OpenGL and/or DirectX.
bowen on
not a doctor, not a lawyer, examples I use may not be fully researched so don't take out of context plz, don't @ me
Posts
If you want to jump in feet first, you could try getting XNA and going through tutorials for it. It's probably the easiest way I know to start messing with games, but ultimately, you're going to need to be a good programmer, because coding games is an advanced coding project. You can learn to drive a car through driver's ed, but if you want to do stunts for the movies or drive race cars, you're going to have to put some time and effort in before you're anywhere near ready for that point.
Heh, yeah, I know that it'll be a huge investment of time and effort. Years. Still debating whether or not I want to devote that time and effort to writing, psychology, or programming, and its difficult, but in the meantime I'm looking into good ways to get started . College courses I could probably do, I haven't really fully developed a major yet (just been getting core classes knocked out). So I'm pretty open. Are there any books or websites that are especially good?
My personal feeling is that the best way, especially if you want to go indie, is get a CS degree, get a regular old programming job or whatever to pay the bills, and program games in your spare time. It's pretty easy to get burnt out and hate something when you do it all day every day and also you'll actually get to work on your own projects and all that, which is probably what you really want to do.
I wouldn't call XNA small per se.
XNA has a lot of sophisticated game API's packed into it, and you could certainly do it, but it would just train you on how to use XNA, not on how to program. Which is consistent with every other framework Microsoft puts out.
I think Python is a good flexible language to start with. It isn't totally freeform like Ruby but it isn't depressingly rigid like C#. It's a harmonious middleground with a large community behind it and plenty of good libraries to make simple games with.
Also happens to be pretty useable on both Windows and UNIX systems.
we also talk about other random shit and clown upon each other
As Sir Carcass said, though, you don't learn "game programming". You learn "programming". Games just happens to be one thing you can create with that skillset and potentially later on specialize in. Game programmers are, for the most part, the best of the best. They are programming's version of professional athletes, but with way shittier pay.
It sounds like you DO have some programming experience already, though. So my advice would be to continue taking those classes if you enjoy it. Grab XNA or PyGame in your free time and see if you can make a simple single screen 2d game. My first (and really, only) graphical games were a Snake clone in C with ncurses and a Space Invaders clone with C#/XNA. Games like this are good starters because you don't have to worry about scrolling the background, what's coming up/going on off screen, etc. You've got a set field that everything moves around in.
After learning a language and getting accustomed to its syntax and semantics, I started reading up on how games are designed from a programming perspective (I forget the name of the book, I think it was Tips and Tricks from Game Programming Gurus, but its been 3 address changes across 10 years since I've seen that book about so I'm not 100% certain about the name any longer). Then after that I took a pretty easy to use library system to cut my teeth on, I used SDL originally.
Then jumped in feet-first. Grabbed some sprites and music. Had an idea about a Kid Icarus-clone, and went to town. Took me a few months but I made my first game. Looking back now the game was pretty much uninspired piece of trash, but it was probably the most difficult, yet fulfilling programming experience I've ever had. Good luck, its a lot of work. Don't confuse playing or designing games with programming them. They are not the same thing.
Since you know a little Java and Python, start there. You can make simple games in java with nothing else needed, and PyGame is a good system for making games with Python.
AAA titles generally use C++ primarily. But it's probably best not to start with C++ unless you really want to, because it's not a great beginner language. They also use a ton of expensive middleware that you can't afford.
Homebrew video games have a vast range of things to choose from, from dedicated game creation kits like RPGmakerXP to simple game languages like Blitz Basic to fully featured engines like Unity. I'd stick to something similar to what you know, for now.
There is no one right way, so the best way is to get stuck in and try and make a tiny game, like Pong or Tetris, and see if you like it.
we used this book in class - and i recommend it b/c it really takes you through the game creation process from scratch
http://www.amazon.com/Visual-Programming-DirectX-Premier-Development/dp/193184125X/ref=sr_1_1?s=books&ie=UTF8&qid=1299120747&sr=1-1
With respect to whatever classes you took and whatever you learned, Basic is a bad language and it will teach you bad things.
DirectX? Go for it. But not with Visual Basic.
we also talk about other random shit and clown upon each other
The best advice I can give you is pick small projects and take them through to completion, even if they're dumb. The first game I ever wrote in C++ was a console blackjack program, and now I'm in the middle of shipping my sixth (and working on an indie side project). I highly recommend you start with something similar to blackjack. You can write it in any language you want (I suggest C#). If you don't know any C#, pick up a book at your college library and work your way through it.
You'll learn a lot just getting from an empty project to a game you can play. Polish it to the point where you think it's by far the best console blackjack game ever made, then pick a new project and start over. I recommend you stick to console stuff at first. Once you're comfortable in the language you can move into 2d graphics programming (an Arkanoid clone is a great project)- but I warn you, graphics work is exceptionally difficult for beginners. You're going to need a lot of 3d math, so start signing up for those classes now if you can. 1: start small 2: set realistic goals 3: work until you achieve those goals 4: goto 2.
Good luck! Making games has never been easier or more fun than it is right now. The indie scene is huge and getting bigger every day; even if you never make a dime doing it, it's a great hobby.
A million times this. A designer / producer / studio head / impressivetitle are probably held by under a hundred people across the entire industry.
Try to take a look at some university's computer science course pages and see if you can find syllabus or assignments or similiar things to get an idea of some exercises that you can practice with.
You could try your luck with some open source games / coding as well. It's a good way to see some live production ready code easily.
Now the question is where to find the time and what to use that time on...
And hehe yeah, I understand that programming games is vastly different from the general public's perception of the task, but I still think it could be fun and some games have been just fine with a ridiculously small work team. Haven and Hearth is a good example, I'm pretty sure only two people put it together, and its very basic, but very fun, unique, and rewarding.
Whether as a hobby or as a job, whether as a solo(duo with my girlfriend) act or on some far off and away design team, I think it could be fun to program games. And even more rewarding if I was somehow able to muster up the effort required to code my own game from scratch to finish, mostly focusing on the programming, mechanics, and writing. Music, art, and animations aren't so much my forte. Either way. I'm surprised at how much advice my semi-casual possibly-serious question received. Thank you!
I did a programming based degree but by the end of it I knew it wasnt what I wanted to do for a career. But I still code a few times a week and enjoy it more as its now a treat rather then the bread winner.
Oh, game programming is a lot of fun, otherwise there pretty much wouldn't be an indie scene, but it's also incredibly difficult and a lot of work. Just know you're not going to be making the next Dwarf Fortress after a couple of programming classes. But if you enjoy programming, you should totally check it out. I'm a pretty mediocre programmer myself and haven't actually completed a game yet, but I do just enjoy hacking along because, like you said, that moment when you see something work as intended is pretty awesome.
For books, I just got two really great books about XNA and C# from the publisher O'Reilly -- the books are: Learning XNA 4.0: Game Development for the PC, Xbox 360, and Windows Phone 7 and Programming C# 4.0: Building Windows, Web, and RIA Applications for the .NET 4.0 Framework
I can't recommend these books enough for reference. Whatever language you end up picking I'd recommend checking to see if O'Reilly publishes any books about it.
I've also had a great experience with the "Addison-Wesley Professional Computing Series" of reference books, namely Effective STL and More Effective STL. I find them great reference because they are well written and just generally interesting to read. I don't think the STL books would be all that pertinent to your current goal so I wouldn't recommend buying them, but you might want to check the series out for books more related to game programming.
As an alternative to XNA you might want to investigate using Unity. It seems to be the next big thing for game prototyping, though that's about all I know about it.
You wanna get on the indie game scene and are new to programming? That's it right there.
http://www.pygame.org/
I gave that a brief shot years ago. Didn't take me very long at all to put a sprite on the screen and move it around with the arrow keys.