[AoNW] Shipping a Flutter Game to Multiple Platforms

Written by

in

,

Age of New Worlds is now available outside my development machine. The current release covers iOS, macOS, Windows, Linux, and Android, with a web demo, direct downloads, store versions, and source code available publicly. That was the original technical goal: build one game codebase and make it run on real platforms.

Where To Play

Why Flutter Helped

AoNW is built with Flutter, Flame, Dart, and Serverpod. Flutter made the cross-platform part realistic because most of the game can stay in one project: UI, menus, settings, localization, save/load flow, and platform-independent code. Flame renders the game world, while Dart keeps the rules, AI, protocol models, and shared logic close together. The platforms are not identical, but the mobile, desktop, and web builds stay close enough that the project did not split into five separate games.

For a hobby 4X game, that matters a lot. A strategy game already has enough moving parts: map rendering, turns, saves, AI, multiplayer, UI panels, input, and release builds. Keeping the core code in one place made it possible to focus on the actual game instead of maintaining different versions of the same idea.

I also added gamepad support, because a desktop and Steam / Steam Deck release should not depend only on touch or mouse input. That became its own small architecture task: controller events, button mapping, repeat behavior, UI focus, map cursor movement, and routing input between the HUD, panels, modals, and the game map.

Publishing Is Separate Work

Flutter helped me build one game, but it did not publish the game for me. The build command is only the beginning. iOS needs Xcode archives, signing, App Store metadata, and review. Android needs signed app bundles, Play Console setup, and release tracks. Steam needs desktop builds, depots, store assets, and testing. itch.io needs downloadable builds that are easy to update. The web version needs a static Flutter build, hosting, cache rules, and API configuration.

Most of this work is not gameplay code. It is packaging, screenshots, icons, version numbers, privacy pages, platform forms, and release checks.

The Publishing Model

I chose a simple publishing model. Publishing the game on the main stores was not free: Apple, Google, and Steam all have costs, accounts, review flows, and release requirements. Even before counting development time, publishing there already costs money. That is why the game has a small symbolic price on the App Store, Google Play, and Steam. This is not a business plan with dramatic charts, it is mostly a simple way to acknowledge the platform costs.

itch.io is different. Publishing there can be done for free, so I decided to keep the latest downloadable builds free on itch.io too. The latest builds can also be downloaded directly from aonw.net: macOS, Windows, Linux, and Android APK. There are no ads, no artificial limits, and no in-game tricks. Just the builds. If the paperwork works out, I would also like to add AoNW to GOG later and keep the same idea there: simple access, clean builds, and no strange monetization layer.

About AI Use

AI is one part of the project I still think about carefully. I understand many of the arguments against using AI, especially around art and creative work, and I am not fully comfortable with it either. For AoNW, I treated AI art as a starting point, not as a replacement for actual artists. I am not a graphic designer, and without some help I probably would not be able to make visuals that let people focus on the game instead of immediately bouncing away from it.

The current art is closer to boilerplate or placeholder material. It lets me build, test, and release the game while the project is still small and mostly educational. I also did not want to invest a lot of money at the very beginning of a hobby project. The latest builds are available for free on itch.io and directly from aonw.net, and the store versions have only a symbolic price because publishing there was not free. The goal is not to profit from someone else’s work, the goal is to learn, build the game, have some fun with it, and maybe give other people something fun to try too.

AI also helped me outside the visual side of the project. I used it to organize documentation, review code, check ideas, rewrite rough notes, and keep some of the release work less chaotic. It also helped me learn Flutter faster, which was one of the main goals of the project. Without AI as a supporting tool, AoNW would probably have moved much slower, but I still treat it as a tool, not as an autopilot. Current models can be useful, but they still get things wrong, miss context, and sometimes sound very sure about something that needs checking. For me, the point is not “AI does the work”, the point is that it helps me move faster while I still make the decisions, test the result, and put the pieces together.

Long term, I would like AoNW to grow in a more community-driven way. That is why I kept systems and templates in place so the current graphics can be replaced later with dedicated art made specifically for the game.

What Happens Next

AoNW will stay a hobby project. I will keep improving it in my free time, with less intensity than during the release push. There are still a few things to improve: balance, game AI, multiplayer polish, performance, onboarding, controller polish, and general UX.

But the main goal has been reached. I wanted to build and release a small 4X strategy game with Flutter across mobile, desktop, and web. That now exists. It is not perfect, and it is still a hobby game, but it is public, installable, and running on iOS, macOS, Windows, Linux, and Android. The time spent on the project was worth it for the experience alone. Now I can move from “can I ship this?” to the calmer question: what should I improve next?

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *