GameCourse is the gamified learning platform behind Multimedia Content Production at Instituto Superior Técnico. Students earn XP, badges, streaks and gold for their work, and a rules engine called AutoGame hands out those rewards automatically. Because XP becomes the course grade, the engine has to be correct.
After years of growth the platform had three problems. AutoGame was slow and, as it turned out, was quietly producing wrong data. Teachers had no single place to see how their class was doing. And students could only spend their gold on academic perks such as retries and extra credit, so there was little reason to collect it for its own sake.
This thesis tackles all three: it repairs and speeds up the engine, adds an Overview Dashboard for teachers, and adds a Gacha Module, a chance-based shop for cosmetic rewards that has no effect on grades.

A faster and more reliable engine
A benchmark on a copy of the real course database showed that the old AutoGame recorded 19.1% too many awards, 18.6% too many streak entries, and 92 duplicated and 8 missing XP records. These came from a broken cache and from state shared between runs.

The fix was a targeted refactoring instead of a rewrite, so the platform stayed in use throughout. All of a run's state now lives in one CourseContext object, database queries are parameterized and grouped into batches, and the PHP backend and the Python engine now time out cleanly if the other side fails.
The result: a run for the 67-student course dropped from 1m 54s to 1m 13s (36.1% faster) with 10.5% fewer database queries, and every corrupted record was gone. Three courses processed at the same time produced exactly the same awards and XP as when run alone, which the old engine could not do at all.
An overview for teachers
The Overview Dashboard answers the questions a teacher asks about a course. How many students are active? Which activities earn the most XP? Which skills are students stuck on? Which badges has nobody earned? Each section answers one of these questions, the details appear on hover, and teachers can reorder the sections.

The Badges chart is sorted from rarest to most common, because the rarest badges tell a teacher the most: they may be too hard, or they point to students who stand out. When three or fewer students hold a badge, their names appear on hover.

We tested the dashboard with 20 participants on real data from a past edition of the course (86 students). They answered eight typical questions in 6 to 21 seconds, with a success rate of 95–100% per question. The dashboard scored 95.3 on the System Usability Scale, where 68 is average. 18 of the 20 said it gave them a clear picture of the class and would help them decide when to step in.
Something fun to spend gold on
Research suggests that spending virtual currency only on academic perks does little for students' intrinsic motivation, and can even draw their attention away from learning. The Gacha Module gives them another option: they trade gold for tickets and "pull" on banners to win cosmetic items such as interface themes and avatar parts. A random draw keeps collecting interesting for longer than a regular shop, where students would just buy what they want and stop.

Chance-based rewards can be done badly, so the design follows guidelines for responsible gacha design:
- Everything is cosmetic. Nothing a student wins affects their grade.
- The odds are public. Every banner shows the exact chance of winning each item.
- Bad luck has a limit. After 75 pulls without a legendary item, the chance of one rises steadily, and the 90th pull always gives one. If that legendary isn't the banner's featured item, the next legendary is guaranteed to be.


Teachers configure everything themselves: ticket prices, banners, items and how likely each one is. The module also connects to AutoGame, so a teacher can write rules such as "award the Gacha Veteran badge after 100 pulls".
We tested the module with 15 participants, playing both students and teachers. It scored 90.3 on the System Usability Scale, and participants rated it high on interest and enjoyment (6.3 out of 7). Most of them watched every animation in a ten-pull instead of skipping ahead, and nearly all of them considered it fair for a classroom, mostly because of the bad-luck guarantee. Most also thought it would help to let students buy some items directly.
What's next
The dashboard and the gacha were tested in sessions, not yet over a whole semester, so the next step is to use them in a real course. That would show how the dashboard handles changes over time and how the gacha affects the course's gold economy.
This work was supervised by Daniel Gonçalves and João Moreira.