-
-
cacing naga icon
-
The Evolution gallery: eight forms, each unlocking a real ability, with the ones you have not reached kept secret.
-
The Legendary Dragon breathes fire through stone and teleports across the map edge.
-
Evolved! Every new form arrives with a cinematic reveal, new powers and an evolution bonus.
-
The camera freezes on the head, the old form glows white-hot, and its shell shatters into the new one.
-
A title screen that plays like a game: chunky buttons, animated sky and your next form on a spotlight.
-
cacing naga evolutions
Inspiration
"Cacing naga" is Indonesian for "dragon worm". Everyone knows Snake: eat, grow, don't hit yourself. We wanted the growing to mean something. In Cacing Naga you don't just get longer, you evolve, from a small worm to a snake, a cobra, a wyvern and finally a legendary dragon, and every form changes how the game plays.
What it does
- Eight forms, eight powers. Each evolution adds a real ability: faster movement, bonus points, smashing through stone, fire breath, surviving your own tail, teleporting at the map edge.
- Evolution is an event. When you evolve, the game freezes, the camera pushes in on the head, the old form charges up white-hot, the shell shatters into shards, and the new form cools out of the light. The bonus is only paid out after the show.
- Hand-drawn creatures, not emoji. Every form is drawn live by one renderer: rings on the worm, a hood on the cobra, flapping wings, horns, whiskers and a flame mane on the legendary dragon. The gallery portraits and the snake you steer are the same drawing.
- Plays like a game. Chunky 3D buttons, an animated night sky, score pop-ups, screen shake, and swipe, on-screen pad or keyboard controls.
- English and Indonesian.
How we built it
Flutter, with a pure Dart game engine that has no Flutter import, so every rule is unit tested on the plain Dart VM. The renderer draws the snake as one outlined tube along its segments and glides it between grid cells, while collisions stay on the grid. The game keeps its own clock that only runs while the snake moves, so pausing or the evolution cutscene never eats into a power-up.
Monetisation runs on RevenueCat. Four one-time purchases, each a separate entitlement in one offering: Remove Ads, Dragon Skins, Starter Boost (begin a run further up the evolution ladder) and a Revive Pack. The store screen is built from the RevenueCat offering, so prices and products change from the dashboard without an app update. Free players can revive once per run by watching a rewarded ad; the Revive Pack removes the ad.
Challenges we ran into
Making evolution feel big without making the game feel slow. The first version flashed a toast and moved on. Players missed it. The final cutscene holds the board still, and the game's own clock pauses with it, so a 15 second celebration costs the player nothing.
Emoji were the other one. They render differently on every Android skin, and a cobra looked identical to a small snake. Replacing them with one parametric renderer meant each form could finally look like what it can do.
Accomplishments that we're proud of
- A snake that visibly grows up: eight distinct creatures from one renderer.
- An evolution moment people want to see again.
- Every gameplay rule covered by tests on a Flutter-free engine.
What we learned
Progression is only rewarding if the player notices it. Spending the budget on the moment of evolution did more for the game than any new mechanic.
What's next for Cacing Naga
- Online leaderboards.
- More skins through the Dragon Skins pack.
- iOS on the App Store.
Log in or sign up for Devpost to join the conversation.