Case study 06 · 2025

Asteroids, with a Data Layer

A complete Python Asteroids clone with every play session logged and analyzed in Power BI - a playful project with a real end-to-end loop underneath.

Scroll to explore
Role
Two-person project
Field
Game development · Data analytics
Black and white title screen for the Asteroids game
2 weeksBuilt in
12Sessions logged
2,686Asteroids destroyed
01

Context

For a two-week challenge with a loose brief - build a small game - Floris and I made a complete Asteroids clone in Python. Then we wired a data layer underneath it, logging every game so we could inspect our own play afterward. That turned a weekend game into a small end-to-end system: build, instrument, collect, and analyze.

02

What we built

Using Python’s Arcade library, we built menu, playing, paused, and game-over states; thrust-and-drag momentum; wraparound; splitting asteroids; progressively harder waves; hit invulnerability; and a name-entry high-score table. The entities, constants, collision math, and data layer each live in their own module.

Every session is saved to JSON with player, score, duration, destroyed asteroids, and timestamp. A Power BI dashboard turns that into a leaderboard, peak and average scores, progression over time, and a duration-versus-score view. Across twelve games, we destroyed 2,686 asteroids, while my scores rose from roughly 5,000 to 13,000.

03

What I took from it

We started with a game because it sounded fun, and that freedom made the project surprisingly useful. The analytics layer became my favorite part because it let us see our own behavior change over time. It showed me that even a playful idea can become a thoughtful end-to-end system.