A kawaii VR game that progressively becomes darker
A unique VR experience where you smash adorable cupcakes with a hammer in a pastel universe that becomes increasingly unsettling as the game progresses.
Cuteness Overdose is a virtual reality game developed for Meta Quest 3 that blends kawaii aesthetics with a creepy atmosphere. The player uses a hammer to destroy randomly appearing cupcakes while progressing through two scenes with distinct atmospheres.
- Objective: Reach 100 points by hitting cupcakes
- Controls: Grab the hammer with Quest controllers and smash the cupcakes
- Progression:
- GameScene (0-50 points): Kawaii atmosphere with soft music
- GameSceneIntermediaire (50-100 points): Darker, creepier atmosphere
- EndingScene: Final scene after reaching 100 points
- 🎯 Dynamic spawning system: 8 positions with 5 cupcake types
- 🔨 Realistic physics: Collision detection with velocity threshold
- 🎨 Visual effects: Cupcake fade-out, impact particles
- 🎵 3D spatial audio: Ambient music and impact sounds
- 📊 Score system: Progress bar and automatic transitions
- 🌈 2 distinct atmospheres: From kawaii to slightly creepy
- Unity: 2022.3.37f1 (LTS)
- Blender: 4.1
- Git: Version control
- XR Interaction Toolkit: 2.5.4
- XR Hands: 1.7.2
- OpenXR: Meta Quest Plugin
- TextMeshPro: UI and text
- XR Device Simulator: Testing without headset
- Meta Quest 3: Primary VR headset
- Quest Link: PC connection for development
Cuteness-Overdose-Vr/
├── Assets/
│ ├── Scenes/
│ │ ├── MenuScene.unity # Main menu
│ │ ├── IntroScene.unity # Introduction with mascot
│ │ ├── GameScene.unity # First part (0-50 pts)
│ │ ├── GameSceneIntermediaire.unity # Second part (50-100 pts)
│ │ └── EndingScene.unity # Ending scene
│ ├── Scripts/
│ │ ├── MenuManager.cs # Menu management
│ │ ├── MascotIntro.cs # Mascot interactions
│ │ ├── HammerHit.cs # Hammer collision detection
│ │ ├── CupcakeSpawner.cs # Cupcake spawning
│ │ ├── ScoreManager.cs # Score management (50-100)
│ │ ├── ScoreManagerFirstScene.cs # Score management (0-50)
│ │ └── FadeTransition.cs # Scene transitions
│ ├── Prefabs/
│ │ ├── blue cream.prefab # Blue cupcake
│ │ ├── brown cream.prefab # Brown cupcake
│ │ ├── cherry.prefab # Cherry cupcake
│ │ ├── chocolate.prefab # Chocolate cupcake
│ │ └── strawberry.prefab # Strawberry cupcake
│ ├── Materials/ # Materials and textures
│ ├── Models/ # 3D models (Blender)
│ ├── Sounds/ # Audio files
│ └── XR/ # XR configuration
├── README.md
└── .gitignore
- Play and Quit buttons with animations
- VR support (raycast) and mouse
- Smooth transitions with fade
- Interactive mascot with dialogue
- Typewriter text animation
- 3D dialogue bubble
- Smart spawning: Cupcakes only appear 2 seconds after grabbing the hammer
- 5 cupcake types: Each with adapted rotation and position
- Collision detection: Velocity threshold to avoid accidental destruction
- Visual fade-out: Cupcakes disappear with fade effect
- Visual progress bar
- +10 points per destroyed cupcake
- Automatic transition at 50 and 100 points
- Persistent score between scenes
- Kawaii music (GameScene)
- Creepy music (GameSceneIntermediaire)
- Impact sounds on contact
- Fade-out during transitions
- Unity 2022.3.37f1 (LTS)
- Meta Quest 3 with USB-C cable (optional, for headset testing)
- Meta Quest Developer Hub installed (optional, for Quest deployment)
- Developer Mode enabled on Quest (optional, for Quest deployment)
-
Clone the repository:
git clone https://github.com/your-repo/Cuteness-Overdose-Vr.git cd Cuteness-Overdose-Vr -
Open the project in Unity 2022.3.37f1
-
Verify XR settings:
- Edit → Project Settings → XR Plug-in Management
- Check OpenXR for Android and PC
- Add Meta Quest Feature in OpenXR
⭐ Important: The XR Device Simulator is already configured in the project!
-
Open MenuScene in Unity
-
Click Play in Unity Editor
-
The simulator activates automatically and works throughout the entire game (all scenes)
-
Use keyboard/mouse controls:
- Tab: Cycle between HMD/Controller/Hand input
- Right Shift + Mouse: Move right hand
- Left Shift + Mouse: Move left hand
- Space + Mouse: Move both hands
- G: Grip (grab hammer and objects)
- Mouse Movement: Look around (when HMD is selected)
- Z, S, Q, D: Move forward, backward, left, right
- E/A: Move up/down
- Mouse Scroll: Adjust movement speed
-
XR Device Simulator UI (bottom-left corner):
- Shows current input mode (Controller/Hand/HMD)
- Displays button mappings
- Can be minimized by clicking the arrow icon
Note: Once activated in MenuScene, the XR Device Simulator remains active for all subsequent scenes (IntroScene, GameScene, GameSceneIntermediaire, EndingScene). You don't need to reconfigure it!
-
Connect Quest 3 via USB
-
Enable Quest Link in headset
-
Option A - Play in Unity with Quest Link:
- Press Play in Unity Editor
- The game runs directly in your headset
-
Option B - Build standalone APK:
- File → Build Settings → Android
- Switch Platform → Build And Run
- Install APK on Quest 3
- GameScene: Pastel pink (#FFB3D9), Sky blue (#87CEEB), Soft yellow (#FFFACD)
- GameSceneIntermediaire: Dark pink (#D87093), Purple (#9370DB), Gray (#808080)
- Low-poly 3D models: Optimized for VR performance
- Pastel colors: Kawaii aesthetic in first scene
- Gradual darkening: Visual transition to creepy atmosphere
- Particle effects: Impact feedback and visual polish
- All models created in Blender 4.1
- Low-poly style for VR optimization (targeting 90 FPS on Quest 3)
- Materials with vibrant colors and Standard shaders
- Custom cupcake models with unique shapes and toppings
- Minimalist interface: No cluttered HUD
- Diegetic UI: Score bar integrated in the environment
- Clear progress feedback: Visual and audio cues
- Spatial audio: 3D sound sources for immersion
- Comfortable VR experience: No artificial locomotion, standing experience
- Grab system: Using XR Grab Interactable
- Attach point: Handle positioned for natural grip
- Movement type: Velocity Tracking for realistic physics
- Collision detection: Continuous Dynamic for accurate hits
- Impact threshold: Minimum velocity of 0.5 m/s required to destroy cupcakes
- 8 spawn positions: Arranged around the player
- Random selection: Prevents pattern memorization
- Spawn timing: 1.5 seconds between spawns
- Initial delay: 2 seconds after grabbing the hammer
- Lifecycle: Rise up (2s) → Stay visible (3s) → Descend (2s)
- Physics state: Kinematic during movement, dynamic when at peak
- First scene (0-50): 5 cupcakes to complete
- Second scene (50-100): 5 more cupcakes to complete
- Scene transition: Automatic when reaching threshold
- Visual feedback: Progress bar + text display
- Verify Rigidbody has Collision Detection = Continuous Dynamic
- Verify Movement Type = Velocity Tracking in XR Grab Interactable
- Add a collider to the platform with Is Trigger = false
- Check that Platform has a Box Collider or Mesh Collider
- Verify the hammer has been grabbed (wait 2 seconds after grab)
- Check Delay After Hammer Grab = 2s in CupcakeSpawner
- Verify all 8 spawn positions are assigned in Inspector
- Check Console for spawn-related errors
- Verify ScoreManager (or ScoreManagerFirstScene) is in the scene
- Verify cupcakes have the Tag "Cupcake" (case-sensitive)
- Check Min Velocity To Hit = 0.5 in HammerHit script
- Verify you're hitting with enough force (swing the hammer)
- Verify Interaction Layer Mask = Everything on interactable objects
- Verify Left/Right Hand have XR Ray Interactor component
- Check that XR Origin is properly configured in the scene
- Verify XR Device Simulator is enabled in Project Settings
- Check that you started from MenuScene (simulator activates there)
- Press Tab to cycle input modes if controls aren't responding
- Look for the simulator UI panel in the bottom-left corner
- Verify audio files are assigned in ScoreManager Inspector
- Check Music Volume is not set to 0
- Ensure AudioListener is on the Main Camera
- Verify the 3D audio source is positioned correctly (0, 2, 0)
- Grip Button: Grab/Release hammer
- Trigger: Interact with UI buttons
- Thumbstick: Navigation (menu only)
- Physical Movement: Move your body to dodge/position
Made with ❤️ and Unity
Experience the cuteness... until it becomes too much. 🧁💀