What you are building decides what you pick
Ask three questions in order. Where do players get it — a link, an app store, or a desktop storefront? Is it 2D or 3D? And what language do you already write comfortably? Those three answers usually leave exactly one sensible option, and the remaining debate is just preference.
For a first MVP, the web wins more often than people expect. There is nothing to install, nothing to review, and you can send the link to a friend within the hour.
Web
A link is the shortest distance between your game and a player. No install, no store review, works on every device with a browser.
Babylon.js
A full 3D engine that runs in the browser — physics, animation, lighting, and glTF model loading, all in TypeScript. Strong 2D support too, and the debug inspector is excellent for learning.
Mobile apps
Store distribution, push notifications, and in-app purchases — at the cost of review queues and platform rules.
Unity
The default choice for mobile games, 2D or 3D. Huge asset store, huge community, and almost every tutorial you find will be written for it. Heavier than you need for something small, and the C# ecosystem is its own world to learn.
Flutter Flame
A 2D game engine built on Flutter. If you already write Dart and Flutter, this is the shortest path to a mobile game — same language, same tooling, same widgets around the game canvas. Note clearly: Flame is 2D. Flutter's 3D story is experimental and not something to plan a game around.
Desktop
Bigger screens, real input devices, and Steam. This is where longer-session games live.
Unity
The same engine as mobile, exporting to Windows, macOS and Linux from one project. If you learn it once you can ship almost anywhere, which is the main reason it is so widely taught.
Unreal Engine
The choice when visual fidelity is the point — lighting, materials, and large 3D worlds. Blueprints let you build logic without writing C++, but the engine is large and expects a machine to match. Overkill for a first small game, exactly right for a graphically ambitious one.
Two things people get wrong
Flame is 2D only
Because it appears in the same sentence as Unity and Unreal, people assume it is a comparable general-purpose engine. It is not. If your game is 3D, Flame is not on the list — decide this before you write any code, not after.
One engine, finished, beats three engines tried
Switching engines resets your progress to near zero every time, because most of what you learned was the tool, not the game. Choose once, badly if necessary, and finish something.
These are options to learn from, not our stack
Babylon.js, Unity, Unreal and Flame appear here as things worth knowing about, not as technologies PES has adopted.