By the MobileMerit team · Updated · 18 min read · Versions covered: Godot 4.7, Unity 6, Flutter 3.x with Flame

Quick answer

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.

Why trust this guide: it’s written by the MobileMerit team, who build Android apps and games with Godot and Flutter and publish them on Google Play. Every requirement here was checked against official documentation on 13 November 2026, including Unity’s, Godot’s and Flutter’s own documentation, and we update this page when the rules change.

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

Godot vs Unity vs Flutter comparison for Android gamesGodot 4.7: MIT licence, GDScript or C#, strong 2D, good casual 3D, plugins for AdMob and Play Billing, best for indie 2D and casual 3D. Unity 6: free up to $200K then Pro at $2,310 per seat per year, strongest 3D, mature ad SDKs, best for 3D and ad-driven games. Flutter with Flame: BSD licence, Dart, good 2D, no 3D, official Google ads and purchase plugins, best for word, quiz, board and card games. Godot vs Unity vs Flutter at a glance (Android, 2026)Licence and pricing from official pages; checked November 2026Godot 4.7LicenceMIT, free, no royaltiesLanguageGDScript, C#2DStrong3DGood for casual / mid-sizeAds / IAPPlugins (AdMob, Play Billing)Best forIndie 2D and casual 3DUnity 6LicenceFree up to $200K, then ProPro price$2,310 per seat / year2DStrong3DStrongest of the threeAds / IAPMature SDKs, mediationBest for3D, ad-driven, larger teamsFlutter + FlameLicenceBSD, freeLanguageDart2DGood (Flame)3DNot supported by FlameAds / IAPOfficial Google pluginsBest forWord, quiz, board, cardRatings are MobileMerit’s assessment for Android game projects. · MobileMerit.com
Figure 1. The three options side by side for Android game development in 2026.
FactorGodot 4.7Unity 6Flutter + Flame
LicenceMIT, free, no royaltiesFree (Personal) up to $200K revenue and funding; Pro aboveBSD, free, no royalties
Main languageGDScript (Python-like), C#C#Dart
2D gamesStrong: dedicated 2D engineStrongGood with Flame; excellent for UI-driven games
3D gamesGood for casual and mid-size 3DStrongest of the threeNot supported by Flame
Android exportAPK/AAB; Gradle builds; can build on an Android device with GABEAPK/AAB via GradleAPK/AAB via Gradle
Ads (AdMob)PluginGoogle Mobile Ads Unity plugin, Unity’s own ad network and mediationGoogle’s official google_mobile_ads plugin
In-app purchasesGoogle Play Billing plugin, maintained by the Godot FoundationUnity IAPOfficial in_app_purchase plugin
Asset marketplaceNew Asset Store in 4.7Largest (Unity Asset Store)pub.dev packages
Best forIndie 2D, casual 3D, zero licence riskAmbitious 3D, ad-driven and live-ops games, larger teamsWord, quiz, board, card and puzzle games; teams who already use Flutter

Data from the games we shipped

EDITOR NOTE (delete this box before publishing): fill every highlighted cell with real numbers from Play Console for your live apps. Use the “Where to find each number” table below. Delete any row for an app that isn’t live, and if you haven’t shipped a Unity game, delete that row and keep the sentence that says so. Don’t publish with “fill in” cells left.

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.

GameGenreEngine & versionDownload sizeInstall sizeCrash rateANR rateTime to v1.0
[Godot 2D game name]e.g. bubble shooterGodot 4.xfill infill infill infill infill in
[Godot 3D game name]e.g. 3D parking puzzleGodot 4.xfill infill infill infill infill in
[Godot puzzle/board game]e.g. board gamesGodot 4.xfill infill infill infill infill in
[Flutter app or game name]e.g. word / quizFlutter 3.xfill infill infill infill infill in
[Unity game, if any]genreUnity 6fill infill infill infill infill 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)

