I finally got some time to get more work done on the game! I’ve spent the past couple days programming the Interactibles. Interactibles are an idea I’ve wanted to incorporate in a shoot ’em up game for a while, now. Basically, Interactibles are special objects that can award you bonus points if you interact with them correctly. Interactibles will regularly spawn and offer players a chance to boost their score.
The Container is the simplest of these. It simply moves slowly across the screen and, if you shoot it enough times, breaks open and awards you points. I originally thought about making it a solid object that the player could not fly through, but after a bit of playtesting I’ve determined that I want the Interactibles to be as non-intrusive as possible; The player may simply fly through any Interactible. Making it a solid object created a weird situation at the edge of the screen: if the player stayed in the same spot on the far edge of the screen, the Container would be forced to move inside the player’s hitbox. The player could still shoot while inside the Container, but could not move until the Container fully passed through them. It was glitchy and weird and I didn’t like it.
The Gates spawn in groups of three in either an ascending or descending pattern. Touching the beam inside the gate frame destroys the Gate and gives the player points. You do not have to fly through all three Gates to get bonus points – each individual gate gives you a small score bonus. To gain the full bonus, however, you need to hit all three. When the first gate spawns, it randomly decides to jump to either the top or bottom of the screen. If it jumps to the top, it creates two more gates below it offscreen. If it jumps to the bottom, it makes two more above it.
The Spinner has four positions – up, right, down, and left. It always starts up, but if the player bumps into the top of the handle, it moves to the right position. If the player keeps bumping into the handle until it makes a complete 360 spin, it destroys itself and awards bonus points. Like the Container, I originally planned to make the base of the Spinner a solid object you could not pass through. It was weird and annoying when solid, though, and stopped you from moving if it trapped you on the side of the screen.
The Lights were the hardest to program by far. I wanted one green light to move up or down the string of red lights, creating a sort of timing-based Interactible. If the player shoots the green light, the string is destroyed and points are awarded. To keep it unpredictable, I wanted the Lights to randomly choose either an ascending or descending pattern for the green light. I ended up programming it such that a green light destroys itself after half a second. The base of the Lights is programmed to create a new green light every half second, adjusting the y coordinate either down or up depending on which pattern it spawned with. If that y coordinate gets too low or too high, the pattern restarts. I originally planned to punish the player for shooting a red light by destroying the string and offering no points. That’s ridiculously harsh, however, as the Lights will spawn with no warning, potentially when a bunch of player shots are onscreen. As such, bullets simply pass through red lights without doing anything.
I plan on beefing up the presentation of the Interactibles later on with some destruction effects and text displaying points awarded. I’m just happy I got the Lights to work!