Hey Everyone!
As you might have noticed, we've promised to bring the game to Nintendo Switch. We've been hard at it, and the work is finally bearing fruit! 🎉
It took me an entire day JUST to set up our dev environment to build for the platform, fix up some PC-only code that wouldn't compile on the Switch, and disable several features that aren't implemented yet, and then.....
IT BOOTS!!!
But we immediately hit the first problem - the joycons don't work and the game only responds to touch-screen, so we can't even get past the main menu T_T
We're using a 3rd party framework (ReWired) so I had to go digging through support docs and the super secret forums to find the updates necessary. After another day messing around, it worked! The whole prologue you see here on itch, is now jankily playable on the Switch!
But that's not a cause for celebration just yet. As some of you may know (especially after the, ehm, Deadly Premonition 2 debacle), the Swatch isn't exactly the most powerful console. So our game did not run as well as I hoped. In fact, just raining in place was dropping the FPS by half (!). Heck, neverminded raining, even THE FLOOR killed our FPS.
WHAT THE FARK???
Thus ensued the week of madly reading through the Swutch Docs, watching various "Unity Optimization Tips" GDC talks, and getting chummy with the Unity Profiler that tells us exactly where our bottlenecks are. So, what kind of changes were necessary to make the game playable?
Drop Bloom and Ambient occlusion - as much as I wanted this to work, it just eats up way too much of the GPU time 😢 I tried 2 different alternate Bloom solutions, but they performed even worse than the built-in Unity one. Welp!
Drop general settings - texture filtering, shadow quality, etc. Those helped a bunch and, due to the game's simplicity and Smitch's small screen (in handheld mode), they aren't too detrimental to player experience. I found a good compromise between quality and performance that's roughly equivalent to the "medium" settings on PC 😄
Get rid of the rain puddles - no really, those EAT the frames per second for breakfast. I haven't figured out a good replacement for them yet
Replace 3D particles with 2D (rain and fire) - this was again a frustrating decision, but I experimented with so many variants of our 3D particles, different settings for transforming them, caching, materials.... but it just hits the FPS way too much. The oil fire mechanic is probably one of the most fun to use, but not when your FPS drops to 15. Ultimately, I replaced them with circular sprites that resemble the 3D ones. I'm actually happier with the result than I initially expected to be!
Pooling and caching objects - the TL;DR is that creating and destroying objects on the fly is very no bueno on lower performing systems and can cause micro-stutters. So a lot of objects are now pooled (i.e. there is a fixed amount of them that keeps getting re-used) or pre-cached (I.e. they are all created at start and kept inactive until needed). This keeps the FPS more consistent throughout.
With all this work, the initial Wedding scene went from very unpredictable 15-40fps range, to a solid 55-60fps no matter what you do or what power you use 🥳
The work isn't done quite yet - there are a bunch of bigger levels where the FPS still tanks for other reasons (such as having TOO MANY hoomans at the parade), so there's some levels-specific optimizations we need to do. There's also certain mechanics that still create tons of objects and need to be pooled (such as turrets - yes we have turrets in the game, what did you expect?). And we're still missing features like actually being able to save the game 😅😅😅
That's all coming next, BUT the good thing is, the game is now at least fully playable on Switchuwu, and I have a path laid out in front! It's now just a matter of sitting down and getting it all done 😁
----
Hope you enjoyed the little progress update, and if you have any questions, just comment away!
Cheers,
- Koob
0 comments