I’ve always believed some hobbies are better experienced when you stop being a user and become a creator yourself. It may sound like human sciences fluff when put this way (spoiler: I love human sciences), but the core concept is quite simple: if I’m in love with something creative, I want to learn how to craft it with my own hands.
I’ve always loved literature and cinema, so I’ve learned to write stories and screenplays. I could go at length with all the hobbies I tried to master to compensate my lack of talent, and they’re way more than I could ever be proud of—but video games are one of them. And because I love video games, I decided to learn game programming last year.
Now I want to share what I’ve learned with you. Because game programming is definitely challenging — but not as challenging as you may be used to thinking.
That’s because all you need nowadays is to sit in front of your computer, open a series of random videos on YouTube or spend two pennies in an online course and you can literally start creating whatever the living hell you want.
How to learn game programming: set a goal and pursue it
I don’t have the dishonesty to say I’m a game programming master, nor that this is definitely the right path to walk on. As a matter of fact, I’m still a beginner who’s trying to learn most of the basics, and I’m fully aware that a degree in software or game development may help you much more than online videos. But I hope this will give you enough grounds to start your own journey, if you’ve been thinking about game programming at any point in your life.
You don’t necessarily have to make money out of it. It could be a hobby, just like it is for me now. But it is important to establish this up front. You need to set a clear goal for what you want to achieve. Do you want to enhance your employability with more IT skills? Do you wish to write game stories for a living? Or perhaps just have a good time learning something new? In my case, it was pretty much a mix of all of this. I just wanted to have some fun and learn something useful in the process.
Either way, find a clear objective. You may want to develop one full arcade game in a year. Or maybe you want to take five years. Perhaps you want to learn how to use Unity in the next six months. Whatever your wish is, follow that plan until you’re happy with it.
I’m not a fan of strict to-do lists, but you might create a list of goals to help. Just adopt any approach you believe may work for you, and I’m sure you will be off to a good start.
How to code with Codecademy
You may have heard of Codecademy. It is a freemium online academy. To say it in English, it allows you to access some of the platform’s content for free, while the rest is available on subscription or by paying real money — pretty much like some big apps and games nowadays.
The best thing? Codecademy uses gamification to help with learning. Each lecture is fully interactive and has at least 7–8 practical exercises for you to complete. By the time you’ll get to the end of each course, you will actually have learned by doing.
This is an important part of the process. I recommend spending as long as possible trying to complete as many lessons as you can in Codecademy.
Whatever you choose, please don’t do what I did. Avoid Java like the Black Plague.
Start experimenting with game design
Everybody makes mistakes in life, right? Of course, last year I had absolutely no idea Java was seen as the worst programming language in the gaming industry. Matter of fact, please don’t mention Java in conversations with other game developers. People had Gulf War flashbacks when I told them I learned Java. It ain’t nice.
Java wasn’t my first option, though.
After a bunch of tutorials on YouTube, I managed to create a couple of little arcade games with Pygame, which is a Python framework made purposely for game development. Although quite far from Unity’s effectiveness, I wouldn’t say to steer clear of Pygame. Programming games with Python is such a raw process it will most likely teach you all about the bare structure of game design — how animations work, how you draw images on screen, how to import assets. Jumps are parabolae you need to calculate, animations are looping sprites and so on.
After my first games in Python, I followed a few other tutorials on YouTube to create a text adventure in Java. I recommend watching this tutorial even if you’re not planning to follow along. It was fundamental to help me understand the core structure of writing drop rates and what kind of math lies at the foundations of RPG games.
Oh, yeah, you don’t really need to know advanced math to be a game programmer. You do need to think logically, and knowing math definitely helps, but numerical operations are pretty basic and usually limited to a few simple algorithms. If you’re bad at math, don’t be discouraged. You can always find help online if you need it.
C++ & C#
Shortly after that, I found out that Java isn’t exactly the most polished language to program games. I was planning to learn C++ and C# at some point, and then Codecademy came to help with courses in both languages. From there onwards, it was all downhill.
Both C++ and C# derive from C, which is a powerful and complex programming language. Although it is a simplification, all you need to know is that the main difference between the two is in how they handle classes, objects and memory allocation. If that makes any sense at all, at this stage.
C++ is recognised as the industry standard. It is also the language you need to learn if you are planning to program in Unreal Engine. C#, on the other hand, is excellent for beginners and is fully supported by Unity Engine.
And it was exactly when I decided to learn C# and moved onto Unity that the most fascinating bit of my journey began.
Why Unity Engine?
Unity is a game programming engine. It is much more user-friendly than Unreal, but it doesn’t handle graphics in the same way. Unity is now working to change its rendering pipeline and make it easier to work on photorealistic graphics, so the differences with Unreal might be thinned out in the near future. Still, Unreal helps with stability and performance in big games, while Unity is perfect for smaller and lighter games, including mobile.
But the best aspect of working with an engine is the way it handles most of the basic principles for you. When I was programming in Python or Java, I basically had to program my own engine on the way, setting up collisions and animations myself. Unity does most of that stuff for you, and you only need to know how to set everything up the way you want it to work.
Of course, the interface may look obscure at first, and be ready to face a steep learning curve. Any Unity project starts with nothing but a game camera — only the developer can add in all the rest. And that blank canvas can be as frightening as a blank page in Word.
But it’s easy to get over that first fear. YouTube is full of resources, tutorials and video-courses to understand Unity development, and the community is extremely active.
In terms of resources, Brackeys has become my personal bible. CEO and founder Asbjørn has been making games for the past 10 years and his teaching is so genuine and clear it would make Unity intelligible even to a six-year-old. And because Brackeys has been active for several years, it has tutorials for any kind of project, from beginner to advanced, including procedural programming, shaders, 2D/3D lighting and more.
And if YouTube videos weren’t enough, you can always find some more professional courses for a dime or less online.
Udemy and GameDev.TV
I know, I know, Udemy is full of crap, the one that stinks and leaves a foul smell on your clothes for days. And many free courses are, actually, stinking piles of feces. But some others are really worth a try. Thanks to a fortunate Humble Bundle early this year, I managed to grab (paying around £25) a dozen of courses by GameDev.tv, which is an online academy with beginner courses for game devs.
Now, GameDev.tv’s teachers may not be as clear, concise or young as Asbjørn, but they do have years of development under their belt and they’re certainly capable lecturers. It is, however, advisable to have at least basic or intermediate knowledge of programming principles before approaching one of their courses. Turn to Codecademy and Brackeys for help.
The course I followed was Complete C# Unity Developer 2D: Learn to Code Making Games. 35 hours of video lessons guiding me across the development of 5 different games, from text adventures to top-down shooters and even a 2D platformer. Although the course encourages to find your own assets, nothing prevents you from using the ones the lecturers have prepared for you to follow along.
All GameDev.tv courses are usually sold at an average price of £12,99. Even less if you’re as lucky as I was and you find a nice bundle with a bunch of them.
How to develop your first game
After all this you will have the tools, possibly the skills, and it is finally time to jump onto something juicy. How do you make your first original game?
Well, there are a few things to consider. If you’re a creative, you will probably be exploding with ideas at this point and your hands may be itching to work on your own, big game on Unity. But don’t aim for the moon just yet.
Start small. As in, very small. Make very simple projects with very simple assets (even basic shapes will do). Everyone will tell you that learning to program is like building a house. You need to put all the foundation and floors in place before you can think of the penthouse and the roof garden.
Don’t go for a randomly-generated RPG from the start. Start from a simple idea and evolve your skills from there. Your first projects will help you practice, and there is nothing like seeing your game coming into shape as you bash lines of codes one after the other. Even a good single-screen arcade game can motivate you to keep moving.
It’s also pretty easy to find simple ideas for your games. Imagine a protagonist in peril, a pet with a wish, a small red cube wanting to get to the end of a walkway by avoiding the black cubes. Anything. With the right mindset, any idea can be turned into a game. And if you need more sources of inspiration, take a look at the different game development jams online; Ludum Dare’s themes are excellent to get the creative juices flowing.
If you’re not an artist, don’t worry about the assets. Perhaps you’re lucky enough to know a few artists who might want to make a game with you, but if you’re not, you can always buy some from Unity’s own asset store. And if you don’t feel like spending money, you can turn to Kenney or opengameart.org to grab some free assets. The world is your oyster.
If worse comes to worst, you could always consider pixel art. With a bit of practice, it won’t be hard to create something you can be proud of. Brackeys has tutorials even for that.
I am now developing my first game. I was planning to tell you more about it, but this may not be the right place nor time. Just know that, thanks to the Internet and a pretty stubborn perseverance, I now have some basic experience of writing snippets of code which I can then reuse and adapt for future projects. And as I follow Brackeys’ tutorials, it becomes easier and easier to anticipate Asbjørn’s moves.
I still have so much to learn and my adventure with game programming is far from over. But, when I look back at what I was doing a year ago, when I barely knew what a for loop was… Gosh, if this all feels different now.
Because there is nothing more satisfying than seeing one little shape wandering on my screen, thanks to a line of code I’ve written entirely from scratch.