Ongoing PolishMy recent medium-term focus has been working towards a new build that I can send to playtesters. The last one was in October 2018 so it's been a while! There are still some big things left to cover - I'd like to add one more level to the game before then, and the game's sound effects are in dire need of some attention. But I've been working through a huge list of smaller to-do-list items to polish the game up. I'll cover some of them here to give an idea of the kind of tweaks I'm making.
Intro cutscene tidy upAn intro cutscene at the start of the first level has been in the game for
ages. It's mostly intended as placeholder, but for now it provides at least a little context to kick the game off with.

(Old version)
When I first added the cutscene it was hacked in with the tools I had available at the time.

The big line running through the scene here is a
sequence that I was using to make entities appear at the right time and trigger various other things. I set up each point of the sequence with a 0.6 second delay - and if I wanted a longer delay between the events I would just put lots of extra points on the sequence line! You don't really have to understand this system to see that it's messy.
What's worse is how I prevented the cutscene from being played again if the player died and restarted the level. I actually had two separate copies of this starting area - one with the cutscene and one without. A checkpoint was triggered when starting the level which, if you died, put you into the second version of the area. It worked ok but it makes it twice as much work to change any of the layout of the area!
Now I'm making use of my
scripting system to run the cutscene, the same as the boss intro cutscenes. It tells the player which anims to play, makes the crates appear, etc. It's much neater, and easier to edit! Also now there's only one version of this intro area, and the script can be smart about either doing the cutscene stuff, or not, as appropriate.

(New version)
Big Block effectsI don't know if I've shown these big blocks before. But anyway, I haven't made as much use of them as I'd like so I'm trying one out in the intro area.

It needs to be hit multiple times to get the powerup out of it. Previously there were no effects for this - so now it's more satisfying to hit.
Exclamation Block effectsThis is another type of block that's been in the game basically forever but I haven't used too much in levels, which I intend to change. When a normal block is hit, the hit continues in a chain reaction to the other side. The exclamation mark block is different in that it continues the chain reaction on all four sides.
The effects for this were really lacklustre before, and it was also hard to follow. I've improved the effects and added a delay.

(Old version)

(New version)
Added slopes throughout the gameFollowing on from the recent addition of
slopes to the game, I've done a pass through nearly every level, adding slopes to the tilesets and then sprinkling them throughout the levels where it feels appropriate.
Shiny ShellsShells in dark lighting used to look a bit dull.

(Old version)
Now the shine on them isn't affected by lighting, so they stand out nicely!

(New version)
This actually makes use of the
composite sprites feature that I added recently. The shell animation is now made of two layers, one of which (the shiny overlay) is not affected by the colour tint of the lighting. No code needed!
Alert statesSome enemies have visible
alert states to show that they're currently reacting to Leilani's presence. I realised I'd forgotten to add it to one type of enemy - these digging machines.

So they now have nice red eyes when they're activated. They also now turn off when they get stuck, as it looked strange for them to remain 'alert' when they were trapped in a space.
Mouse wheel scrollingAs mentioned
here, a couple of the game's menus feature scrolling. You can now scroll using the mouse wheel!
More boss polishThe game's current two boss fights have been given a little more attention and improved some more. You can't underestimate how much polish a boss fight needs! Changes range from tweaking boss intro cutscene animations, to tweaking behaviour during the fight, and just tightening up timing to help the fights flow smoothly.
Auto-grab instead of Hold-to-grabLeilani can
grab objects and enemies. The first implementation of this used a 'Grab' input that you had to hold in order to pick up objects. This can be thought of as the Mario method, where holding the run buttons allows picking up some objects. Letting go of the button would make Leilani kick the object (or drop it if holding the down direction).
I've now changed it so Leilani grabs objects automatically. There's now a 'Kick' input which kicks the object when it's pressed. This can be thought of as the Wario method! In those games Wario tends to pick objects up automatically.
I actually like both styles of input in different ways. Having a 'Grab' input makes sense in that while you hold the button, Leilani holds the object - so there's a logical correlation there. On the other hand, kicking the object is a powerful interaction, and it doesn't quite feel right for that to be instigated by letting go of a button. Tapping the 'Kick' button to do the kick makes the kick feel more active.
For now I'm keeping the inputs simpler by going for the 'Kick' button with automatic grabbing. The player already holds the 'Roll' button quite a lot of the time, and it feels a little awkward to start factoring in another button that you have to hold instead (especially when playing on keyboard). Tapping a 'Kick' button now and then feels like it requires much less dexterity.

Watching this gif, when Leilani catches the enemy in mid air, the moment feels a bit flat - it could do with a bit more 'bounce' or some kind of effect. Something else for the to-do list
