What is a good free software and book to program games?

Ryou-kun

Limp Gawd
Joined
Sep 13, 2011
Messages
150
Hello guys, I am a Senior who just finish taking Video Game Development's Class in my Junior year, and I want be a programmer for games.

Can anyone recommend a software and book?
I don't mind buying a book as long it isn't too expensive.

What kind of book?
A book that can teach me about coding, list of codes, how they work, it's simple to understand and etc.

Even though I took the class for it, but I don't think I feel like I am at the experience developer's level of programming games.

PC isn't an issue, I'll be upgrading it when I get into college where I get scholarship then upgrade my PC.

I just need a good free software and book that I can order to help me understand.
My video's game developer teacher told me to practice, so I can remember the codes.
Sadly I can't remember it :(
 
Why can't you afford a book?

You "can't remember the codes"? Seriously? Or are you trolling?
 
I just need a good free software and book that I can order to help me understand.
My video's game developer teacher told me to practice, so I can remember the codes.
Sadly I can't remember it :(
Ask your teacher to recommend some books.
 
Why can't you afford a book?

You "can't remember the codes"? Seriously? Or are you trolling?

No it's not trolling or anything.
What I mean by that is that I haven't started practicing the codes in the past couple months.
I am still NOT familiar with the codes and how they work well.
That is why I need a book to help me aid, so I can gain more knowledge then I can start practicing programming games.

Like my teacher said "Keep Practicing" to keep remembering the codes.
 
programming software for computers is quite a bit more complicated than punching codes into a game genie.

What exactly is this "list of codes" you are after.
 
programming software for computers is quite a bit more complicated than punching codes into a game genie.

What exactly is this "list of codes" you are after.

I am talking about programming games like video game's developer.
I think I might have posted it on a wrong thread, but I think it is still part of "programming"

For an example. DICE/Infinity Ward/Treyarch/Valve/Rockstar/ and etc.
 
programming software for computers is quite a bit more complicated than punching codes into a game genie.

What exactly is this "list of codes" you are after.

I think the magic word we're looking for here is 'syntax'. I guess would be he can't remember the syntax.
 
Learn to Program by Chris Pine, even has some simple game programming in the last chapter(s).
 
What did you do/learn in the class?

Probably the basic, I think.
Like change the image's files, sound files, sort of understand about if, of and etc.
Not sure if I am correct about if, of and etc.

Yes I did make a mini-flash game for our project, but I didn't do so well because I have found a lot of bugs.
Like when you lose a game from a time, the screen doesn't move to losing screen, so I was stuck.

Could've asked my teacher, but she explain it differently that it's hard for me to understand.
That is why I want a book to help me.
 
Couple words of advice.

Abandon your game development dreams for now. They will lead you nowhere. I was in your shoes at one point.

For now, go for a computer science degree. Not a game development degree. With a computer science degree you'll be able to apply for software development positions, web development, mobile development, embedded development, and so on. And, well, maybe you will find yourself in a game studio once you graduate. For now - quit it. Learn the basics, feel what you like. Programming field is freaking huge, and even though nothing that I have mentioned, besides game development, might seem interesting, you'll be surprised that by the end of school, if you truly enjoy programming, you will happily do any kind of programming for work. It's true.

Last but not least, if you find yourself hating programming, you might want to consider switching majors. Not amount of love for gaming and dreams about gaming will make you enjoy programming. You don't want to be doing something you hate for the rest of your life. You don't want to be throwing your / your parents money away either.

Just my .02. Good luck.
 
Couple words of advice.

Abandon your game development dreams for now. They will lead you nowhere. I was in your shoes at one point.

For now, go for a computer science degree. Not a game development degree. With a computer science degree you'll be able to apply for software development positions, web development, mobile development, embedded development, and so on. And, well, maybe you will find yourself in a game studio once you graduate. For now - quit it. Learn the basics, feel what you like. Programming field is freaking huge, and even though nothing that I have mentioned, besides game development, might seem interesting, you'll be surprised that by the end of school, if you truly enjoy programming, you will happily do any kind of programming for work. It's true.

Last but not least, if you find yourself hating programming, you might want to consider switching majors. Not amount of love for gaming and dreams about gaming will make you enjoy programming. You don't want to be doing something you hate for the rest of your life. You don't want to be throwing your / your parents money away either.

Just my .02. Good luck.

You do have a point though, the only thing I ever like in my whole life is computers. Meh, ever since my friend on Steam started telling me stuff about hardware, and I got addicted to it.

At least, I could give a shot of learning some basic video game's programming, and see how well I do.
 
If you enjoyed working with flash I'd suggest you continue with. It. You can certainly make games without a formal comP sci background.

