Inspiration
Remember the Tamagotchi? A tiny friend that needed you a few times a day. Modern virtual pets mostly turned that into a slot machine: timers you pay to skip, energy bars, and pets that die and ask for money to come back. I wanted the original feeling back, a pet that lives on real time, grows up slowly and is genuinely happy to see you, with none of the dark patterns.
What it does
Nubi is a virtual pet that lives in real time. It gets hungry while you are at work, sleepy at night and a little bored when you forget it.
- It actually grows up. Growth follows calendar days, not grinding: a first hair, a first tooth, ears, braces, a growth spurt, then adult, mature and legendary stages. 50 forms to discover in the album.
- Care that feels physical. Feed it from a pantry, wash it with real lather by rubbing the screen, tuck it in for a nap, pet it.
- Your care shapes it. Four traits (Gourmet, Sparkle, Dreamer, Rascal) change its look and accessories depending on how you treat it.
- Six mini games (catch snacks, match pairs, hunt socks, rhythm, stacking, odd one out) that fill Fun and pay coins by score.
- Daily tasks and a bond that builds over weeks.
- Never dies. Neglect it for a week and it gets sick and stops growing; three days of care (free) or a vet visit nurses it back.
- Everywhere you look: Home Screen and Lock Screen widgets with snack and pet buttons, an Apple Watch app with complications, and a "save for watch face" option.
- Story and post share cards, and ten languages (English, Turkish, Spanish, German, French, Portuguese, Italian, Japanese, Korean, Chinese) you can switch inside the app.
How we built it
- Native SwiftUI for iPhone, WidgetKit for widgets, a native watchOS app with complications, kept in sync over WatchConnectivity.
- The pet is drawn entirely from shapes in code (no image assets), so the same renderer powers the app, widgets, watch and share cards, and every hat, buddy and room item composes cleanly.
- A single
Carerules module owns every change to the pet, so the phone, widget and watch can never disagree. - RevenueCat handles the coin pack purchases (consumables) through
Purchases.shared.purchase, giving us one place to see transactions across platforms. - An Android and Wear OS version (Kotlin, Jetpack Compose, Wear tiles and complications) is in Google Play testing.
Challenges
- Making real time fair: needs drop hourly, but a long absence never empties them, and sickness pauses growth instead of punishing with death.
- Watch to phone sync when the phone is not reachable: actions apply locally on the watch first and queue to the phone, with one shared rule set to avoid double counting.
- Designing an economy without timers to skip or ads.
What we learned
Players come back for attachment, not for pressure. A pet that grows on calendar days and forgives you is a better retention loop than a countdown.
What's next
Shared pets with a partner or friend, Live Activities and more growth stages.
Log in or sign up for Devpost to join the conversation.