Some of the most popular game engines include:
Unity
Unity is a cross-platform game engine and set of tools used to create both 2D and 3D games. The name Unity has become synonymous with "3D engine" thanks to its user-friendly interface and that it is one of the most widely-used pieces of 3D game-making software in the world.
The engine offers plenty of features out of the box, but what sets it apart from its competitors is its flexibility. Unity renders fully in real-time, it has a powerful scripting system, a built-in physics engine, a modular asset system to load assets for your games without having to compile them, and it supports almost every multimedia format out there.
Unreal Engine
Unreal Engine is a software suite used for creating 3D games. Game developers choose Unreal Engine 4 because of its powerful real-time rendering, ability to make stunningly realistic visuals, simplified workflows, speed of iteration, ease of use, the flexibility of the toolset, and the scale it provides for building large games.
It is mostly used in the development of video game titles by small studios or individual game developers to Triple-A game developers, but it can also be used in the creation of cinematic experiences, simulators, architectural visualization, and VR applications. After 15 years of its existence, Unreal Engine 4 has become the most popular game engine to create games for iOS, Android, OS X, Windows, and Linux platforms.
Godot
Godot is a free and open-source, MIT-licensed, game engine, available for Windows, Linux, and macOS...It can be used to create 2D or 3D games using its own graphics engine or OpenGL. Godot offers a hierarchical scene system with real-time editing, has bindings to other languages such as C.
It enables game developers to create good quality games with good performance. Godot easily scales to infinity, so you can start working on all your ideas right now.
GameMake: Studio
GameMaker Studio (commonly abbreviated to GMS) is a proprietary cross-platform game engine with its drag-and-drop integrated development environment developed by YoYo Games. It is designed to allow for the easy creation of games, without the need to learn a programming language such as C++ or Java.
The software offers a drag and drop interface for creating the logic, similar to software such as Adobe Flash and web. Originally designed for Microsoft Windows, it now also exports games directly to Linux, iOS, Android, HTML5, Xbox 360, PlayStation 3 consoles, and the Wii U.
CryENGINE
CryENGINE is a game engine for video game studios, made by Crytek. The engine is unique in that it offers developers access to the code base. This means that anyone with experience in programming can change the source code of the engine to suit their needs. Although this does have its disadvantages, it means that many of the engine's features are often improved upon by developers trying to make their games perform better.
CryENGINE is capable of creating visually stunning gaming experiences on console, PC, and mobile platforms. Originally released in 2003 the engine has been the foundation of some very iconic video games that have gone on to become bestsellers.
Amazon Lumberyard
Amazon Lumberyard is a fully-featured, cross-platform, 3D game engine. Because it's cross-platform and built with open-source toolkits, you can create great games in less time. The engine comes packed with features that streamline the development process, making it faster and easier to create high-quality games, apps, and 3D visualizations.
It’s backed by Amazon Web Services and integrates seamlessly with other AWS services like DynamoDB, Elastic Load Balancing, and Twitch. This means blurring the line between development and deployment is simple, and with native support for Android, iOS, console, and PC platforms.
Should you make your game engine?
In most cases, no. If you're a complete beginner, you should probably use an existing engine to develop your game. The starting point for most developers is to make graphics and simple game mechanics using existing libraries/engines. This avoids reinventing the wheel and gets you closer to shipping your game.
An engine usually isn't the end goal of a game developer. If you are going to be a game developer, you should learn to use an existing engine. Making a game engine only teaches you how to make engines, it doesn't teach you to be a game developer. - Rocket Dog
We recommend that you use an existing game engine to learn how to build games. It's faster and easier to learn how to code graphics and simple game mechanics using an existing library (Unity / Unreal) than writing everything from scratch; it also allows you to focus on the fun bits - the actual game - without having to spend precious time building other crucial stuff.
Programming an engine from scratch will give you more flexibility and control over your game, allowing you to optimize your game for maximum performance. And although using commercial engines like Unity and Unreal might seem appealing, in the end, you’ll have to put up with some frustrating bugs and glitches along the way. But there are a lot of pitfalls and potential costs that could quickly exceed the time savings of having a custom tool.
Building your game engine can be a long and challenging process that you are likely not prepared for. If you’re just starting, it is better to use existing engines because it will save you from mistakes. Many game developers start their careers by working with ready-made engines, which makes perfect sense. The biggest advantage to building your engine is that it allows for optimal optimization. Game engines tend to be highly optimized by programmers with years of experience in low-level CPU and 3D rendering. This skill cannot be easily replicated or replaced and it would take a lot of money, time, and effort to do so.