Inspiration

We’ve all had those moments where we sit down to study, tell ourselves we’ll focus for an hour, and somehow end up scrolling on our phones five minutes later. As students, we’ve experienced the struggle with procrastination, short attention spans, and just finding the motivation to keep studying. We wanted to make studying feel less like something we had to force ourselves to do. Inspired by Pokémon GO, we created DopaMarine to turn studying into an interactive, real-world adventure where students can move, explore, and learn while also adapting to the way each person learns best.

What it does

DopaMarine turns your lecture slides, PDFs, and notes into a study game made for how you learn. You pick a sea-creature study buddy that matches your learning style. You earn pearls (XP) that allow you to pass levels and eventually beat the boss level — the big bad shark, which is the practice exam.

Then take it into AR: open the virtual battlefield right through your phone’s camera and battle solo, against friends, or against players nearby in a Pokémon-style showdown. Each round shows a question from your notes, and you throw the ball with the correct answer to defeat your opponent’s avatar. The people you are competing with can either be studying the same or different things. Everyone starts as a tiny krill, and the more battles you win, the more you evolve into bigger and stronger fish.

How We Built It

We built DopaMarine using JavaScript, HTML, and CSS, with React, Vite, and Tailwind CSS powering the frontend. We designed the interface in Figma and used custom sea creature designs and artwork throughout the game. Leaflet and OpenStreetMap power the interactive map.

The Node.js and Express backend handles authentication, game progress, AI requests, real-time duels, raids, and player presence through WebSockets. We used the Google Gemini API to create structured study decks from uploaded materials, including recall, understanding, and application questions, along with field guides, hints, explanations, and personalized content. Responses are validated server-side before being used in the game.

MongoDB Atlas stores accounts, decks, mastery, exams, catches, battles, and other game data, with an automatic local JSON fallback if the database or internet connection is unavailable. Location and creature spawn data are kept in memory rather than stored permanently.

We also built several camera-based mini-games using device motion tracking and on-device face detection, with fallback controls for devices without gyroscopes. The game runs entirely in the browser, so there is no native app or installation required.

Challenges We Faced

Our biggest challenge was getting the AR features to work consistently across different devices. Recognition and motion tracking did not always behave the same way, so we had to add fallback controls and make the experience more forgiving when something failed.

We also ran into occasional Gemini errors and inconsistent JSON responses. We ended up adding automatic retries, fallback models, and server-side validation so one bad response would not break the game.

Designing for different learning needs was another challenge because we couldn’t just change the appearance of each fish. We had to actually change some of the gameplay mechanics. We also dealt with file-version and browser-caching issues that caused some changes to not show up correctly during development.

Accomplishments We’re Proud Of

We’re most proud that we were able to turn something as messy as raw lecture material into an actual playable experience. Instead of stopping at an AI-generated quiz, we built different game mechanics around the content, added AR, and connected everything to progression, battles, and accessibility features.

We’re also proud that we kept the game usable even when parts of the system failed. Building fallbacks and retries wasn’t something we originally planned to focus on, but it ended up being a big part of getting the final demo to work.

What We Learned

This was our first time building a project with AR, so we learned a lot about how different real-world devices can behave compared to testing everything on our own computers. We also learned that when you’re working with AI, you can’t always assume the output will be consistent or usable, so you have to design around that.

We also learned a lot about working as a team under a time limit. Communication mattered more than we expected, especially when multiple people were building different parts of the same system. We had to be more intentional about dividing up work and checking in so we weren’t accidentally doing the same thing twice.

What’s Next

We plan to expand the AR experience with location-based challenges, collectible fish, and collaborative exploration.

Additional goals include in-game sound effects, natural AI voices, teacher-created study decks, streaming question generation, and full iOS and Android support.

Share this project:

Updates

Submission history