Build 107


Hello everyone!

Time for a new massive update!

But before going into the detail of the new stuff, RollerBlade is currently 30% off as part of the Playdate Advent Calendar!

So what’s new in this release?

Scores

I programmed an animation for highscore and last score breaking.

The line exerts some resistance while it sounds like a rubber band stretching then snapping, releasing confettis that kill nearby enemies on impact.

Satellites

I added a new type of enemy, the satellite.

Killing satellites grants bonuses, but satellites go fast and are hard to catch up with. Adding to that, they fire a huge laser beam that they can orient to target the player, as well as modulate their speed to try and keep a lock on the player.
They cannot be defeated with regular bullet, and only a close quarter kill with the sword or the dash is rewarded with a bonus.

Bonus

The 5 types of bonuses granted by killing satellites are temporary buffs and come in 3 levels of increasing strength.

Bonuses are active for around 30s.
Picking the same bonus again grants the player the upgraded level. Each level lasts 30s then degrades into the previous level (eg, picking up armor gets you level 1 for 30s. Picking it up again later in the game gives you level 2 for 30s then level 1 for 30s, and so on)

The 5 types are:

  • recovery: health recovery is increased
  • armor: damages are reduced
  • freeze: enemies are slowed down
  • firepower: increased acceleration from the gun and boost
  • aim: increasingly precise and predictive aim

Gameplay

I made some changes to the gameplay as well:

  • letting the RollerBlade roll at its minimum speed costs energy
  • hard landings deal some damage
  • airships no longer explode when destroying the attached turrets
  • turrets try to lock onto the player
  • tanks fire more rapidly
  • crankless mode is made more difficult

Sound

I added some “spatialization” of sounds (works only with a headset) for moving enemies: tanks, planes and satellites! You can now hear where enemies come from!

Optimizations

I spent some time doing some heavy refactoring and optimizations.
Without going into much details, I got rid of any object oriented feature in a bid to reduce metatables and function calls overhead.
Doing so also enabled turning entities update loops inside out: instead of looping over, say, every tank object to call its update method, I can now call a single tank update function that loops over every tank in the list. This considerably reduces the number of function calls, as well as enables haring common computations.
I also made all the viewport culling tests tighter and reorganized update functions to execute tests potentially leading to shortcircuiting as early as possible to prevent as many wasted computations as possible.

These optimizations have a drastic effect, enabling the game to maintain a smooth 40fps in all occasions, and spend most of the time at the maximum 50fps in the “let her rip” mode and allowed me more additions such as sound spatialization and making the viewport zoom out further, while getting better performance than before!

Another thing that continued to bother me was the game startup time (even though it was already quite quick) and the small delay when switching game mode on the startup menu.
This is caused by the time spent pre-baking animations, generating sounds, and loading the few actual assets.
I realized some assets did not need to be loaded at startup and could be loaded as needed when they would be first used.
I also made use of coroutines to spread initial baking over the first few seconds of the game.

These modifications make switching between modes instantaneous, and the game starts up in less that 0.2 seconds!!!
It’s so fast I removed any mention of “LOADING” from the startup screen ^^.
If you really look for it, you can actually feel the computation overhead occurring during the first few seconds by jumping in-game as soon as the game has started up, but even then it only affects the game for a second and is never felt again before completely restarting the game from the library. Otherwise, it’s completely invisible.

I’m really happy with these optimizations as they make the whole experience very smooth.

Misc

I added a content warning about screen flashing, and made the game honor the “reduce flashing” accessibility option by removing the impact frames on boosting and the explosions screenshake when the setting is enabled.

And as always, some gameplay footage tying everything up!

Files

rollerblade_dev.pdx.zip 316 kB
12 hours ago

Get RollerBlade

Buy Now
On Sale!
30% Off
$6.00 $4.20 USD or more

Leave a comment

Log in with itch.io to leave a comment.