Skip to content

anugotta/GravityPulse

Repository files navigation

Retro-Naut (Gravity Pulse)

A retro-style 8-bit gravity-switching endless runner game for Android, built with Kotlin.

Google Play

📱 Download on Google Play

🤖 About This Project

This project serves as a demonstration of agentic AI capabilities in software development. Retro-Naut was created completely from scratch in less than 4 hours - from initial ideation to publishing on the Google Play Store.

Developed using Claude and Cursor - showcasing the power of AI-assisted development workflows.

Key Highlights:

  • Rapid Development: Complete game developed in under 4 hours
  • 🤖 AI-Powered Development: Built entirely using Claude (AI assistant) and Cursor (AI-powered IDE)
  • 🎨 AI-Generated Assets: All graphics, sound effects, and background music are programmatically generated (icons are the only exception)
  • 📝 AI-Generated Documentation: Even this README was generated by AI
  • 🔬 Experimental Project: Created to test how much can be achieved using the right AI prompting and agentic AI workflows
  • 🚀 Production Ready: Despite being AI-generated, the game is fully functional and published on the Play Store

This project showcases the potential of modern AI-assisted development and demonstrates that with effective prompting and the right tools (Claude + Cursor), complex applications can be built from conception to deployment in a matter of hours.

🎮 Features

  • Retro 8-bit Graphics: Pixel-perfect retro aesthetic with scanlines and retro colors
  • Gravity Switching: Tap to switch between normal and reverse gravity
  • Procedural Generation: Endless obstacles that adapt to screen size
  • Procedural Sound: 8-bit style sound effects and background music
  • High Score Tracking: Persistent high score storage
  • AdMob Integration: Banner and interstitial ads (with placeholder test IDs)

📋 Prerequisites

  • Android Studio Hedgehog | 2023.1.1 or later
  • Android SDK API level 23 or higher
  • Kotlin 1.9+
  • Gradle 8.6+

🚀 Installation

  1. Clone the repository:

    git clone https://github.com/anugotta/GravityPulse.git
    cd GravityPulse
  2. Open the project in Android Studio

  3. Sync Gradle files

  4. Build and run on an emulator or physical device

For detailed setup instructions, see SETUP.md.

🔧 AdMob Setup

Important: This repository uses Google's test AdMob IDs. Before publishing to the Play Store, you must replace them with your own AdMob IDs.

Steps to Configure Your AdMob IDs:

  1. Create an AdMob account at Google AdMob
  2. Create an Android app in AdMob dashboard
  3. Get your App ID and Ad Unit IDs (Banner and Interstitial)
  4. Update app/src/main/res/values/strings.xml:
    <string name="admob_app_id">YOUR_APP_ID</string>
    <string name="admob_banner_ad_unit_id">YOUR_BANNER_AD_UNIT_ID</string>
    <string name="admob_interstitial_ad_unit_id">YOUR_INTERSTITIAL_AD_UNIT_ID</string>

The current placeholder IDs are Google's test IDs and should only be used for testing.

📁 Project Structure

GravityPulse/
├── app/
│   ├── src/main/
│   │   ├── java/com/asp/gravitypulse/
│   │   │   ├── GravityPulseGameEightBit.kt  # Main game logic
│   │   │   ├── MainActivity.kt              # Activity entry point
│   │   │   └── TitleMusicGenerator.kt       # Procedural music generation
│   │   ├── res/
│   │   │   ├── values/
│   │   │   │   └── strings.xml             # String resources (including AdMob IDs)
│   │   │   └── mipmap-*/                   # App icons
│   │   └── AndroidManifest.xml
│   └── build.gradle.kts
└── README.md

🎯 How to Play

  1. Start: Tap anywhere on the screen to start the game
  2. Switch Gravity: Tap to toggle between normal and reverse gravity
  3. Avoid Obstacles: Navigate through gaps in obstacles
  4. Score Points: Survive as long as possible to increase your score
  5. Beat Your High Score: Try to beat your previous best!

🛠️ Technologies Used

  • Kotlin: Primary programming language
  • Android View System: Custom View for game rendering
  • Canvas API: 2D graphics rendering with pixel manipulation
  • Coroutines: Asynchronous operations for game loop and audio
  • AudioTrack: Procedural sound generation
  • SharedPreferences: High score persistence
  • Google AdMob SDK: Advertisement integration

📝 Code Quality

  • Clean, well-commented Kotlin code
  • Proper null safety with Kotlin null checks
  • Efficient rendering with Canvas API
  • Memory-conscious audio generation
  • Screen size adaptive obstacle generation

🤝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Retro game aesthetic inspiration from classic arcade games
  • Procedural audio techniques adapted for Android
  • Built with the assistance of agentic AI to explore the boundaries of AI-assisted development

About

A retro-style 8-bit gravity-switching endless runner game for Android, built with Kotlin.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published