First, learn how to program. It is very important to understand all the basic concepts of programming. If you don't know how to program, we recommend starting with Python. This is a great language that allows programmers to understand details at a low level and focus on concepts. It is also a very interesting language. I am sure you will like to program it. I learned it in just 3 days (although I already had programming experience).
Once you find the language and can program it, you need to decide the language in which to program the game. It really depends on the task you want to perform, such as engine or game development. The engine developer creates something that runs the core of the game, the engine, and the game itself. If you choose this route, you must deal with all the details of low-level programming. Most engines are coded in these languages, so you must use C or C ++. It is also very disciplined in terms of memory allocation/sharing and code optimization techniques.
Another way is to code the game using a previously coded engine. In this pass, you create your own game using an engine created by someone else. Engines usually have script language (Python, Lua, Ruby, etc.) bindings, so you can code your actual game in a scripting language. Focus on game design, not other low-level details.
Of course, you can do both. Code both the engine and the actual game.
I think it's better to start with a game and then wait to decide which one you want to go to. For the first few games, it is better to code the whole game yourself. You learn a lot along the way and also decide how you want to go.
To create a game, certain additional libraries are required. If you can program, you need to know what the library means. These are additional code patches that can be associated with your own code. To create a game, you need libraries for graphics, event handling, networking, and more. If you use Python, Pygame is a great beginner library that provides almost everything. For C or C ++, there are Allegro and SDL. A quick search on Google will display a list of game programming libraries for the selected language.
Play the selected library. Read the tutorial online. Learn how to import simple things like rectangles, circles, and photos. Try creating some animations. The basic idea for creating an animation is to draw an object, then draw another object on the background color with the same dimensions, and then draw the previous object and set the coordinates as much as you need. Is to move. Of course, doing this very quickly can create an illusion of movement.
Next, create a simple game like Pong or Tetris that uses only event handling and some basic physical aspects (collision detection). Google for the game's loop structure aids game coding.
Once encoded, you will proceed to a slightly more complex game, such as a game where two tanks fight. You don't have to deal with graphics, but only use royalty-free images that you can use. Try to clone more arcade games like a breakout. To create them, you need to use a so-called level editor that is used in almost every game.
Next, try AI-based games such as Pac-Man clones and top view football games. Both can be implemented with FSM (Finite State Machine). This is a concept used in 80% of AI commercial games. Next, try a side-scrolling platform game like Mario Clone.
The above games contain almost all the concepts used in 90% of the games. All you need to create a game with an impressive 3D interface is to use a useful engine. First, when programming in 2D, you can simplify your code by focusing on more important concepts. When you are comfortable, you can play 3D games.