Where to find Android game performance metrics in Play ConsoleApp size page for download and install size; Android vitals for crash and ANR rate; startup time from Android vitals or adb; pre-launch report for device problems. Where to find the numbers that actually matterCompare engines on your own shipped builds, not on empty projects1Download & install sizePlay Console →App size page2Crash & ANR ratePlay Console → Android vitals→ Overview (user-perceived)3Startup timeAndroid vitals → Startup,or adb shell am start -W4Device problemsPre-launch report→ Stability, PerformanceThresholds Google uses for bad behaviour: user-perceived crash rate 1.09% and ANR rate 0.47% (overall).MobileMerit.com
Figure 2. The Play Console reports we use to compare engines.
MetricWhere to find itWhy it matters
Download and install sizePlay Console → Monitor and improve → App sizeLarger downloads lose installs on mobile data and low-storage phones.
User-perceived crash ratePlay Console → Android vitals → OverviewGoogle treats 1.09% or more as bad behaviour, which can reduce your visibility on Google Play.
User-perceived ANR ratePlay Console → Android vitals → OverviewBad-behaviour threshold is 0.47%. Long loading on the main thread is a common cause in games.
Startup timeAndroid vitals startup metrics, or adb shell am start -W <package>/<activity>Slow cold starts hurt first impressions and day-1 retention.
Device-specific problemsPlay Console → Pre-launch reportCatches 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

EngineLicenceWhat you payExample: 2 developers for 3 years
GodotMITNothing. No royalties or revenue share.$0
Flutter + FlameBSD / MITNothing.$0
Unity PersonalProprietaryFree for up to $200,000 in revenue and funding.$0 while under the threshold
Unity ProProprietary$2,310 per seat per year (from 12 January 2026), required above $200K.$13,860
Game engine licence cost over three yearsGodot, Flutter and Unity Personal cost $0. Unity Pro costs $6,930 for one seat, $13,860 for two seats and $34,650 for five seats over three years. Engine licence cost over 3 yearsUnity Pro at $2,310 per seat per year (required above $200K revenue and funding)$0Godot$0Flutter$0Unity Personal$6,930Unity Pro, 1 seat$13,860Unity Pro, 2 seats$34,650Unity Pro, 5 seatsExcludes taxes, add-ons and plugins. Prices checked 13 Nov 2026. · MobileMerit.com
Figure 3. Licence cost over three years. Godot, Flutter and Unity Personal are free.

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

FeatureGodotUnityFlutter
AdMobAdMob plugin (check it supports your Godot version)Google Mobile Ads Unity plugingoogle_mobile_ads (official, by Google)
Ad mediationVia AdMob mediation where the plugin supports itMost mature: AdMob mediation, Unity LevelPlay and othersAdMob mediation through the official plugin
Google Play BillingGodot Google Play Billing plugin, maintained by the Godot FoundationUnity IAPin_app_purchase (official)
Play Games ServicesPlugin maintained by the Godot FoundationGoogle Play Games plugin for UnityCommunity packages
Consent (GDPR / UMP)Through the AdMob pluginThrough the Google Mobile Ads pluginBuilt 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

AspectGodotUnityFlutter
Editor downloadSmall, single executableLarge (Unity Hub + editor + Android modules)Flutter SDK + Android Studio or VS Code
Iteration speedVery fast scene runsSlower on large projects (script recompiles)Hot reload in seconds
Learning curveEasiest for beginnersModerate; many ways to do the same thingEasy if you already know Flutter
Build on a phoneYes, with GABE in Godot 4.7NoNo
Hiring and tutorialsGrowing fastLargestLarge 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:

Renderer settings for low-end Android devices in Godot, Unity and FlutterGodot: Mobile renderer by default, Compatibility renderer for the widest range of low-end phones. Unity: URP with Vulkan or OpenGL ES; test on real devices. Flutter: Impeller is default on Android 10 and newer with Vulkan; older phones fall back to OpenGL. Renderer settings for low-end Android phonesWhat each engine uses, and the setting to check firstGodotMobile renderer: default,Vulkan devicesCompatibility (OpenGL):widest range, low-end phonesUnityURP for mobileVulkan or OpenGL ESTest on real devices:no Android emulator supportFlutterImpeller: default onAndroid 10+ (Vulkan)Older or no-Vulkan phonesfall back to OpenGLSources: Godot, Unity and Flutter documentation. · MobileMerit.com
Figure 4. Renderer choices that matter most on low-end Android phones.

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:

