Back to selected work

Python experiment / Game systems

Scrolling space game.

A Space Invaders-style programming exercise that grew into a small moving world with input, projectiles, enemies, collision, and layered scenery.

Format
Desktop game prototype
Input
WASD movement + mouse
Systems
Enemies, projectiles, collision
Visuals
Scrolling illustrated layers
Start screen for a scrolling space game with stylised mountains, clouds, and control instructions
Game start screen / illustrated scrolling world

01 / GoalLearn by building a complete loop.

Games are compact systems problems. Even a simple one needs input, state, timing, rendering, collision rules, feedback, and a clear start and end. This project used a familiar arcade structure as a reason to make those parts work together.

The player moves with the keyboard and fires with the mouse. Enemies enter the scene, projectiles move independently, collisions remove targets, and the environment scrolls to create a larger sense of motion than the window alone can provide.

WASDplayer movement
Mouseprojectile input
2Dscrolling world

02 / SystemsSmall rules, coordinated every frame.

The game loop collects input, advances the world, checks interactions, and redraws the result. Separating those responsibilities makes it easier to change enemy behaviour or add a projectile without turning every new feature into a special case.

  • Keep game state separate from drawing so the rules remain understandable.
  • Use reusable entities for repeated behaviours such as movement and collision.
  • Tune the feedback loop—timing, speed, and response matter as much as correctness.

03 / DemoThe prototype in motion.

The result is a learning project rather than a finished release, but it closes the loop: a player can start, move through the scene, shoot, encounter enemies, and see each system respond.

The game's illustrated mountain landscape and start instructions
Prototype start state / controls and scrolling environment