If you love video games, you probably secretly dream of developing one. Here's how I got started in about 6 months
I have always regretted not having followed the advice of those who told me that "I would have liked programming". Because he wasn't wrong. Hearing "programming languages" can be scary at first, but our webmaster teaches that you can safely program something without it exploding in your face. A minimum of good will is enough.
And no one said you have to start young.
Why the internet is a wonderful place, and is entirely at our disposal.
For all those gamers / dreamers out there who want to "play beyond the rules", to the point of creating them themselves, here is a list of 7 steps to start programming a video game in less than a year. If you are good and have consistency, maybe even 6 months are enough.
Hearing the phrase 'programming languages' can be scary at first, but what they don't tell you is that a little bit of goodwill is all it takes.
How to program video games in less than a year
Step 1: Define a goal
To learn more:
Guide: How to program video games in 1 year
The first step is more a wild card than a real practical aspect, but it is a fundamental step to achieve any result. Do you want to learn how to draw a humanoid character? Do you want to create your first game? Do you want to compose an entire concept album to tell your original stories? It doesn't matter how ambitious your goal is; the important thing is that it is reachable, and that you are willing to chase it to the end.
Focus on understand your limits and define a goal based on those. In my case, I knew I wanted to learn new professional skills to put on the resume, and I wanted too take off a whim that I had for years. I also knew that I was passionate about linguistics and foreign languages, and I approached programming as if I were learning a new language.
Keep in mind, however, that I I have not given myself any kind of time limit, but I strongly advise not to do the same thing. Give yourself six months, one year, two years, the time you prefer (always keeping in mind limits and what I just said), but let it be a tangible deadline to reach the goal. Otherwise it's all too easy to get distracted and stray from the right pathonce the feeling of novelty has subsided.
Step 2: The Tools - Codecademy
The internet is full of learning tools
Once you've set your goal, it's time to think about the most suitable tools to achieve it. All writers at one time or another suffer from "blinking cursor syndrome" on the blank page of Word, and the same applies to programming. A blank document can be scary if you don't know where to start. Luckily, Codecademy exists.
Step 3: The Language
Yes, but which one do I learn?The simplest answer is that there is no definitive language. But Unity and Unreal Engine are written in C # and C ++, and those will likely be your "target languages".
I recommend that you get to know all the languages that seem to intrigue you on Codecademy. Even if you won't get to create an App with each of them, the important thing is to understand the theory with some practical implications. Each course following the first will be a review of the theory of the background, which will strengthen your knowledge of programming and make your brain more resilient to adapt to different types of syntax and situations.
And this is an equally important time in the learning phase. I recommend spending as much time as you can trying to complete all the Codecademy lessons you can, possibly in the language of your choice.. Many others will advise you to start with Python, which has a very simple syntax and is a choice I can also share, but the reality is that it's all in your hands and much of it is a simple psychological block.
Spend as much time as you can trying to understand the basics. The juicier stuff will come later.
Within a few weeks, you will know the basics of programming syntax, Control Flow, functions, methods, and possibly also classes and objects. The C # course of Codecademy, above all, is particularly complete and detailed, and provides a large amount of information sometimes absent in the other courses on the platform.
Whatever happens, don't do as I did. Avoid Java like the plague.
Step 4: How to develop the First Games - Python?
Of course, I didn't know a year ago that Java was seen as the absolute shit in virtually the entire gaming industry. So I decided to take Java, shortly after completing the course on Codecademy, and start creating a text adventure to play on the computer terminal.
It wasn't my first option, though. Following a couple of YouTube tutorials, I was able to create a couple of arcade games using Pygame, a Python library designed specifically for programming games. As basic as it is and light years away from the versatility of Unity, I recommend approaching Pygame, if you have time, to understand the crudest foundations of game design. This is because, in Pygame, each element must be programmed in the smallest detail: jumps are parabolas, sprite animations are looped programs that show different frames from a set on the screen, and so on.
Programming an insignificant game in Pygame, even following two or three tutorials, can open your mind to the principles behind the development of an engine. And it can be crucial to understanding the physics within a video game.
After my first games in Pygame, I followed a couple more YouTube tutorials to create a text-based dungeon crawler in Java. I recommend following this tutorial even without creating the game itself; allowed me to understand the concept of drop rate and the mathematical structure behind RPG video games.
After that, I decided I was ready to try and develop something on my own. For about a couple of weeks, I worked on a text adventure inspired by one of my horror stories, The Organist, devising an inventory system, multiple choices, and more. And, just when I was starting to kick in right, I had to abandon the project to continue my academic career.
Step 5: C ++ and C #
My 'target languages'
But I don't regret it. Soon after, I found that Java is not the cleanest language in existence for programming video games, and that the industry tends to look at it with a certain disgust. In addition, about a year after leaving the project, I realized how crude and poorly optimized my code was, especially after resuming studying with Codecademy.
Because at that point Codecademy had introduced courses in C ++ and C #. And from there it was all a descent.
Both C ++ and C # are derived from C, a language as complex as it is powerful. Even if it is a simplification, you just need to know roughly that the biggest difference is in the support of classes and objects, and in different ways of managing memory.
Once I learned C #, I knew I'd switch to Unity engine as the next move. And that's where the most fascinating part of my adventure began.
Step 6: Why use Unity
For those who do not know him, Unity is an engine developed to support video game programming. It is much more user-friendly than Unreal, but it doesn't support shaders and photo-realistic rendering of the latter, although things are slowly changing for the better. Additionally, larger games developed with Unreal tend to be more stable and performant - Unity is perfect for light to medium-sized games, and mobile titles.
Until I discovered Unity, developing a video game in Java or Pygame meant program my own engine as I went along. Which also meant setting up collisions manually, animations and much more. With Unity, many of these processes become automatic.
Sure, the interface is a bit tricky to understand at first, and there is a fairly steep learning curve. Any project in Unity simply starts with a game camera - it's up to the programmer to add everything else. And that blank canvas can be just as scary as the blank sheet of Word.
But that fear is overcome quickly. YouTube is full of resources, tutorials, and video courses that can help you understand development in Unity, and the community around the engine is much more active than Unreal. If you plan on applying for a job as a game programmer, your knowledge of Unreal is likely to be preferable, if not necessary - but there will be time to learn how to use it. For the moment, Unity will be fine, and will allow you to take away a lot of satisfaction without getting too discouraged.
Unity users will give you crazy support
Personally, in terms of resources, Brackeys YouTube channel has become my bible. Asbjørn (the CEO and founder of Brackeys) has been developing games on Unity for at least 10 years, and his teaching style is so genuine and clear that even a six-year-old would understand Unity. Furthermore, the YouTube channel has been active for several years and features tutorials for every level, from beginner to advanced, also covering procedural generation, shaders, 2D / 3D lighting and much more.
Other noteworthy channels are Dani, which often makes interesting challenges (such as "develop a game in 12 hours"), Blackthornprod e Thomas Brush (more focused on game art).
But the resources for Unity don't end with YouTube channels; there are also slightly more “professional” courses that can be found for very little money.
Step 7: Courses on Udemy & GameDev.TV
Yes, you are right. Udemy it is full of junk, but of what stinks and stays on your clothes for days and days. And many of the free courses actually are. But the platform often sells courses at terrifying discounts, and, thanks to a very successful Humble Bundle earlier this year, I was able to remedy (for around € 20 in total) about ten courses created by GameDev.tv, an online academy dedicated to programming tutorials for beginners.
GameDev.tv instructors may not be as clear, concise or young as Asbjørn, but they have years of development behind them and are more than capable teachers. Although their lessons are defined as suitable for total beginners, it is advisable to have at least a basic or intermediate knowledge of programming languages before approaching their courses. Codecademy and Brackeys should give you the necessary foundation.
The course I took personally was Complete C # Unity Developer 2D: Learn to Code Making Games (yes, forget to program if your English is below shoes). In about 35 hours of video lessons, one of the GameDev.tv instructors guided me in the development of about 5 different games, from a text adventure to a 2D action-platform, passing through a top-down shooter and even a tower -defender à la Plants VS Zombies. The course encourages you to use your own assets and create something of your own, but nothing prevents you from following the lessons step by step with the assets provided by the instructors themselves, to practice for the end of the course.
GameDev.tv has a large portfolio of courses available, from 3D modeling with Blender to an advanced RPG and AI scripting course. And all at average price of around £ 12,99 per course on Udemy, or even less if, like me, you're lucky enough to get a bundle.
Step 8: How to start programming video games
At this point you will have matured the tools, possibly the skills, and it will be time to throw yourself into something serious. How to program the first original video game?
If you are a creative person, by now you will be bursting with ideas for potential games to create and looking forward to getting your hands on a Unity project of your own. But there are still a couple of things to consider, obstacles I have run into myself.
The myths to dispel
I will not lie to you: programming is complex, and it can be quite a lot. But you would be amazed to see how simple it is, compared to the general idea. Especially with regards to videogame development.
Triple A's are obviously out of the question. Those could come in the future if you like. But for programming simple arcade games, or even moderately complex 2D games, the truth is you don't even need to know too much math. A friend, now a graduate of the Bachelor of Physics in Pisa, clearly let me know that a game like Kerbal Space Program stops in the first quarter of the first year of theoretical physics, in terms of concepts. And the math actually used in game design is probably even less.
The rest is all visual and practical memory.
Don't be intimidated by math or lines of code. With a little logic, all concepts will be simple to understand.
Assets are the nastiest part of programming a video game, especially if you are not an artist at all. But there are several solutions to go through. If you don't have an artist on the team, you could buy premium assets from the Unity Asset Store, or download free ones around the web (or even from the Asset Store itself). Itch.io is full of free assets, but Kenney it's quite famous for its colorful style and packs, and opengameart.org is another great resource for finding some very basic assets.
Most of the time you will not be able to use them for commercial purposes, unless you have purchased them for a specific price, but they are a great way to start practicing. And if everything goes wrong, you can always use Pixel Art; with a little practice and the right tutorials (Brackeys offers a couple), it won't be difficult to create something you will be proud of yourself.
In reality, however, chances are you don't even need to use assets for your game. Brackeys spent several hours of tutorials creating super simple games with nothing but geometric shapes, such as squares, triangles, cubes and the like, and embellishing with particle effects and light effects. My advice is to start with a very simple idea, something that allows you to focus on code rather than design; with subsequent projects, you can bet bigger.
Simple ideas, complex ambitions
Finally, one last tip: don't jump right into a procedural-generation RPG, perhaps even with random enemy spawns and complex combat AI. Anyone from Brackeys to GameDev.tv will tell you to "start small. " Start with a simple idea, a relatively easy game to think about and complete, and evolve your skills from there. You don't have to make any money on it - not yet, at least. The first projects are mainly for practice. There is nothing more beautiful than seeing a game, complete and running, come to life in front of your eyes, and even small hits like a single-screen arcade can motivate you a lot.
And it's easy to find ideas for simple games; a protagonist in difficulty, an animal with a desire, a small red cube that just wants to get to the end of a corridor avoiding the black cubes. Any idea can become a game, with the right mindset. And, over time, you will be able to identify and recognize even the most effective sources of inspiration; Ludum Dare and other game design contests (including those by Brackeys himself) are great places to look for prompts, thanks to different themes every year that can inspire you to do little experiments.
My Game: Running Out of Power
And my first game, currently in development, comes from one of the past Ludum Dare. I took inspiration literally from the theme “Running Out of Power“, and I imagined a small electron trying to escape from a dying battery. A simple concept, which I will probably develop as an endless runner or a level top-down shooter, with free movement, vertical scrolling and enemies to hinder the player in the path.
It's just an insignificant little arcade, something you can literally program with two pounds and a white sphere with a symbol in the center. But it's a great way to practice and learn something with my own project. And in the meantime, thanks to Brackeys, GameDev.tv and some perseverance, I already have several other arcade games under my belt, all coding experiences that I can rework and reuse for the future. Following the tutorials on Unity gradually becomes easier and more intuitive, and I find myself more and more inclined to anticipate the moves of the various instructors as I go along.
I still have a lot to learn, and my learning certainly doesn't end there. But, when I think back to where I was a year ago, when I barely knew I wanted to program and had no idea what a for loop was ... God, things have changed since then.
Because there is nothing more satisfying than seeing that little electron move across the screen, thanks to a code that I wrote entirely from scratch.