In this article, you will have an opportunity to learn about the technical challenges in game development: game logic, graphics (2D and 3D), game world physics, sound, game maps, data storage, game testing.
You can also learn about game engines (using UE4 and Unity as examples) – logic, physics and maps, tools for developing graphics, mobile game ui and sound (Photoshop, Max/Maya, Audition) and infrastructure – databases, repositories, project building, automated testing.
It used to be that one game developer was all at once: game designer, programmer, illustrator, sound designer, tester, etc. But now the situation has changed: large companies and teams have about 200 or more people working on the same project, with different specializations and in a variety of positions. Nevertheless, even now people continue to make games alone or in small teams. Game logic is the specifications that under condition A, event B will happen, for example: if a character stabs a monster with a sword, it will deal 3 damage out of 10 hp. And all this has to be coded somewhere – this is done by game-mechanic programmers, but often it is done by game designers.
Most games are hard to imagine without graphics, which can, in terms of technological production, be divided into two main types: 2D and 3D. The interface is how the player interacts with the game. In practice, interfaces are handled by individuals because they require special skills, different from those possessed even by very good artists. If there is a game world in the game, then it should be maps, on which you need to put a lot of different objects, make a beautiful landscape, place monsters, etc. All of this is handled by the level designer.
An important part of the game world is physics; a difficult task for both the programmer and the game designer. Sound is a wide field: music, simple sounds (gunshots, explosions, etc.), and voice acting. The game has a lot of data that needs to be stored and sent (client-server protocols). The infrastructure is needed to make all of this possible: a repository, various documentation storage systems, builders, etc. Nowadays even indie teams use quite a lot of good practices to simplify development.
Features of working with an engine
An engine is a complex software which allows you to not make everything from scratch, but gives you a lot of ready-made solutions, for example: a map editor, an artificial intelligence system and much more. It’s important to understand what programming languages you’ll be writing code in. The most common solutions for client and most mobile games are C++ and C#. For the server side, however, many more options are used: PHP, Python, Java and many other languages. At one time engines were the prerogative of large studios because they had to be made from scratch and commercial ones (Unreal Engine for example) were expensive. But now they are practically free and available even to the limited means indie developer. Even if you decide to do spine 2d animation, you have to hire high-level specialists.