For most indie Android games in 2026, pick Godot for 2D and casual 3D (free, MIT licence, no royalties), Unity for ambitious 3D or ad-driven games that need mature mediation and a big team ecosystem (free up to $200K revenue, then $2,310 per seat per year), and Flutter for turn-based, UI-heavy games such as word, quiz, board and card games, especially if you already build Flutter apps. All three can ship Google Play-compliant builds today; the real differences show up in build size, crash rate and how fast you can iterate, which is why we compare them on games we have actually shipped.
Key takeaways
- Cost: Godot and Flutter are free forever. Unity is free until $200K in revenue and funding, then Pro is required.
- 3D: Unity is the strongest; Godot handles casual 3D well; Flutter’s game engine, Flame, is 2D only.
- Turn-based games: Flutter’s widget system makes menus, boards, lists and text-heavy games quick to build.
- Android momentum: Godot 4.7 can export and publish from an Android device, and the Godot Foundation now maintains the Play Billing and Play Games plugins.
- Compliance: current versions of all three support Google Play’s 16 KB page size requirement; old engine versions don’t.
- Measure what ships: compare download size, crash rate and ANR rate from Play Console, not empty-project benchmarks.
Godot vs Unity vs Flutter at a glance
| Factor | Godot 4.7 | Unity 6 | Flutter + Flame |
|---|---|---|---|
| Licence | MIT, free, no royalties | Free (Personal) up to $200K revenue and funding; Pro above | BSD, free, no royalties |
| Main language | GDScript (Python-like), C# | C# | Dart |
| 2D games | Strong: dedicated 2D engine | Strong | Good with Flame; excellent for UI-driven games |
| 3D games | Good for casual and mid-size 3D | Strongest of the three | Not supported by Flame |
| Android export | APK/AAB; Gradle builds; can build on an Android device with GABE | APK/AAB via Gradle | APK/AAB via Gradle |
| Ads (AdMob) | Plugin | Google Mobile Ads Unity plugin, Unity’s own ad network and mediation | Google’s official google_mobile_ads plugin |
| In-app purchases | Google Play Billing plugin, maintained by the Godot Foundation | Unity IAP | Official in_app_purchase plugin |
| Asset marketplace | New Asset Store in 4.7 | Largest (Unity Asset Store) | pub.dev packages |
| Best for | Indie 2D, casual 3D, zero licence risk | Ambitious 3D, ad-driven and live-ops games, larger teams | Word, quiz, board, card and puzzle games; teams who already use Flutter |
Data from the games we shipped
Benchmarks of empty projects say little about real games, because assets usually make up most of the download. So here are numbers from our own Android releases, taken from Google Play Console.
| Game | Genre | Engine & version | Download size | Install size | Crash rate | ANR rate | Time to v1.0 |
|---|---|---|---|---|---|---|---|
| [Godot 2D game name] | e.g. bubble shooter | Godot 4.x | fill in | fill in | fill in | fill in | fill in |
| [Godot 3D game name] | e.g. 3D parking puzzle | Godot 4.x | fill in | fill in | fill in | fill in | fill in |
| [Godot puzzle/board game] | e.g. board games | Godot 4.x | fill in | fill in | fill in | fill in | fill in |
| [Flutter app or game name] | e.g. word / quiz | Flutter 3.x | fill in | fill in | fill in | fill in | fill in |
| [Unity game, if any] | genre | Unity 6 | fill in | fill in | fill in | fill in | fill in |
[Optional: “We haven’t shipped a Unity game ourselves, so Unity figures in this article come from Unity’s documentation and published studio reports.” Keep this sentence if it’s true.]
What our numbers showed
- [Lesson 1, e.g. which engine produced the smallest download for a similar game and why]
- [Lesson 2, e.g. crash/ANR differences you saw on low-end devices and what fixed them]
- [Lesson 3, e.g. development speed: how long v1.0 took in each engine]
Where to find each number (so you can compare your own games)
| Metric | Where to find it | Why it matters |
|---|---|---|
| Download and install size | Play Console → Monitor and improve → App size | Larger downloads lose installs on mobile data and low-storage phones. |
| User-perceived crash rate | Play Console → Android vitals → Overview | Google treats 1.09% or more as bad behaviour, which can reduce your visibility on Google Play. |
| User-perceived ANR rate | Play Console → Android vitals → Overview | Bad-behaviour threshold is 0.47%. Long loading on the main thread is a common cause in games. |
| Startup time | Android vitals startup metrics, or adb shell am start -W <package>/<activity> | Slow cold starts hurt first impressions and day-1 retention. |
| Device-specific problems | Play Console → Pre-launch report | Catches GPU and driver issues on devices you don’t own. |
See Google’s Android vitals documentation for how these metrics are calculated.
Cost: licences and pricing
| Engine | Licence | What you pay | Example: 2 developers for 3 years |
|---|---|---|---|
| Godot | MIT | Nothing. No royalties or revenue share. | $0 |
| Flutter + Flame | BSD / MIT | Nothing. | $0 |
| Unity Personal | Proprietary | Free for up to $200,000 in revenue and funding. | $0 while under the threshold |
| Unity Pro | Proprietary | $2,310 per seat per year (from 12 January 2026), required above $200K. | $13,860 |
Unity raised Pro and Enterprise prices by 5% from 12 January 2026, so Pro rose to $2,310 per seat per year; see Unity’s pricing updates. Unity cancelled its proposed Runtime Fee in 2024, so there’s no per-install fee. Godot and Flutter are free open-source projects.
2D and 3D capability
Godot
Godot has a dedicated 2D engine (pixel-perfect coordinates, 2D physics, tilemaps) rather than a 3D engine viewed from the side, which makes 2D puzzle, shooter and platformer games straightforward. Its 3D renderer is very capable for casual 3D such as helix, stack, runner and parking-puzzle games. On mobile, keep 3D scenes light and test on low-end GPUs early. Godot 4.7 (June 2026) added HDR output, rectangular area lights and a new Asset Store; see the Godot 4.7 release notes.
Unity
Unity offers the most mature 3D pipeline for mobile (URP), the biggest asset marketplace and the largest pool of tutorials and hires. Unity says its engine powers the majority of top-grossing mobile games, which is why ad networks, analytics and attribution SDKs usually support Unity first.
Flutter + Flame
Flutter shines for turn-based games where the “game” is mostly UI: boards, cards, word grids, quizzes and menus. For 2D real-time games, the Flame engine adds a game loop, collision detection and sprite handling. Google’s Flutter Casual Games Toolkit provides templates for both kinds. Flame is 2D only, so Flutter isn’t a choice for 3D games.
Ads, in-app purchases and Play services
| Feature | Godot | Unity | Flutter |
|---|---|---|---|
| AdMob | AdMob plugin (check it supports your Godot version) | Google Mobile Ads Unity plugin | google_mobile_ads (official, by Google) |
| Ad mediation | Via AdMob mediation where the plugin supports it | Most mature: AdMob mediation, Unity LevelPlay and others | AdMob mediation through the official plugin |
| Google Play Billing | Godot Google Play Billing plugin, maintained by the Godot Foundation | Unity IAP | in_app_purchase (official) |
| Play Games Services | Plugin maintained by the Godot Foundation | Google Play Games plugin for Unity | Community packages |
| Consent (GDPR / UMP) | Through the AdMob plugin | Through the Google Mobile Ads plugin | Built into google_mobile_ads |
The big change for Godot came in April 2026, when the Godot Foundation said it would start maintaining the core Google Play Billing, Play Games Services and StoreKit 2 plugins itself; see the Godot mobile update. If your game earns mainly from ads with heavy mediation and A/B testing, Unity’s ecosystem is still the safest choice.
Build size and performance
Empty-project comparisons are misleading, but they show each engine’s baseline:
- Flutter adds only a few megabytes for its engine, according to Google’s Flutter team, so simple Flutter games are usually the smallest.
- Godot and Unity ship a larger engine runtime. Both can be trimmed: Godot with custom export templates that remove unused modules, and Unity with code stripping and splitting assets into Play Asset Delivery packs.
- In shipped games, assets dominate. Compress textures, use OGG audio, and check your own download sizes in Play Console.
Stability on Android: Godot’s mobile reliability improved a lot in 2026. The Godot Foundation reported that GPU-driver fixes in Godot 4.5.2 and 4.6 brought two launched games’ crash rates down from about 4% to under 1%. Use at least those versions for any game you publish. Unity has the longest track record on low-end Android hardware. Note that Unity’s documentation says it doesn’t support Android emulators, so test on real devices.
Workflow and learning curve
| Aspect | Godot | Unity | Flutter |
|---|---|---|---|
| Editor download | Small, single executable | Large (Unity Hub + editor + Android modules) | Flutter SDK + Android Studio or VS Code |
| Iteration speed | Very fast scene runs | Slower on large projects (script recompiles) | Hot reload in seconds |
| Learning curve | Easiest for beginners | Moderate; many ways to do the same thing | Easy if you already know Flutter |
| Build on a phone | Yes, with GABE in Godot 4.7 | No | No |
| Hiring and tutorials | Growing fast | Largest | Large for apps, smaller for games |
Performance tips for low-end Android phones
Many Android players use budget phones, so test on one early. These are the settings to check first in each engine:
Godot
- Pick the renderer deliberately. The Compatibility renderer supports the widest range of hardware, including older and low-end phones; the Mobile renderer is the default on mobile and suits newer Vulkan devices.
- Use VRAM-compressed textures, keep real-time lights and shadows to a minimum, and bake lighting where you can.
- Profile on a real phone with Godot’s remote debugger and monitors, not just in the editor.
Unity
- Use the Universal Render Pipeline (URP) with a mobile quality profile.
- Build with IL2CPP for 64-bit (ARM64), use ASTC texture compression, and move large assets to Play Asset Delivery.
- Test on real devices; Unity’s documentation says it doesn’t support Android emulators.
Flutter + Flame
- Impeller is the default renderer on Android 10 (API 29) and newer; older phones and phones without suitable Vulkan support fall back to OpenGL. Test on at least one such budget phone.
- Profile in profile mode with Flutter DevTools, and keep per-frame work inside Flame components instead of rebuilding widgets every frame.
- Pre-load images and audio during a loading screen to avoid stutter on first use.
Google Play compliance checklist per engine
Whatever engine you use, your game must meet Google Play’s current technical rules. These are the versions to be on:
| Requirement | Godot | Unity | Flutter |
|---|---|---|---|
| 16 KB memory page support | Godot 4.5.1 or later | 6000.0.38f1+ (or 2022.3.56f1+ on 2022 LTS) | Current stable Flutter, plus updated plugins |
| Target API 36 | Set Target SDK 36 in the Android export preset / Gradle build | Unity 6000.0.46f1+ supports API 36 | Set targetSdk 36 in Gradle |
| App Bundle (AAB) | Gradle build export | Build App Bundle | flutter build appbundle |
| Native plugins | Update AdMob / billing plugins | Update every .so plugin | Update plugins with native code |
| Developer verification | Register every package name with a verified developer account. See our Android developer verification guide. | ||
Sources: Android’s 16 KB page size guide and Unity’s Android requirements. New personal Play accounts also need a 12-tester closed test; see our 12-tester playbook.
Which engine for which game
| Game type | Best pick | Why |
|---|---|---|
| Word, quiz, trivia | Flutter | Text, lists and animations are Flutter’s strength; shares code and skills with your apps. |
| Board and card games | Flutter or Godot | Both handle turn-based logic well; Godot if you want richer effects or 3D boards. |
| Block, match-3, bubble shooter | Godot | Dedicated 2D engine, particles and physics with no licence cost. |
| Endless runner, platformer | Godot (2D) or Flutter + Flame | Real-time loop, collisions and tilemaps. |
| Casual 3D (helix, stack, parking) | Godot or Unity | Godot for zero cost and small teams; Unity if you need its ad and analytics stack. |
| Racing, larger 3D worlds | Unity (or Godot for arcade style) | Unity’s 3D tooling and asset store save time on bigger scopes. |
| Hyper-casual with heavy ad mediation | Unity | Ad networks and attribution SDKs usually support Unity first. |
Switching engines: what carries over
| Carries over | Needs rebuilding |
|---|---|
| Art, audio, fonts and level data (if stored as plain files) | All game code, scenes and prefabs |
| Game design, balancing spreadsheets and store assets | Shaders, particles and physics tuning |
| Your Google Play listing, reviews and installs (same package name and signing key) | Ad, purchase and analytics integrations |
| Privacy policy and data safety answers (update if SDKs change) | Player save data, unless you write a migration |
Switching is usually worth it only for a new game or a major version. If you do switch an existing game, keep the same package name and signing key and raise the version code, so players simply get an update.
Glossary
- GDScript
- Godot’s built-in scripting language, similar to Python.
- Flame
- A free, open-source 2D game engine built on Flutter, adding a game loop, collisions and sprites.
- URP
- Unity’s Universal Render Pipeline, the usual choice for mobile games.
- IL2CPP
- Unity’s scripting backend that compiles C# to native code; needed for 64-bit Android builds.
- Impeller
- Flutter’s rendering engine, the default on Android 10 and newer.
- Compatibility renderer
- Godot’s OpenGL-based renderer with the widest hardware support, suited to older and low-end phones.
- AAB
- Android App Bundle, the publishing format Google Play requires for new apps.
- User-perceived crash rate
- The share of daily active users who saw a crash while using the app. Google’s bad-behaviour threshold is 1.09%.
- ANR
- Application Not Responding: the app froze for several seconds. Google’s bad-behaviour threshold for user-perceived ANRs is 0.47%.
- Play Asset Delivery
- A Google Play feature for delivering large game assets separately from the main download.
Frequently asked questions
Is Godot good for Android games in 2026?
Yes, especially for 2D and casual 3D games. Godot is free under the MIT licence with no royalties, Godot 4.7 can export and publish Android builds, and the Godot Foundation now maintains the Google Play Billing and Play Games Services plugins. For very large 3D games or ad-mediation-heavy live-ops titles, Unity’s ecosystem is still deeper.
Is Unity still free for small developers?
Yes. Unity Personal is free for individuals and companies with up to $200,000 in revenue and funding. Above that, Unity Pro is required; since 12 January 2026 it costs $2,310 per seat per year.
Can you make games with Flutter?
Yes. Flutter is a strong choice for turn-based games such as word, quiz, board and card games, and the Flame engine adds a game loop, collision detection and sprites for 2D real-time games. Flame is a 2D engine, so Flutter isn’t the right tool for 3D games.
Which engine makes the smallest Android game?
Usually Flutter for simple games, because the Flutter engine adds only a few megabytes. Godot and Unity carry a larger engine runtime. In real games, assets (textures, audio, 3D models) dominate the size, so compare the download size of your own builds in Play Console rather than empty projects.
Which engine is best for a hyper-casual or casual 3D game?
Unity remains the most common choice for ad-driven 3D games because of its mature ads, mediation and analytics SDKs. Godot is now a practical alternative for casual 3D such as stack, runner or parking puzzles, with no licence fees.
Do Godot, Unity and Flutter support Google Play’s 16 KB page size requirement?
Yes, in current versions. Use Godot 4.5.1 or later, Unity 6000.0.38f1 or later (or 2022.3.56f1+ on Unity 2022 LTS), and a current Flutter stable release. Also update every plugin that ships native libraries, such as ads and analytics SDKs.
Can I add AdMob ads and in-app purchases in all three?
Yes. Flutter has Google’s official google_mobile_ads and in_app_purchase plugins. Unity has the Google Mobile Ads Unity plugin, Unity’s own ad network and Unity IAP. Godot uses plugins: the Godot Foundation maintains the Google Play Billing plugin, and AdMob is available through Godot plugins.
Is GDScript easier than C# or Dart?
For most beginners, yes. GDScript is a Python-like language built into the Godot editor. Godot also supports C#. Unity uses C#, and Flutter uses Dart, which is easy to pick up if you already build Flutter apps.
Should I switch engines for my next game?
Only if your current engine can’t do what the game needs (for example, 3D in Flutter) or its costs no longer make sense. For small games, the time saved by using an engine you already know usually matters more than the engine’s feature list.
Can I switch engines without losing my Google Play listing?
Yes. Your listing, reviews and installs belong to the package name. If the new build uses the same package name and signing key (or the same Play App Signing setup) and a higher version code, Google Play treats it as a normal update. Save files and settings won’t carry over automatically unless you migrate them.
Which renderer should I use for low-end Android phones?
In Godot, the Compatibility renderer supports the widest range of hardware, including older and low-end phones; the Mobile renderer is the default on mobile and suits newer Vulkan devices. In Flutter, Impeller is the default on Android 10 and newer and falls back to OpenGL on older devices. In Unity, use URP and test on real low-end devices.
How should I compare engine performance fairly?
Compare shipped builds of similar games using Play Console data: download and install size on the App size page, user-perceived crash and ANR rates in Android vitals, startup time, and the pre-launch report. Google’s bad-behaviour thresholds are a 1.09% user-perceived crash rate and a 0.47% user-perceived ANR rate.
Resources
- Godot 4.7 release notes
- Godot Mobile update, April 2026 (Godot Foundation)
- Unity subscription plans and pricing updates
- Unity Android requirements and compatibility
- Flutter Casual Games Toolkit
- Flutter games and the Flame engine
- Support 16 KB page sizes (Android Developers)
- Android vitals (Android Developers)
- Impeller rendering engine (Flutter docs)
- Overview of renderers (Godot docs)
Related MobileMerit guides: Google Play 12-tester playbook · Android developer verification · Game development on Godot using AI
Planning an Android game?
MobileMerit builds Android games in Godot and apps in Flutter, and publishes them on Google Play. We can help you choose the right engine, build your game and get it through Google Play’s testing and compliance steps.
Talk to MobileMerit.comUpdate log
- : Expanded with cost chart, genre-fit matrix, low-end renderer guide, switching-engines section, glossary and two new FAQs; versions and prices re-checked.