How to get started in video game development

How to get started in video game development?

In this post I will try to draw a roadmap for someone who wants to start in the world of video game development, this will be the first of several that we will see.

As we progress along the roadmap, we will branch out and specialize in the branch that we like the most, since it is important for our career as developers that we reach a level of mastery in our specialization .

Why a roadmap to becoming a video game developer?

In various YouTube channel live streams, comments, and surveys that I have been passing, certain questions are repeated: What do I do to get started in video games? What do you recommend for me to be a programmer? Or even, where do I start?

I also know from personal experience that when you’re starting, you can get a little lost, and a little guide is always good, at least to have a reference and then adapt it to your needs.

I don’t expect you to follow this guide to the letter, and if you deviate from it, it’s no longer valid. What I want is to give you references and contribute my point of view.

The first step of the video game developer

Here, we are going to differentiate 2 categories or sub-levels. The first is that I would like to dedicate myself to video game development but cannot decide on which profile, and the second is that I know which specialization I like but am just starting.

I’m just starting out; it’s subjective. If you already have several years of experience but you’re still lacking in some of the things I’m going to mention, maybe you should stop and take a breath, review those things, and keep running.

What we are going to see is the foundation on which you are going to build all your knowledge, and if it is not solid, it will still falter in the future.

I want to dedicate myself to video games, but I don’t know what branch

Let’s say you want to dedicate yourself to video games, but you’re not sure whether to do so as a programmer, artist, designer, etc.

The first thing to do is to make a decision because you need to specialize. I don’t know anyone who has a master’s degree in two areas. That doesn’t mean you don’t have knowledge of both, but you can’t be an expert in both. I’ll give you a very basic example:

Imagine you spend 1 year on programming and another year on another specialization, and you are looking for a job. On the other hand, we have another developer who has spent those 2 years improving as a programmer.

Considering only this, who do you think is most likely to find work as a programmer?

The same with the other specialization you have been studying, there will be another person who has dedicated 2 years only to that specialization, they are one year ahead of you .

And be careful not to confuse “hybrid” profiles, such as technical artist, this is a specialization and the “I am a programmer and an artist” does not apply, since I am a technical artist. It does not work like that, technical artists have their specializations to learn, and within the technical artist you could find several branches.

Okay, I have to make a decision; how do I do it?

I recommend that you look for both general books and general videos/tutorials on video game development. I also recommend that you learn to tinker with various engines that require little programming or have facilities for visual programming.

Here, you have a lot of variety; the most famous are surely Unity and Unreal; in Unity, they have integrated Bolt for visual programming with boxes, and in Unreal, you have Blueprints.

Besides, you have engines that are a little simpler, or the difficulty curve is not so high at the beginning. You have Game Maker, RPG Maker, Cocos 2D, and if you search, you will find more.

The important thing is that you decide on one, start watching tutorials, and make a complete game, but it should be something very simple.

The goal of this game is to get you to touch on all the areas a bit so that you can then analyze what you liked the most and then start looking for material on that specialization.

Learning C# by Developing Games with Unity 2020 is another book focused on video game development and Unity.

Another way to delve deeper into what you like is to participate in several Game Jams and alternate the role you play in each one.

This is a very good practice because a 48-hour jam, for example, can put a lot of pressure in a very short time and you will see if you feel comfortable in that role under that pressure , because not every day of your career is going to be cool, there will be tough moments and it is important that you like what you do.

Another selection criterion

Another way to decide, which I do not recommend as the main criterion, is to look at job opportunities and salaries.

The entry door for a programmer is not the same as for an artist or a designer, for example.

In my experience, there are more programming positions than other specializations, which makes it easier to get into.

Another specialization, like design, is much more difficult because there are basically far fewer jobs. With one designer, you can make a game, but you’re going to need more programmers, and this will grow as that game grows.

Obviously take these numbers with a grain of salt, it’s a very simple example, but what I want you to understand is that it’s not a 1 to 1 ratio .

If your goal is to become a designer, it may be easier to start in another position, such as a programmer or QA, and then move to designer when you have some experience. I know several people who did this and are now designing.

If you’re looking for people to do a game jam, or this first project, at The Power Ups we have a Discord group with a lot of developers and you’ll find a channel to look for a team, you can stop by there and ask.

I want to be a video game programmer.

Now, let’s move on to the other category. I already know what specialization I want, and specifically, I want to be a programmer.

I’m going to talk about the programmer specialization because that’s basically my field. If you want to know about other specializations, let me know in the comments, and I’ll try my best to find someone who can recommend a roadmap for that specialization.

So… you want to be a programmer, huh…

But what programmer? Do you want gameplay? AI? Network? Client-Server? Do you want to make an engine? Do you want to specialize more in the game’s meta, or in transversal systems?

Once again, you have to decide where you want to focus. Think long-term. Where do you see yourself in 3 or 5 years?

Here you will have to decide, or at least think about, where your professional career will be. Are you willing to move to another country? Or are you sure you won’t leave your own?

These questions are important, because if you tell me that you want to make an engine but you don’t know any company in your country that uses its own engine, you’re in trouble if you don’t go out and look.

Don’t beat yourself up, but give it some thought, it’s a variable to take into account.

What should I learn at this level?

I want to clarify that I do not consider this level to be junior. It is the previous step, the base on which you will build your seniority.

At this levelyou should lay the foundations and learn a God-level programming language. Depending on your priorities, I recommend C# or C++.

[download_solid_book]

If you want to work on low-level graphical programming, develop an engine, or do something you like, such as optimizing and getting down to the smallest detail, C++ should be your main language.

If on the other hand you want to focus more on the high level and not get so into the details, making client-server games, or the server itself, C# will make it easier for you.

It is clear that this is not black or white. The knowledge you learn in one language can be transferred to another, but for that, you have to have a good foundation and decide on one.

Learn data structures, but not just how to consume them, learn what lies beneath , make your own list using an array, which adds the elements to the end, if you remove an element in the middle, it redistributes it, if it runs out of space, it grows…

Also, make a Dictionary, a Hash table, a binary tree, etc. In the real world, you will most likely not have to implement this, but it is the knowledge that you will need to solve more complex problems.

Also, learn about the different types of memory, such as dynamic memory, heap memory, and cache memory, and how this affects us. Please don’t fall into the temptation of optimizing everything!

In this phase, we are a blank canvas. We absorb and imitate, and many times, we stay on the surface when they tell us, ” This structure is better than this other one,” or “The foreach is bad,” etc.

When you receive this information, first verify it, make sure it is true, do not have blind faith in anyone, do not trust even what I tell you, and check it yourself to draw your own conclusions.

On the channel we have a video, which I leave you up here, where we talk about this and I provide you with a project in Unity that will allow you to validate and measure all these statements, draw your own conclusions.