The world of game devevopment

There are so many different tools for creating games that your head is spinning. We figure out what it is and what to choose for ourselves.

Unity, Unreal Engine, Godot, Game Maker Studio, Source, RPG Maker, CryEngine, Creation Engine, C ++, C #, JavaScript, Swift, Java, Objective-C, Lua, Python, PyGame, PHP, Scratch, DirectX, PhysX, OpenGL , Havok, Cocos2D …

Big list, isn’t it? These are just a few of the technologies that are used by a typical game development agency to create games. If you really want to get into game development, but don’t know anything yet, this list itself may scare you away. Or, on someone’s advice, you will choose something, and then, having got used to it a little, you will understand that this is not quite what you need.

This article is a mixture of an encyclopedia and a roadmap to help you choose the toolkit for you.

Game development engines

Games are created using engines – a set of tools that allows you to work with graphics, physics, scripts and more.

In the upper left corner is the game scene, where you can add objects, move them, remove, and so on. Below is the game window – in it you can see how the finished game will look like. You can even hit the Play button and play.

Then you can see the hierarchy of objects on the scene, the file manager and the Inspector tab – it has different settings for the selected object. In addition, you can go into the project settings and specify the desired indicators for gravity, lighting, shadows, graphics quality and more.

Is Unity good for mobile apps? Well, the engine also has scripting and API support. Scripts help you write commands that will be executed by the game all the time or after some player action. The API, on the other hand, helps to simplify scripting. That is, you don’t do complicated mathematical calculations to change the position or rotation of an object – you just write a command like “Unity, rotate object A 5 degrees along the X-axis.”

You either use a ready-made engine, or write your own – both options have pros and cons.

Programming languages

Then there are programming languages ​​- with their help you will write conditions and commands for the computer: if A, do B, and if C, do D. Despite the fact that the engines take on a huge part of the work, you will have to program a lot.

Moving through the menu, switching between locations, character control, camera movement, changing music, dialogues, quest system – all this and much more will need to be programmed. Not to mention gaming artificial intelligence.

If you have already chosen a specific engine, then you need to choose the appropriate language. For example, Unity supports C # and JavaScript.
(its modification called UnityScript), and in UE4 – C ++.

Frameworks

You can use language to write a game without an engine. For example, browser games are created in JavaScript, games for computers in C ++ or C #, games for computers in Java, for Android devices, and so on.

For these languages, there are either libraries for working with graphics, or entire frameworks for creating games. A framework is a skeleton, an almost finished application. The developer simply adds some additional functions for this framework, like Spine 2D animation, thereby adjusting it to fit his needs.

The developers of the Celeste game decided to ditch the engines in favor of Microsoft’s XNA framework for the C # language. As a result, they got a platformer with very cool controls.

Libraries

Libraries, unlike frameworks, do not provide an almost complete application, but provide certain tools. The simplest example is the Math library (mathematics), which is found in almost every programming language.

Using Math allows you to easily raise numbers to powers, find roots, search for modules, calculate sines, cosines, and so on. You do not implement all of this yourself, but simply call the desired function and pass parameters to it.

In game development, more complex libraries are used that allow you to work with graphics or physics. For example, graphics libraries allow you to rasterize game objects.

That is, the developer does not write instructions for the video card, which pixels to display. Instead, he adds sprites (images) to the game.
or 3D models, and the graphics library itself calculates how it should look on the monitor.

Conclusion

I hope this article helped you understand what technologies are used by developers and how to choose the tools for yourself. The main thing at first is to focus on one thing. This will be difficult because you will often stumble upon holivars about which is best.

There is no obvious leader here – each engine is good where others are inferior. Therefore, first of all, you need to focus on what is important to you.

And if you chose Unity or Unreal Engine 4, then we have excellent courses on them with a bunch of projects, challenges and communication with other students.