RequirementGodotUnityFlutter
16 KB memory page supportGodot 4.5.1 or later6000.0.38f1+ (or 2022.3.56f1+ on 2022 LTS)Current stable Flutter, plus updated plugins
Target API 36Set Target SDK 36 in the Android export preset / Gradle buildUnity 6000.0.46f1+ supports API 36Set targetSdk 36 in Gradle
App Bundle (AAB)Gradle build exportBuild App Bundleflutter build appbundle
Native pluginsUpdate AdMob / billing pluginsUpdate every .so pluginUpdate plugins with native code
Developer verificationRegister 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

Which game engine to pick for an Android gameTurn-based UI games: Flutter, or Godot. 2D real-time games: Godot, or Flutter with Flame. Casual 3D: Godot, or Unity. Ambitious 3D or live-ops: Unity, or Godot. Which engine should you pick for your Android game?What are you building?Turn-based UI gameword, quiz, board, cardPickFlutterAlso fine: Godot2D real-timepuzzle, shooter, platformerPickGodotAlso fine: Flutter + FlameCasual 3Dstack, runner, parkingPickGodotAlso fine: UnityAmbitious 3D / live-opsheavy ads, mediation, teamPickUnityAlso fine: GodotAlready know one of them well? That usually beats switching engines for a small game.MobileMerit.com
Figure 5. A quick way to choose an engine for your next Android game.
Game typeBest pickWhy
Word, quiz, triviaFlutterText, lists and animations are Flutter’s strength; shares code and skills with your apps.
Board and card gamesFlutter or GodotBoth handle turn-based logic well; Godot if you want richer effects or 3D boards.
Block, match-3, bubble shooterGodotDedicated 2D engine, particles and physics with no licence cost.
Endless runner, platformerGodot (2D) or Flutter + FlameReal-time loop, collisions and tilemaps.
Casual 3D (helix, stack, parking)Godot or UnityGodot for zero cost and small teams; Unity if you need its ad and analytics stack.
Racing, larger 3D worldsUnity (or Godot for arcade style)Unity’s 3D tooling and asset store save time on bigger scopes.
Hyper-casual with heavy ad mediationUnityAd networks and attribution SDKs usually support Unity first.
Which game engine suits which Android game genreWord and quiz games: Flutter best. Board and card: Godot and Flutter best. Block, match-3 and bubble: Godot and Unity best. 2D runner: Godot and Unity best. Casual 3D: Godot and Unity best; Flutter not suitable. Larger 3D and racing: Unity best. Hyper-casual with heavy ads: Unity best. Genre fit: which engine suits which Android gameGodotUnityFlutterWord / quiz / triviaGoodGoodBest fitBoard & cardBest fitGoodBest fitBlock / match-3 / bubbleBest fitBest fitGoodRunner / platformer (2D)Best fitBest fitGoodCasual 3D (helix, parking)Best fitBest fitNot suitableRacing / larger 3DGoodBest fitNot suitableHyper-casual, heavy adsGoodBest fitPossibleMobileMerit’s assessment for small teams in 2026. Flame (Flutter) is 2D only. · MobileMerit.com
Figure 6. Genre fit at a glance: best fit, good, possible or not suitable.

Switching engines: what carries over

Carries overNeeds rebuilding
Art, audio, fonts and level data (if stored as plain files)All game code, scenes and prefabs
Game design, balancing spreadsheets and store assetsShaders, 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

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.com

Update 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.

Engine versions, prices and Google Play requirements were checked on 13 November 2026. They change often; check the resources above before you commit to an engine.