Consider finishing your flash game. Working out the bugs will probably teach you a few things
 
She's kind of busy to get ready for her classroom, so I don't want to bother her while she is getting ready :p
She's too busy to tell you a book title, which was given to you at least once already? This can't be serious.
 
If you enjoyed working with flash I'd suggest you continue with. It. You can certainly make games without a formal comP sci background.

Consider finishing your flash game. Working out the bugs will probably teach you a few things

Yeah, but I need a program and a book.
Someone said a book, but it doesn't look like a video games programming book to me nor anyone tell me anything about a software for me to use.
 
If you enjoyed working with flash I'd suggest you continue with. It. You can certainly make games without a formal comP sci background.

Consider finishing your flash game. Working out the bugs will probably teach you a few things

Do not encourage flash...It was just killed on android.
Flash will be dead soon enough.
 
cvwth.gif


Get that book, or something similar
 
I just need a good free software and book that I can order to help me understand.
There are many pieces of free software you can use in your endeavor. Many IDEs have free editions, including Visual Studio and Xcode, and there are many free, open-source libraries (and some free, closed-source libraries) you can use in your games. There are too many to list without knowing what specifically you're looking for, though. What platforms do you wish to write for? Windows/Metro, major game consoles, iOS/Android/Windows Phone?

What particular facet of game programming are you hoping to understand? If you wish to take a clean slate and from that clean slate develop a platform, shaders and script to build complete games, you'll need numerous books: there is no one book that covers everything with enough detail to be particularly valuable to you. Plan to purchase more than a dozen books on a variety of subjects related to these facets, in addition to language-specific books as well as language-specific and non-language-specific 'best practice' programming books. I can recommend specific titles, but there's no point until I know more about your goals.
 
There are many pieces of free software you can use in your endeavor. Many IDEs have free editions, including Visual Studio and Xcode, and there are many free, open-source libraries (and some free, closed-source libraries) you can use in your games. There are too many to list without knowing what specifically you're looking for, though. What platforms do you wish to write for? Windows/Metro, major game consoles, iOS/Android/Windows Phone?

What particular facet of game programming are you hoping to understand? If you wish to take a clean slate and from that clean slate develop a platform, shaders and script to build complete games, you'll need numerous books: there is no one book that covers everything with enough detail to be particularly valuable to you. Plan to purchase more than a dozen books on a variety of subjects related to these facets, in addition to language-specific books as well as language-specific and non-language-specific 'best practice' programming books. I can recommend specific titles, but there's no point until I know more about your goals.

I would say "Windows"
For the type of language, I would say cover the basic needs until I get into college where I might take a real deal or a bit more advanced.
Maybe list few of a good advanced book :p
 
You can't just jump into anything advanced without a very solid understanding of the foundations. The foundations which you admitted to not knowing. Think about what you want to do, exactly - what platform (or cross platform?), what language(s), what aspect do you want to focus on etc. etc. What is your real end goal? What do you want to be able to do? You said you took a class... what did you like, and what did you not like? Why? What was lacking in that class that you walked out of it without understanding syntax? What book did you use in that class?
You're not giving us nearly enough information to really help you help yourself, either.
 
You should know (in no particular order, but numbered for convenience):

  1. A programming language
  2. Data structures
  3. Computer architecture
  4. Basic math (calculus, discrete, linear algebra, probability)
  5. Algorithms

For 1, if you want to be a professional game developer, C++ is almost certainly going to be required. But it sounds like you're at a point where knowing any programming language at all is better than knowing a specific one. If you don't know any programming languages, there are many to choose from. Some I believe are worse than others in terms of a first language to learn, but that's neither here nor there. Some popular choices:

  1. C
  2. C++
  3. Java
  4. Python
  5. C#
  6. JavaScript
  7. ObjectiveC

I leave it to you to find resources in this matter.

For 2 and 5: Introduction to Algorithms and The Art of Computer Programming.

If those are out of reach for you (in terms of monetary expense), you can browse Jeff Erickson's Algorithms Course Materials.

For 3: Computer Architecture: A Quantitative Approach or Code: The Hidden Language of Computer Hardware and Software

For 4, there are many topics and many good books. I suggest Google.

Once you know those, you may be competent enough to program non trivial games in 2D and if you're a wizard, in 3D. If you're there, you may find this book to be useful as software engineering experience in game development packed into text and pages: Game Engine Architecture.

For 3D graphics and rendering, you may find this to be useful: Real-Time Rendering.

For AI: AI Game Programming Wisdom Series which is going out of print from what I've heard. Also, Artificial Intelligence: A Modern Approach for comprehensiveness/breadth.

I could go on, but I feel like this is already far beyond your capabilities (unless I've poorly judged your skill level). Notice the way I've structured this post; the first portions of the post had nothing directly relevant to computer games (well, they are, but let's not be pedantic about that...). It's all about computer science theory, programming languages, and basic understanding about the computer hardware. Once you've learned that, you might be able to write some non trivial piece of software. If you can do that, you might be able to write enough software that can run a real time simulation of a world which might be construed as a video game.

The point is, you need to start with the basics first and then you can work up to other things. You can try to build a game to learn how to program or what not, but honestly, I think that's a poor approach. Many people enter a computer science program because they "Want to Make Video Games" and then they drop out since they realize making a game is very hard. Programming, apparently, is just hard in general.
 
As an Amazon Associate, HardForum may earn from qualifying purchases.
Great post Snowman! I've brought Artificial Intelligence: A Modern Approach as AI is something I've always been interested in but never given it a great deal of time, plus it looks like a good read.
I don't think his native language is English...
$10 bucks says Indian.
 
Last edited:
Tawnos said:
Quote:

Originally Posted by mikeblas

Why can't you afford a book?

You "can't remember the codes"? Seriously? Or are you trolling?

I don't think his native language is English...

either that or our graduating high school students dont know English at ALL


Posted from Hardforum.com App for Android
 
either that or our graduating high school students dont know English at ALL


Posted from Hardforum.com App for Android

While I'm unsure his native language is necessarily English, it does seem that this is about the level of proficiency many recent graduates seem to be displaying in the United States :(.
 
What book did you choose, Ryou-kun? How are you progressing?
 
I received a PM from Ryou-kun, and here was my response:

There are so many ways you can go about learning programming. But you need to make a decision about learning to program, not making a game. If you want to make a game, that pretty much necessitates knowing how to program.

If you're not willing to learn how to program well, you will almost certainly fail at making games. You may need to set aside the idea of making a game (at least, complicated games with graphics, AI, audio, etc.) for a long time if you're not proficient in a general programming language.

Anyways, if you really want to learn how to program and eventually make games, you'll need to know a general purpose programming language. With the following goals in mind, I will suggest to you a variety of languages with various pros and cons (which are my own personal evaluations, they are by no means authoritative or correct).

With respect to ease of learning (1 being easiest):

  1. Python
  2. C# or Java
  3. JavaScript
  4. C
  5. C++

Many of my friends who are not computer science majors have generally given Python high regard with its ease to pick up and learn. The syntax is very friendly and there is a vast set of libraries available to do just about everything under the Sun. I tend to agree that Python is quite easy to use, but you can fall into a lot of performance gotchas if you don't understand what Python is really doing under the covers. C# and Java (I rank them together on the list since they are very similar syntactically, but they are very much different languages) are also quite easy to use due to the completeness of their libraries, but their syntax is slightly more complicated. The key drawback in these languages is that you can get by quite far without understanding what the computer actually does. You really need to know about the hardware (among other things) if you want to be a serious software engineer.

I have very little personal experience with JavaScript, so I can't say much. It is used heavily in browser applications and websites, but it is very much a programming language and appears to be rather friendly in terms of syntax. However, there's a whole host of problems of trying to learn how to write JavaScript to deal with the differences of JavaScript engine implementations.

C is a tried and true systems programming language. It gives you very direct access to hardware resources, but as a result, it requires you to know more about the hardware. Primarily, C requires you to know more about memory and its layout than languages like Python, C#, Java and JavaScript. This may be an issue with regard to ease of learning, but it is critical to know about how memory works and how the CPU interacts with memory in high performance applications (such as games). C++ is similar to C in that it has very direct hardware access, but adds some higher level abstractions. Writing robust code in C and C++ can take significantly more time due to having to manage system resources (especially memory) more directly than in languages such as Python, C# or Java.

Python is very easy to learn and you can certainly make games with Python, but if you want to be a professional game developer making AAA games (Gears of War, Uncharted, Half Life, StarCraft, etc), you will need to know C and/or C++.

With respect to ease of making games (ranked 1 for easiest):

  1. C#
  2. Python
  3. Java
  4. JavaScript
  5. C and C++

C# really does shine here in terms of ease of making a game. This is because of XNA: http://msdn.microsoft.com/en-us/centrum-xna.aspx (their new website is terrible, in my opinion). They provide pretty comprehensive library for basic "game-like" functionality. Asset loading, graphics, audio, input handling, pretty much all of these things are implemented for you in XNA to let you focus on the game. In other languages, you may need to write these things yourself or find libraries to handle them.

All the other languages can be used to build games, but its a matter of how much you need to build yourself or hunt for libraries yourself to get to a point where you're building the gameplay and not building infrastructure to run the game.

Ranking in terms of community support:

Well, all of these languages are very popular. It's kind of hard to rank them all when they're so popular. You shouldn't have any problems finding a community on the internet to help you out with any of these languages.

With these in mind, I rank the languages as follows:

  1. C# with XNA.
  2. Python
  3. Java
  4. C or C++
  5. JavaScript

I rank them in this way because C# has a pretty nice combination of ease of use, high level abstraction, library support and the XNA framework which gives you a HUGE head start on making a game compared to other languages which don't have such a cohesive game oriented programming package. All the languages can be used to make games, make no doubt about that. But if you were to endeavor to make a game in C or C++, you will spend incredible amounts of time building things which don't seem like a game, but are necessary to have to run a game. Those languages are very much languages for building applications where performance and control of the hardware trumps other considerations. If you make mistakes in C or C++ and you don't understand the hardware (and software, for that matter), you will not be spared.

JavaScript could be higher ranked, but I'm simply not experienced enough to make an informed ranking. Personally, just having to deal with different browser implementations make it annoying enough to avoid, but it isn't like other languages don't have these problems (it manifests in different ways).

That said, I have compiled a list of resources for you:

  1. C# and XNA:
  2. Python:
  3. Java:
  4. C and C++:
  5. JavaScript:

Of course, C# is Microsoft technology, so if you're not running on Windows, you're completely out of luck there. Java may be your best alternative if you want something that appears syntactically similar to C#, but they don't have a comprehensive game building framework like XNA (to the best of my knowledge).

If I were you (and assuming I didn't know a programming language), I would choose C#, Java, or Python first. Write some programs to understand how the language works, start building an understanding of how computers work. Once you've written some fancier programs (maybe a small text adventure game, boggle, a simple chess program for two human players), then maybe "graduate" to C or C++ and get down and dirty more of the hardware details. OR, continue in the language you choose and start adding in some more advanced features to games you've been working on. Maybe some graphics or audio. Possibly a very simple AI? These are my suggestions.

And finally, you make a reference to a book being expensive, but you make no specific reference as to which book you're talking about. Based on the price, I must assume you're referring to Introduction to Algorithms, Game Engine Architecture, or Real-Time Rendering. To be quite honest, I don't think you should be too worried about any of those books yet (although, the earlier you get started on algorithms, the better). If you don't know a programming language, you should focus on learning that first. There are literally tons of good, free resources out there on the internet for language reference and tutorials, you just need to ask others or search yourself.

This turned out to be a rather lengthy response, but I hope you find it useful.

Also, you'll need a text editor:


Feel free to add to this, elaborate, or refute my claims.

[Edit] Forgot to add mention of gamedev: http://www.gamedev.net/forum/123-the-technical-side/
 
Last edited:
As an Amazon Associate, HardForum may earn from qualifying purchases.
I would argue that modern C++ is easier to learn than C, with fewer gotchas, but that's a terribly minor 'nitpick'. XNA is indeed a great platform, and C# is indeed a solid language with an enormously-useful library. For the beginning Windows game developer, it's a great choice.
 
I would argue that modern C++ is easier to learn than C, with fewer gotchas, but that's a terribly minor 'nitpick'. XNA is indeed a great platform, and C# is indeed a solid language with an enormously-useful library. For the beginning Windows game developer, it's a great choice.

I actually thought kind of hard about that one. My issue is that C++ is so syntactically insane, especially with C++11. Don't get me wrong, I'm really comfortable in C++, but there's some serious syntax madness going on in the language now. If I was anyone new to programming, C++ would probably be one of my last options since it "Looks the scariest". C, in comparison, seems so much simpler. There's still some syntax buffoonery but I don't perceive it to be nearly as bad as C++ can be. Maybe I have a poor view of these issues; I am extremely partial to the simplicity of Lisp syntax (or lack thereof).

I do agree that beyond the syntax issue, C++ can be much safer and cleaner than C, but it often comes after understanding what C does not have and what C++ does have. Usually, that knowledge doesn't come about until you know both languages already to a reasonable degree. Easier to learn? I'm still not sold on that one, but I can't say for sure based on my own experience (C++ was my first language). I guess it depends on who you are.

Python is definitely very appealing for syntax reasons and library support. I haven't tried making a game in Python, but I do know of a few people who have and they seem to think it was a pretty positive experience. But man, C# + XNA just sets you up with pretty much everything you need. Eliminating the whole write your own (or hunt down) math library, input handling, graphics, and audio part makes such a huge difference. I would highly recommend going C# + XNA for anyone who is on Windows.
 
Back
Top