I answered a whole lot of questions on Quora in the last few days, and thought I would share some of them here on the blog over the next little while, since I have been pretty quiet.
The question on this occasion was, what programming languages should an aspiring game designer learn? And the answers tended to be around things like “C++.” But I suggest a different approach to the problem.
Learning new things is hard. Programming calls for a new mindset, if you have never done it before.
Therefore, you should learn whichever one you will stick with. And that means, the one that is easiest for you to learn first. The one that will give you positive feedback quickly.
Don’t jump to C++ because you are “supposed to,” even if you are aiming at working in AAA console. Don’t jump to C# because it’s the current hotness or what Unity uses. Pick the one that you feel like you personally can make progress in.
Any good programmer will learn many languages over the course of their career. Heck, I am not a good programmer, and I have worked with BASIC, C, C++, Python, Lua, modern BASICs like Blitz (three members of that family so far), three homegrown scripting lnaguages, JavaScript, PHP, and Java.
Pick one that is easy and cheap to get started in. It doesn’t need to be powerful, because you don’t know how to use that power yet. Instead, what you want is something that will let you get a picture on screen very quickly. When you are starting out, positive feedback is the hardest thing to come by, because you suck. So you want a language that will make iteration fast and your failures obvious, and your success gratifying to you.
Don’t worry, you may graduate to a language with greater complexity and power. (You may not… designers don’t need to be great programmers. They need to be able to try ideas out).
So high level languages will work best for a beginner. I would try out things like
- Gamemaker
- Flash
- One of the versions of Lua with a simple graphics library. I used to use one for PSP homebrew development that had a simple API like “screen:draw(“picture,jpg”). That is the level of complexity you want.
- Same goes for one of the versions of python with a graphics libray.
- One of the many BASIC variants aimed at indie game developers: BlitzMax, DarkBasic, whatever. I am currently using Monkey, a cross-platform language by the maker of Blitz.
- If you have an iPad, a neat Lua variant is Codea — you can code right on the iPad! I’ve used it for a couple of prototypes. There are similar apps for Python, and other languages.
Remember, your first game is going to be on the order of Hangman, Pong, guess the number, not Uncharted. You want a “toy” language, as the pros will derisively call these., because you want to play around.
A lot of your game development heroes started out with MS BASIC.