What you need to know about game development

How programming languages, physics, and game engines are related.
Over the past 30 years, games have evolved from platformers to art. The salaries of game developers compete with the income of enterprise developers. But the threshold for entering the profession is higher for the former. If you have been thinking about developing your own game, the desire alone is not enough.

What to study except the language.
A game developer is first of all an engineer. In addition to programming he should know mathematics and physics. All games reflect the objects of the real world to a different degree, and their interaction is governed by the laws. For example, to program the simple physics of bouncing a ball you need to understand what the recovery factor is. The development language is less important – you can write the game in any language.

Also the developer should pay attention to optimization and performance. It is necessary to keep in mind that the game can run on a system with requirements far from the recommended ones. A good understanding of algorithms and consideration of system resources are a priority. For example, working in the free game engine Unreal Engine, it is necessary to take into account that all its dependencies are loaded at the start of the module and eat up resources. The game must maintain a stable framerate.

The development of mobile games is complicated by the variety of OS versions. It is also necessary to understand how users interact with devices. For example, on smartphones, there are areas that are uncomfortable to touch with your thumb. At the same time, the development of casual games is easier because the player’s requirements for the product are lower.

Code or visual programming
There are a lot more tools available to game developers now than there were 20-30 years ago. While John Carmack wrote his own game engine for Wolfenstein, the commercially successful Super Hot was developed on the free Unity Engine.

Free game engines allow you to engage with the game rather than develop its tools. They simplify things, such as the ability to immediately track the results of your work.

The limitation on the choice of engine imposes a programming language – each engine has its own primary language. At the same time, each engine has tools for scripting (visual) programming: Bolt – for Unity, and Blueprint – for Unreal. If you use only visual tools, you will face some limitations. For example, when working with physics of objects – realistic physics is always written by hand.

But the logic of casual games is implemented by visual scripts without any problems. Most likely, you will have to combine “pure” coding with visual coding. The latter is good if you need to quickly test the functionality of the new mechanics.

Visual programming tool from Unreal Engine
Development tools are also influenced by the market. According to App Annie, consumer spending in mobile gaming is 50% higher than in console or PC. Therefore, the creators of free engines have started to simplify the development of mobile projects. There are many free engines, but most of them (Construct, Cocos2D, RPG Maker) are preferred for the development of arcade, quest, hidden objects genres. Also note that some of the features of free engines may be available only in the paid version. For example, you can limit the number of programmable objects actions, and this forces the refactoring of the code.

It is possible to create a masterpiece on a simple engine – for example, Hotline Miami was made on Game Maker. Any development in small studios comes down to a confrontation between Unity Engine and Unreal Engine. In contrast, companies that develop AAA titles try to create their own engines.

Each engine has its own model for commercial development. For example, if you choose Unreal Engine, you will need to pay a 5% royalty after the release of $1 million in revenue from the game.