Inspiration
Prism Defense brings the uncertainty of random-merge tower defense to a solo mobile game that can be played offline without creating an account. The central idea is simple: the player cannot choose the tower they draw, but can decide how to make the resulting board work. The goal is to keep that loop approachable while leaving room for decisions about positioning, targeting, spending, and risk.
What It Does
Spend gold to draw a random tower into a random slot, then drag matching towers together to increase their tier. Every merge rerolls the tower type, so an upgrade can also change the role your defense needs to fill. Five tower types across seven tiers provide beams, splash damage, slowing effects, long-range shots, and chain lightning.
Move towers to improve coverage, sell pieces that no longer fit, and choose targeting strategies for each tower type. Call another wave early for extra gold if your board can handle the pressure. Bosses arrive every fifth wave, and defeating one offers a choice of three reward towers. Healers, splitters, and shields introduce different threats as the run progresses.
Daily Challenge gives every player the same UTC-day seed, with a separate local record. An interactive practice board introduces the controls, while tower details explain combat roles during play. The game supports English and Korean, local records, achievements, and collectible cosmetic palettes.
Prism Premium is an optional lifetime purchase that unlocks all six existing palettes. It does not sell stronger towers or change combat balance. Players can also unlock palettes with Prisms earned through play.
How It Was Built
The game is built in Flutter and Dart without a separate game engine. Its seeded simulation runs in pure Dart, separate from the Flutter interface, so combat and the draw-and-merge economy can be tested without rendering widgets. The game view uses a CustomPainter to draw vector towers, enemies, and combat effects.
RevenueCat's Flutter SDK handles the lifetime purchase and restoration flow on iOS and Android. The app reads the current offering's lifetime package and the active premium entitlement to determine access, and displays the store's localized price. Palette access follows the entitlement rather than adding a purchase to the local earned-Prism balance. The base game remains playable when purchases are unavailable.
Challenges
Random outcomes need to leave the player meaningful decisions. Prism Defense pairs random draws and merge rerolls with tower movement, targeting, selling, early waves, and boss reward choices.
A full board also needs a usable reward flow. The boss reward draft sits in a bottom bar and waits while the player merges or sells a tower to free a slot.
Premium access must stay separate from earned progression. The RevenueCat entitlement unlocks palettes without rewriting the local Prism ledger, while the existing earning path remains available.
Accomplishments
Prism Defense is publicly listed on the App Store and has a recorded production release on Google Play. It combines a playable solo defense loop, vector rendering, a daily seeded challenge, bilingual UI, and an optional RevenueCat lifetime purchase in one Flutter application.
What Was Learned
The implementation separates three concerns: deterministic gameplay, the rendered interface, and store-backed access. That separation makes it possible to inspect game rules independently while keeping purchase and restoration behavior tied to RevenueCat customer information. It also makes clear that configuration and unit tests cannot replace a real store redemption check.
What's Next
The next product question is whether players return for another run. Return rate is the intended metric, but no measured cohort result is available yet. An online leaderboard and cloud save remain open decisions.
Log in or sign up for Devpost to join the conversation.