I don't play video games. My Mom banned me from them a really long time ago, after finding I couldn't think straight afterwards. But you'll find out that as a programmer, especially if you get into machine-learning/AI, you will need to have a basic understanding of building them.
Disclaimer: All of this is my opinion on how you should begin, and how I began, this is not what you MUST do.
Most times when you begin to learn to build games you start out making a 2d platformer. I teaches you a basic understanding of character control, sprites, collision detectors, signals, and basically everything. A big mistake that I find happens is you start off wanting to build 3d. Trust me on this (learned from experience) unless you are using a template and it is basically drag 'n drop learn 2d first.
You will also need assets. Now there are 2 choices on how you can get them.
- You can make them.
- You can get them off of the internet.
There are a few ways you can make your own assets (remember I am talking about 2d). A advanced image editor like GIMP I hear works great. You can even also use something like "Paint". I find the one that works great for me is Piskel. You can set the exact size of the image, and basically you just draw. The feature that makes it stand out for me most though is the animation. All you have to do is press a button and you can add an extra frame which you can see how it looks animated in a little window on the side. It also will export all your frames as a .zip file when you are done. (Pretty nifty huh?)
I like to pretend I am very artistic, but to tell you the truth, I can't make a good looking front-end for anything. Not for video games, websites, apps... Nothing. So I became very good at finding assets online for free. One place I recommend is OpenGameArt. There are plenty of 2d assets on there. They also have 3d assets, and even sound effects. I also recommend Itch.io Not all the assets are free, but most of them are.
Now something that I would also recommend is actually going to sound like cheating, but actually ends up ALMOST giving you the same knowledge that you would get from building a game by yourself from scratch. You've probably guessed it by now, modding.
Modding is basically getting an game and making special modifications to the game. You still will have to learn skyboxes, sprites, collision detectors, and all of that, but it gives you a platform to start on other than starting from scratch which can be a real downer for people who are just starting off on programming. It also is pretty easy to learn.
One game I really recommend is Minetest. It does all the heavy lifting for you, but still leaves you plenty of "work" and code to write. One reason being that Minetest isn't a game, it's a game engine with the default game it comes with calles "Minetest Game". The modding is also in Lua, so it's really easy, and the documentation is amazing. I might have to do a tutorial on that now that I think of it.
There are also others that you can mod, like HalfLife 2, Minecraft... but Minetest was, and I quote: "Made to be Modded".
I decided I would not be making this a comparison of Game Engines like Unity, Godot, Unreal... If you wanna hear that comment down below. But I would make this kind of something to maybe get people interested in the whole concept of it.
Okay, I ranted long enough. Y'all have a great day!