If you use an off-the-shelf engine, game development is not an impossible task. Low-level languages with maximum execution speed are excellent for creating a game. Previously this was, of course, Java. But now the games are written in it very rarely, but the languages of C and C++ have become the leaders in the sphere. It is possible to apply C#, or the above three programming languages that allow you to write games without an engine. At this point the choice can be considered closed – other options are better not even to consider.
The choice of the engine depends on the objectives. For a good 2D or 3D toy is preferable to choose Unity. This is a great option in terms of functionality and availability of documentation.
For large-scale projects Unity will not be enough, but CryEngine or Unreal Engine exactly right. The only disadvantage of them can be called a small amount of documentation.
Consider the examples of win-win combinations of language and engine:
Unreal Engine and C++;
Unity and C#;
Godot and Python.
The last option is very interesting because it is easy to learn and implement.