Hi there, my name is Steven. Most of you might already know me, but for those of you who don’t and are new to my blog... I’m just your friendly independent game developer. I’m self-taught and learned everything I know about programming from library books, online documentation, tutorials, trial and error, and a lot of patience with myself. I'm far from a good programmer, but I firmly believe that ANYONE can make a game so if this helps someone get started then I'm all for it!
So, you want to get started in gaming as a programmer? Maybe you are completely new to game development or are an artist who wants to broaden their horizons and become more self-sufficient, or want to become a designer like me and be able to talk programmer and artist alike? Welp, if that sums you up pretty well, this blog post is for you. As for those of you who already are sufficient in programming, feel free to read one of my angsty postmortems or memey posts.
Okay! So, like most things there is no correct or wrong way to get into programming. No be all end all method to learn or a certain piece of software or language that you must use. Most importantly, there is no magical software or tool that makes games for you. At least not yet… but even then, games made by a human with all those imperfections are always going to be infinitely more interesting than anything generated by a computer. Programming might seem like some arcane language or magic and... it kind of is, but you shouldn’t be afraid of programming; it’s a natural necessity of game development.
Pre Requisites: While you don’t need to be a math genius to be a programmer, you should at least know 8th grade Algebra, high school trig and physics. Don’t need to ace those classes nor enjoy math, but you should have a firm understanding of those subjects. The interactive part of games is mostly math.
Picking a programming language to learn shouldn’t be a difficult decision. Don’t overthink what it will run on, since shipping the game will come much later. Just find one that clicks with you, where you can type commands and see results quickly. Maybe check what other developers are using to keep with the times and make your games accessible, but it’s all personal preference. Don’t feel pressured to reinvent the wheel and code your own engine, that could take you years depending on what you want to make (but if you do, you will have so much more control over what you make). You can just use a game engine like Unity, Game Maker, Unreal, Twine, RPG Maker, whatever suits you.
One thing though that I personally am warry of is visual drag n’ drop or node based programming, especially for beginners. While I’ve tried it and really enjoyed it with Game Maker or UDK, it has an easier learning curve than normal programming… more so if you already have a background in normal coding. Yet, you’ll have less online documentation and support (since screenshots are more difficult than code for sharing and debugging on forums) and eventually the growing complexity of your systems will make your visual nodes tedious to create and a pain to manage. Looking at code is much nicer on the eyes.
So you’ve picked your language, your IDE (“integrated development environment” - the place where you type the code). Fantastic! Now read up and get an understanding of the basic syntax, commands, operators (the symbols that do math or logic operations – ex, +, -, or ! signs), loops, all that jazz and get to work! There’s some great apps and websites like Solo Learn or Codeacademy and terrific books (just make sure that the book isn’t too outdated as some of what you learn from them may be deprecated and no longer relevant.
Once you’ve written the basic sample type programs it’s time for you to come up with an idea for a game and try to make that idea a reality. If it’s your first game, do yourself a favor and save your dream game idea for later and start small to work your way up. Use placeholder MSPaint art, make “ducktape fixes”, and work within your limits creatively. However, whatever you do. DO NOT copy n’ paste directly from tutorials. Trust me. You’re only doing yourself a disservice if you are unable to understand and modify that code to make it do exactly what you want. Same goes for open source projects or sample assets. They can be resources to understand how games work and scripts communicate with each other, but don’t cheat yourself. Take the time to really understand the code. Also feel free to ask online for help on dedicated boards and forums, but before you hop on to stack exchange or UnityAnswers...
First ask yourself these three questions
1) Has someone else asked the same question before? (Google around with the console errors, the code you wrote, everything! for at least fifteen minutes before posting it yourself)
2) Am I asking someone to write code for me? (Ask something specific and provide evidence that you’ve already worked on the problem. For instance, a script and comment the steps you’ve already taken and potential diagnosis) People won’t want to help you if you aren’t willing to help yourself. The people on these support sites are not free labor and deserve to be treated with respect.
3) Is there any other way to do this? Or maybe try working around the problem? Maybe make that bug a feature? Make it look intentional and become a new mechanic? (Creativity thrives in limitation)
Other than that, all I can say is "just create... A lot." Try things outside of your comfort zone. Try making a lot of small projects, try taking a year or two on a big project, try working with other programmers over git (repository, file sharing online) in a gamejam or something. Get an abundance of work under your belt, then apply for a job or internship. Finding work in our job market today is a Catch 22 (you need tons of job experience to get a job), so you may need to create your own opportunities at first. And most importantly! Find yourself a comfy chair and turn down your screen brightness because you’re going to be staring at that screen, scratching your head, and rewriting the same few lines of code in almost every different way possible until those dreaded console errors and warnings all go away and everything works the way you hoped it would.
Not an ad. I'm not sponsored or anything, but the generic Target task chair is my personal favorite that I've been using for my most of my life.