Inspiration

Purrity was born from a mix of intense personal emotions and real-world events. Shortly before starting development, I went through a painful breakup that left me devastated. My partner struggled with a deep, paralyzing fear of love and intimacy (Philophobia). Around that exact time, my country was hit by its first major earthquake in many years.

Those two moments clicked in my head. What if a massive earthquake tore the earth open, releasing physical monsters created from our deepest emotional traumas and phobias? The protagonist, an enduring soul represented by a luminous Vessel Heart, has to dive into this dark abyss to face these fears and survive.

As a lifelong gamer, I have always wanted to build a game that feels frantic and intense, but keeps its core mechanics simple and responsive on a mobile screen. Purrity is my take on that vision.

What it does

Purrity is a fast-paced 2D action survival game built specifically for mobile devices.

In this demo, players jump into a 10-minute survival run in a dark, high-contrast cavern:

  • You control the Vessel Heart using responsive virtual touch controls, dodging hordes of aggressive shadow creatures.
  • As you defeat enemies, you collect resources and open chests to upgrade your arsenal on the fly.
  • If you can survive the escalating pressure for 10 minutes, you face off against the sector boss, the Weaver of Shadows (Arachnophobia), in a climactic multi-phase battle.
  • The game features built-in support for RevenueCat, powering optional cosmetic VIP access and in-game shop items designed to support development without being intrusive.

How we built it

We built Purrity using Godot 4.7 with GDScript.

  • The gameplay follows a decoupled component system, separating health, combat controllers, and enemy behaviors into clean, reusable modules.
  • We built custom 2D shaders for the dark, minimalist art style, creating a high-contrast world where the white vessel stands out clearly against dark shadows.
  • For mobile controls, we designed custom floating virtual joysticks and touch buttons with multi-touch isolation so movement and combat never interfere with each other.
  • We switched our mobile renderer to OpenGL ES 3 to reduce GPU overhead and guarantee smooth frame pacing across different Android devices.

Challenges we ran into

The biggest hurdle by far was maintaining a rock-solid 60 FPS on mobile phones. Rendering dozens of enemies, projectiles, screen shake, and visual shaders on mobile hardware easily causes frame drops if not handled carefully.

To solve this, we implemented zero-allocation object pooling for projectiles and drops so the garbage collector never stutters during intense moments. We also optimized collision layers and texture compression settings until the game ran smoothly on Android.

Accomplishments that we're proud of

  • The touch controls feel great. Making a fast-paced survival game feel precise on a phone screen without physical buttons was a big goal, and the current virtual joystick and dash setup feels intuitive.
  • The minimalist visual style and atmosphere. The contrast between the fragile white heart, the dark shadows, and the sound design gives the game a distinct personality that matches the emotional theme.

What we learned

  • How to optimize 2D games in Godot 4 specifically for mobile hardware and modern Android target requirements.
  • How to structure clean in-app purchases and subscriptions with RevenueCat while keeping the core arcade gameplay fun and fair for everyone.

What's next for Purrity

This demo is just the first step. After the hackathon, our roadmap includes:

  • Unlocking the remaining sectors and their respective Phobia Bosses (Nyctophobia and Claustrophobia).
  • Expanding the weapon catalog and upgrade variety.
  • Launching on iOS and exploring releases on additional platforms.

Built With

  • 2dgame
  • admob
  • android
  • gdscript
  • godot-4
  • ios
  • mobile-game
  • onesignal
  • revenuecat
  • roguelite
Share this project:

Updates

Submission history