Fruit Shooter - Mobile Game
A casual 3D mobile game featuring dynamic level progression, monetization pipelines, and player progression tracking.
Project overview
A production-ready casual mobile game with full monetization and progression systems.
Fruit Shooter is a casual 2D mobile game featuring engaging fruit-throwing mechanics and bowl-matching gameplay. Players shoot fruits onto a rotating table with colored bowls, earning points for correct matches and progressing through level-based challenges. The game includes a full monetization pipeline (AdMob ads + in-app purchases), progression tracking with recovery mechanics, and optimized performance for mobile devices.
What it does
A casual 3D mobile game where players shoot/throw fruits onto a rotating table with bowls, matching fruits to colored bowls to score points and complete level-based progression.
Problem solved
Delivers an engaging, easy-to-learn casual game experience with monetization (AdMob ads + IAP), progression systems, and retention mechanics for mobile gamers.
Main goal
Create a production-ready mobile game with full monetization pipeline, player progression, daily rewards, and recovery mechanics for sustainable user engagement.
Tech stack
Practical tools chosen for reliability and speed.
Engine
- Unity 6 (6000.3.10f1)
- C# (.NET Standard 2.1)
- Universal Render Pipeline (URP)
- Physics 2D
Gameplay
- Module-based architecture
- Event-driven communication
- Singleton pattern
- State machine (GameManager)
Monetization
- Google Mobile Ads (AdMob)
- Banner/Interstitial/Rewarded ads
- In-app purchases (Shop)
- Currency system (Coins/Keys)
Progression
- PlayerProgress system
- PlayerPrefs persistence
- Recovery key mechanics
- Daily ad rewards
UI/UX
- Unity UI (uGUI)
- TextMeshPro
- Level selection map
- HUD & Pause system
Data
- ScriptableObjects (LevelData)
- Dynamic bowl spawning
- Wave-based level design
- Fruit/bowl configurations
Build process
A focused delivery path from problem mapping to launch.
Discovery
Analyzed casual mobile gaming trends, player retention mechanics, and monetization best practices for app store.
Planning
Designed level progression, bowl/fruit mechanics, ad integration points, and revenue streams (ads + IAP).
Core Build
Built GameManager state machine, LevelController, PlayerHand throwing mechanics, Table rotation, Bowl collision detection.
Progression System
Implemented ProgressionSystem with scoring (% thresholds), lives system (3 lives), stars (0-3), wrong attempt penalties.
Monetization
Integrated AdMob (banner/interstitial/rewarded), Shop system (coins purchase), Recovery keys (watch 2 ads = 1 key), Exchange system.
Level Design
Created 10+ levels via ScriptableObjects, wave-based spawning, dynamic bowl configurations, time-limited levels.
Testing & Deployment
Built production pipeline (Android AAB), R8 obfuscation, testing, signed builds (v1.0.2, v1.0.3), app store submission.
Challenges and solutions
The important problems solved for the business.
Problem
Dynamic Bowl Positioning
Solution
Levels required flexible bowl configurations (required + trap bowls) with circular rotating table placement.
Impact
Solved with trigonometry-based positioning, LookAt center, and dynamic spawning from wave data.
Problem
State Synchronization
Solution
Coordinating GameManager, ProgressionSystem, LevelController, and PlayerProgressRepository across transitions and retries.
Impact
Event-driven architecture with clear subscription model ensures consistent state without tight coupling.
Problem
Monetization Integration
Solution
Integrating AdMob rewarded/interstitial ads with recovery key system, shop exchanges, and editor simulation for testing.
Impact
Abstraction layer using preprocessor directives (#if GOOGLE_MOBILE_ADS) handles device vs editor fallback behavior.
Problem
Player Retention
Solution
Designing mechanics to encourage daily logins and continued play without making game pay-to-win.
Impact
Recovery keys (limited daily earned), daily login rewards (1 key per 2 ad watches), progression unlock gates, and reasonable difficulty curve.
Problem
Performance Optimization
Solution
Managing Object pooling, physics calculations, and UI updates on mobile devices with varying specs.
Impact
Efficient 2D physics, UI pooling, minimal garbage generation, R8 obfuscation, and proactive memory management.
Results and outcome
A complete SaaS foundation with measurable operational gains.
10+
fully designed and balanced levels
3x
lives system with recovery mechanics
5
dynamic fruit types with collision
7+
monetization integration points
4
game states (Menu/Playing/Pause/Complete)
100+
ScriptableObject configurations
Next case study