I am trying to get in the habit of changing how I talk about this project. Apparently shmups don’t count as shooters to some people. The way I see it, you’re shooting things, ergo it is a shooter, but I prefer to use terms in standard ways, so here we are.
Anyway, I’ve had two days in the past week where I put in a decent amount of work on my shmup for teaching phonics… in spite of being down one hand for a new repetitive motion injury. Enemies are now a thing, though nothing hurts anything else.
When I previously left off, I had a player ship movable onscreen (without leaving the viewport) and the ability to shoot bullets that made sound and whose sounds could be changed. The first thing I did was learn a bit more about the Godot Engine and change from hand-scripted timers to ones created via the editor as nodes. This refactoring made my code look a lot nicer.
I then built scenes for enemy ships and bullets and proceeded to get them spawning properly. Eventually I’ll want to implement enemy clusters and more interesting flight patterns. For now, though, the enemy ships spawn at random x coordinates and fly straight down, firing bullets ahead of them.
Since the enemies spawn offscreen and enemies and bullets alike can fly offscreen, I implemented a deletion system for them. I believe this system could be done more elegantly, but for now it’s fine.
With everything getting onscreen and moving like I wanted, the next step was to enable collisions. I planned to start on that immediately, but when I looked into collisions in the Godot Engine, I realized I was going to have to refactor a lot more things and stopped working on it for that day.
I started work today by refactoring the player ship from being a Sprite at heart to being a KinematicBody2D. This was the start of getting things ready for collisions. A lot of changes flowed from that, and the script for the player is now far, far more lightweight than it was this morning.
Although I’ve ended the day without any collisions going on, I’ve made some pretty significant progress in learning the Godot Engine. I’m now using its editor to do things which before I was just doing in scripts. The game doesn’t feel very different functionally from where I left off on the 8th. However, there have actually been a great number of changes under the hood. These will help me going forward.
The one obvious change from last session is that the background is now a starfield instead of a plain dark gray. I had an epiphany earlier; NASA makes its pictures of space freely available for educational purposes. I therefore found some I like and slapped one down as the background. No programmer art needed when you can have real pictures of space!
The downside is that real pictures of space loop poorly and parallax backgrounds will not be a thing for now. Maybe if I get someone to make better art for me at some point, I will reluctantly leave space photos behind. For now, I’ll plan on improving ships and bullets later (I can do more than simple polygons!) and leave spaaaaaaaaaaaaace pictures in place. :D