A cozy shell decorating game, where you serve crabby customers and try your best to earn pearl paychecks.
Each in game day lasts 24 hours (compressed into 60 seconds). Crabby customers visit your seaside stand hoping to decorate and purchase their perfect shell!
You earn pearls based on how well you fulfill each order:
- Perfect order → +10 pearls ✧
- Second try → +5 pearls
Use your pearls to buy shop upgrades and unlock more customization options!
Each order can include:
- Shell shape 🐚
- Shell Colors 🎨
- Starfish ⭐
- Barnacles 🪸
- Bows 🎀
Match everything correctly to earn pearls and keep your customers happy (˶˃ ᵕ ˂˶)
Survive 10 days underwater and prove your shell decorating skills!
Unlock secret milestones that can give(or take away) more pearls!:
- Flawless Day: no mistakes all day (๑•̀ㅂ•́)و✧
- Combo Master: 10 perfect orders in a row
- Speedy Sheller: serve super fast
- Shell Legend: reach Day 10
- Chaos Mode: ???
-
Time & Day:
- A constant DAY_LENGTH := 60 seconds defines a full in-game day
- Time is tracked using time_passed += delta
- Hours are derived using:
var new_hour := int(time_passed / SECONDS_PER_HOUR) - When current_hour >= 24, the day automatically ends via end_day()
-
Crab Spawning:
- Crab customers are spawned dynamically using:
func spawn_crab()through and animation player - Each crab instance randomly selects a texture from crab_textures []
- Special crabs are selected using weighted randomness:
var crab_event = [0,0,0,0,0,0,1]
- Crab customers are spawned dynamically using:
-
Order Generation:
- Crab orders are generated using a dictionary based on what the player has unlocked:
var current_order = {"shape": "","color": "","stars": -1,"bow": -1,"barnacle": -1}
- Orders are randomly generated with weighted pools for customization options based on the day
- Crab orders are generated using a dictionary based on what the player has unlocked:
-
Earning Pearls
- currency variables stored in the global script through:
daily_pearls, pearls_earned, shells_sold - Each order has a base reward per correct order with increased payout for special events or extra decorations :
bonus += 2 * selected_stars, bonus += 3 * selected_barnacle, bonus += 5 if bow correctThis creates a layered reward multiplier system.
- currency variables stored in the global script through:
-
Streaks
- A global streak counter tracks consecutive successful orders:
Global.streak += 1 - Resets on failure
- A global streak counter tracks consecutive successful orders:
-
Achievements
- A state based unlockable animation stored in a global dictionary: ex.
Global.achievements["flawless_day"] - Each achievement contains:
- name
- description
- reward
- unlocked state
- Triggered by gameplay conditions
- A state based unlockable animation stored in a global dictionary: ex.
- More crab skins
- A LOT more animations
- Game Development & Design: Vishalya Sairam
- Art & Visuals: Vishalya Sairam
- Music: “Cute Mood” - SoulProdMusic
- Font: Lalezar
- Made with love in Godot <3