My very first major project, as well as my very first game. I decided to do it in Java because it was the language I knew the best at the time, and also because I'd been tricked into thinking it was a powerhouse game programming language by the success of Minecraft. The development was long and arduous, but at the time incredibly fulfilling. It took roughly 10 hours of experimenting until my first bit of major progress - getting a small circle to move left and right at the top of the screen using the arrow keys. I remember taking a break to show everybody in the house, who were completely confused about what I had to be proud of.
From there development sped up. I programmed a janky as hell sprite rendering class that got the sprite files from a hard-coded file location. When I was showing off the program I would have to go into the code and re-hard-code in what drive my flash drive was plugged into. That's the reason I can't offer you a playable build of the game or even a video walkthrough - because at time of writing they doesn't exist. All I have are the screenshots I took at the time and the sprites. As far as I know the only surviving copy of the code is printed out on paper in my mum's house somewhere. Maybe one day I'll look for it.
The game itself was incredibly simple. You are the Living Satellite Observo, and you're on patrol. You can move left and right, up and down, with WASD and arrow keys, and you can fire a projectile using the spacebar. Destroids (evil red recolours of Observo), start to spawn randomly from a point above the top of the screen and move down the screen towards the player. They fire (evil red recolours of Observo's) projectiles down towards Observo, although there was a bug I never fixed that meant only one of them on screen fired at once. They have slight pattern variations - they will either move straight down, move down and to the right, or down and to the left. If they hit the side of the game window they will flip direction. If they reach the bottom of the screen they will reset back to the top. There are 25 Destroids in total that spawn over time and once the player destroys them all the game is over. Observo has three lives and if he is hit he is invincible for a second or so. Beyond defeating all 25 Destroids, the player can gain points for destroying their projectiles and avoiding losing lives.
The game was incredibly barebones even for my expectations at the time. I never had time to code in a boss enemy type or power-ups despite making sprites for them. I never fixed a multitude of bugs and never added additional waves of enemies. Despite that I am proud of programming the game from scratch and I'm happy with the design of the sprites. I tried to remake the game with 2D Space which, honestly, offered little improvement, but one day I'll likely try again.