Inspiration

The idea for EcoTamer came from a combination of my love for mobile games, Pokemon-style creature collection, and the desire to encourage outdoor activity. I noticed that many games gamify virtual environments but don’t connect players to the real world. I wanted to create a game that motivates players to walk, explore, and engage with nature while collecting and nurturing creatures.

The phrase “touch grass” became both a playful concept and the core mechanic of the app: each time a user visits a real-world location, they interact with a patch of grass to earn rewards, unlock animals, and grow their collection.

What it does

EcoTamer is an interactive mobile app that gamifies outdoor exploration and environmental engagement. Users navigate a real-world map, visiting different locations to “touch grass” and discover hidden animals. Each animal can be collected, unlocked, and displayed in a personal collection or set as a profile picture. Players earn in-app currency for exploration, which can be spent in the shop to unlock items that enhance gameplay, such as faster animal collection or extended rewards. The app encourages users to explore their surroundings, rewards curiosity, and provides a fun, engaging way to connect with nature while tracking progress and achievements in real time.

How we built it

We built EcoTamer using Flutter for cross-platform mobile development and Firebase for backend services, including authentication, real-time database, and cloud storage. The app tracks users’ locations using the Geolocator and Google Maps APIs, allowing them to explore their surroundings and “collect” animals by visiting different spots. We designed a dynamic system where each animal can be unlocked, displayed in the user’s collection, and used as a profile picture. To manage user progress and in-app rewards, we leveraged Firestore streams, which enabled real-time updates of balances, collections, and achievements. Challenges like handling asynchronous data fetching, scaling marker icons on the map, and ensuring smooth performance on mobile devices pushed us to learn more about state management, efficient UI rendering, and cloud integration.

Challenges we ran into

Real-Time Updates: Initially, changes to the collection or balance were not immediately reflected on the mobile app. I solved this using StreamBuilder to listen for Firestore updates in real-time.

Cooldown Management: Ensuring that each location marker had its own cooldown timer required storing timestamps and calculating differences using DateTime.

Scaling Markers: To keep markers visible and appropriately sized on different zoom levels, I implemented dynamic scaling using custom bitmap descriptors.

UI/UX Design: Designing a clean, playful, and responsive interface that works on mobile screens took iterative testing.

Accomplishments that we're proud of

What we learned

During the development of EcoTamer, I gained hands-on experience in:

Flutter and Dart for building a mobile-first application. Firebase for authentication, real-time database updates, and cloud storage. Google Maps API & Geolocation to track user movement and place interactive markers in the real world. State management and reactive UI using StreamBuilder and setState to keep the app responsive. Game design principles, including reward loops, cooldown mechanics, and balancing progression. I also strengthened my problem-solving skills in integrating multiple APIs and handling asynchronous data streams effectively.

What's next for EcoTamer

Multiplayer Features: Enable players to interact with friends’ collections and trade animals. Add collaborative challenges or leaderboard competitions for visiting locations.

Enhanced Rewards & Progression: Introduce rare animals, seasonal events, and timed challenges. Implement a leveling system for animals that improves as players interact more.

Customization & Habitats: Let players build custom habitats for their animals, improving happiness and earning bonus rewards. Include cosmetic customization for profile and animal appearance.

Share this project:

Updates