I've been fairly busy with ZOE this month trying to develop the power up system into something a bit more engaging. The current idea is to have the powered up weapons consume energy, so they can run out of ammo if you don't keep replenishing them, and you can level up your standard weapon separately.
I started off just trying to implement some classic weapon types, taking some of the Contra 3 guns as inspiration (apart from the laser, I hate that laser) and took on the homing missile first.
It was pretty easy to get it functioning and to have the bullets target the nearest enemy, but getting it to feel and look good was a bit of a struggle - I wanted a nice curve on the bullet trajectory so it wasn't just immediately facing and travelling in the correct direction. My initial google search led me down an overly complicated route that had me calculating angles and circles and intersections and stuff that I was struggling to implement (although it helped me finally get to grips with point_direction and lengthdir_x/y properly!), until I tried searching again and found this script which I've used with a few tweaks. It's a bit buggy and bullets can sometimes get caught in loops or fly off in random directions, but I don't really mind that as it can be balanced out by the fire rate and damage stats of the bullets, and it kind of adds to the frantic feel of it.
With that sorted I focused on the look, as I wanted the powered up weapons to feel more special and have a bit more visual impact. I thought a kind of film burn effect might work so it looks like the film is getting scorched by the powered up shots. I'm not sure that's really communicated, but I kinda like how they look now anyway... Here's the homing shot as it is currently.
Next up was the spread shot, as I thought that would be pretty straightforward, which it was for the most part. It's a simple for loop with an angle change for each bullet, but the angles needed some adjustments when the x_speed of the player was added (which I do to sort of force the trajectories to stay relative to the player when they move). It was really just a lot of trial and error (my programming style, it seems!) to get it looking and feeling good.
I wasn't really sure at this point how to implement these new power ups though. The current system will spawn a predefined power up (gun, points or shield) after a chain of enemies is destroyed, and I initially had the gun power up version of that just cycle through the different new guns so the player could wait and choose what they wanted. But I kind of wanted to expand it a bit more with other power ups so it really needed a different approach.
After a Fantasy Zone session or two, I decided to steal it's shop mechanic! Enemies now drop apples (which start shrinking and losing their value after a second or so, so you need to grab em quick for max value) and instead of spawning power ups, the enemy chains now spawn the shop, where you can buy various upgrades... I might change how that works tho, so it's not tied into a specific player action and just spawns in at certain points throughout the level.
Pretty happy with how it's shaped up and functions!
Most recently, I just finished off the heavy shot, which is totally OP at the moment but I kinda like the chaos it causes. It spawns three explosions on impact that take out enemies.
A lot of this is still up in the air and it's all totally unbalanced - prices, currency value, power up stats etc all need some serious attention and testing, not to mention the whole shape of the level now that so much has changed - so I'm not totally convinced that this is a good idea yet. I think with a bit of work it could be the way to go though, and will hopefully help with the sense of progression and even add a layer of strategy to it all.
I hope to have a new demo with all this stuff figured out in a month or so, so keep an eye out, would love to know what you think...
Thanks for reading!