Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This question already has an answer here:

I've taken a course in computer science that covered basics about java and programming from conditionals and loops to inheritance and interfaces. I also got Head First Java from a friend who didn't write in it. After I finish that book, what should I do before I head into developing games? Also, I've been just making command line games and math programs for now. Is that good practice? I'm just worried that I will only be repeating things that I already know, and that I won't be learning anything new.

share|improve this question

marked as duplicate by gnat, MichaelT, Glenn Nelson, Jalayn, Yusubov Jun 7 '13 at 12:36

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

I'd suggest picking up a good book on software engineering. I have been coding as a hobby for 10+ years but taking a software engineering class has really changed my view on programming and it goes to say that those skills will be required in game development. –  Alexandre P. Levasseur Jun 7 '13 at 1:22
I read that question, and I don't see how it answers my question. –  dirtysocks45 Jun 7 '13 at 1:53

3 Answers 3

up vote 3 down vote accepted

First off: Head First does a great job of introducing you to a concept, but you'll want a good reference guide to go along with that. Luckily for you, JavaDoc is legendary in its ability to deliver knowledge quickly, accurately, and often times with great examples, across the many different versions of Java.

Second: Learning a language is good, but game design is TOUGH because of the fact that it is less about programming, and more about user experience, which means that your first goal should be "How can I entertain someone" and not "What can I learn to be able to code a game." Since your question mainly focuses on how to program a game, I'll assume that you have some sort of game in mind, and have dealt with the non-programming items involved with making a game, because that is another question entirely.

Third: Start to look into good code design, specifically architecture. Software Engineers use things called Design Patterns, which you can think of as building blocks, that solve common problems that programmers face when they are designing/implementing the system. Things like "How can I swap out how this object will behave without creating a new one?" or "I have one database that I need to access, but don't want to just make all the methods related to the database static, what can I do instead?". Head First makes a book about design patterns, and I found it to be both fun and informative in terms of what it offers.

Fourth: Once you feel comfortable using these design patterns, try laying out a larger system. You'll quickly realize that design patterns are great for solving problems, but they aren't very good for designing the whole architecture of a system. This is where software architecture comes into play. There are Architectural patterns, that, much like design patterns, are pre-thought up ways of doing things, only instead of solving specific problems, you use architectural patterns to try and achieve quality attributes, like security and performance. There are a lot of books out there, such as the Software Engineering Institute's Software Architecture in Practice, as well as free resources, and by the time that you are at this stage you'll probably know how you learn best and can ask for a book recommendation with a little more knowledge.

Fifth: Have fun. Game design is meant to be fun, but many people approach it expecting to achieve greatness with their first project and I hate to be the bearer of bad news, but that's not how it works. You're going to sink many late nights into your first project only to find that the way you set it up at the beginning means that you can't continue without starting from scratch, and guess what, it sucks. But remember that everything you learn from one failure can be applied to the next project, so keep a positive attitude and don't get burned out! GOOD LUCK!

share|improve this answer
Thanks for this answer. I just had a great time reading all about design patterns and architectural patterns on Wikipedia. –  Andy Harris Jun 7 '13 at 15:02

First off, I want to say that I agree whole heartedly with the post / comments above.

Your first step should be to get a good book / course on design patterns. What you will also need to look at is some theory on Game design (The non programming kind)

There is one thing I would like to add, and this may come down to personal preference, but in my experience with game design I would strongly suggest you look at learning something like C++ or C#. The reason for this is that the support base in terms of frameworks and other developers experience out there is so much larger.

I have nothing against Java, but found it a lot easier to get started in game dev with C++.

You should also check out sites like GameDev.net They have a large pool of resources and very nice forums.

Game development will be one of the most frustrating things you will attempt, but definitely one of the most rewarding. So don't get discouraged, keep on going and like Ampt said, have fun!

share|improve this answer

I agree with what Ampt said. But i would also like to add a few points.

If you are serious about getting into game development, you might want to think about what type of game development you are looking to get into. Are you intending to do it as a hobby? A job? or an indie developer? All of the above mentioned are slightly different in terms of what you want to accomplish.

If it is a hobby, just continue doing what you are doing but do try getting out of command line games and into main stream platforms. you may want to try looking into game engines such as Unity, Unreal, construct, game maker, etc.

If you want to get a job in game development it is important to brush up your technical skills. The majority of the industry are looking for programmers. And it is kind of a trend for programmers to be converted to game designers. Not all companies do it but many are.

If you are intending to go indie, you have a lot of marketing to do. you have to know your audience, think about the game idea's worth before even starting the game. Well, it is another case if you are well funded or do not need to worry about the budget or time spent. But if you intend to do this full time you will have to think about the amount of money (the purchasing of developers' account for instance) and time you will have to spend doing this. Good news is Unity recently allows indie developers to develop games for free. Yay!

Hope this helps. :)

share|improve this answer
I'm just doing it as a hobby since I'm still in high school. I like the idea of making games, and it will help me become a better programmer. –  dirtysocks45 Jun 7 '13 at 13:15

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