A technical rundown of how level transitions work in SkyCrawler

It's a little sad that there aren't many technical posts here...

When I was designing the levels, I tried to make them flow one into the other and feel like a unified whole. My thinking was: "if you have some parts of your level that don't change between levels, and if you never take away the control over the player character, then the level structure will be intuitive for the player from the first look". And the feedback I had makes me think that this thinking was on point.

lvl_stillcase2.gif

To do that, I chose a hacky solution of keeping each level in a separate scene, and making the player character persist between scenes (DontDestroyOnLoad in Unity). That was a familiar solution and it generally worked. It also could naturally feed into the gameplay - once the level is finished, the gravity is set towards the central platform, while all other platforms play vanishing animation and then are destroyed. And once you touch the central platform, a new scene is loaded, and all the platforms play their appearing animation.

promo_post.gif

That would mean that I need some elements to be in exactly the same positions in all scenes, but it wasn't the problem since I made all the levels by copying the previous one and then modifying it. More annoying was the fact that it resulted in little but noticeable stutters when a new scene was loaded into memory. Plus, scene transition would eat all the sounds and particle effects that were playing (but it only occurs in first level because level transition there is instant).

Still, it worked good enough for the jam, and I didn't want to risk breaking it. And now I have plenty of time to implement it properly in post-jam updates.

Stay tuned for the part 2 of this rundown, in which I'll tell how I reimplemented level transitions in an upcoming post-jam update. Also, check out my game, SkyCrawler: https://ldjam.com/events/ludum-dare/47/skycrawler

art_promo2.gif