To be sure, game programming is one of the more difficult parts of programming. The reason for this is that modern games have become increasingly complex. Graphics and physics take up most of the system requirements and need lots of non-programming competence in order to make a successful game.
Games are generally written in languages such as C++ which provide a good balance between speed and power. C++ offers lots of tools for programmers such as classes and the standard library for the language, but it’s also relatively low level, allowing it to run without very much overhead. Additionally, modern game engines (to be discussed later) are often written in C++, so integrating your code into the engine will be easier if you use the language.
From there, what you should learn depends on what kinds of games you want to write. A simple 2D game justs needs the Simple DirectMedia Layer, an easy to use library for graphics, sound, and other game functions. However, while SDL is simple, it is not very powerful. For something more complex, like a 3D game, you would need to program the game with a more powerful library such as OpenGL or DirectX. These libraries have the more complex tools that you need for 3D graphics.
Game programming, more than any other branch, requires large amount of study simply because of the vast number of disciplines that it covers. Complex games often require extensive knowledge of data structures to manage game data, and algorithms to process it quickly. Because of the high resource demands of today’s games, it is important to use the most efficient tool for the job.
And as stated above, today’s games use complex graphics and physics algorithms to render the actual game content, though this is only important for 3D games.
If you really want to get into more advanced game development, your best bet is to use a prebuilt game engine. That has all of the graphics and physics algorithms already written for you, so you can focus on writing the actual gameplay code and graphic content for the game. Most game studios use this method. For example, all of Valve’s modern games use the Source engine.
One problem with prebuilt game engines is that they are generally not free. The major exception to this is id Tech 4, which was the engine used in Doom 3. It’s freely available now.
Game development is not a simple task. It requires large amounts of programming knowledge, artistic talent, and computer science knowledge. But it is not an impossible task if you put your mind to it, and can be very rewarding.