Bird Gym, Transitions, and Refactoring Hell


It's hard to show off progress when you're working on the same parts of a project over and over, sometimes referred to as "refactoring hell". While most of my effort has been spent refactoring and polishing the current first world and minigames, I was finally able to add a new game mode and minigame!

Transitions

A few months back, Mark LaCroix added image table transitions to Noble Engine! This has allowed for custom transitions vs the common ones that were included with the engine (dip to black, etc). Initially I had some pretty major struggles adapting these new transitions to the game since there were some CPU inefficiencies in my project. After re-structing/fixing some areas, I was able to get the transitions to a place where I am happy with.

I created transitions for going between the delivery truck on the world map, Stanley (the player), and bird minigames. Truck to man, man to bird, bird to man! I also captured the flip state between these modes so if the player or delivery truck are facing a certain direction, the transition will reflect this.


The final issue was a periodic crash with the new image table transitions. Raised this as an issue in the Noble Engine Discord thread and apparently a few others had experienced the issue as well and hadn't reported it yet. The error:

Update error: libraries/noble/Noble.lua:269: attempt to index a nil value (upvalue 'currentScene')
stack traceback:
    libraries/noble/Noble.lua:269: in field 'transitionMidpointHandler'
    libraries/noble/modules/Noble.Transition.lua:115: in field 'fn'
    libraries/noble/libraries/Sequence.lua:359: in local 'callTimeRange'
    libraries/noble/libraries/Sequence.lua:368: in method 'updateCallbacks'
    libraries/noble/libraries/Sequence.lua:81: in field 'update'
    libraries/noble/Noble.lua:311: in function <libraries/noble/Noble.lua:308>

Thankfully developer Igor (stiv-iv) came to the rescue and after a few bouts of fix testing he was able to resolve this periodic crash in this pull request that will likely be rolled into the next Noble Engine update. Thank you again, Igor!

Animated Button Indicators

Back in the released Winter Update, I had added button indicators to the minigames and level 1 as a way to help players understand what the controls were vs putting them through tutorial hell for every single little thing. These button indicators were static and in some cases weren't eye catching or apparent in what they were trying to relay.


Old static button indicator.

I had one player ask me if the cat minigame was beatable. After I explained you needed to push A repeatedly to fly, he understood and was able to beat that minigame! At this point though, I knew I should approach animating the button indicators for better visibility and direction.



New animated button indicators.

Bird Gym

Added a whole new game mode called the "Bird Gym" which is very much in the WarioWare spirit. This mode is a string of the mini games seen from the core platformer part of the game where you try to push a high score. The plan is for this to be an unlockable game mode after you beat the core game and collect all the shiny feathers. There was a ton of work I had to do on the current minigames to make sure they worked both in the core game and the bird gym.


Weightlifter GIF is a placeholder asset. 

One of the major challenges was how to approach speeding up the mini games. After participating in the weekly Discord EU community hang out, developer Drew-Lo (aloebach) shared his approach to speeding up mechanics in their WarioWare like game, Mobware Minigames. Essentially the approach is using frame timers vs standard timers and increasing the FPS to achieve a clean speed up. After converting my timers used in the minigames and converting milliseconds to frames, I found it worked perfectly! It was very lucky that I had dropped the core game from 50 to 30 FPS after seeing performance issues with parallax and snow running at the same time. Since neither of those are used in the minigames, that gave me 20 FPS to work with incrementally to achieve the speed up mechanic. Thank you again Drew-Lo for the suggestion!

New Minigame

Aside from the Bird Gym, I've been stuck working on the same set of minigames that I had developed during the game jam. I wanted to give myself the opportunity to make a new minigame now that I had much of the foundation in place to support both game modes. This one is pretty simple, and really I just wanted an excuse to use the microphone for one of the minigames. 

Like the worm minigame, it's not a game where you have an immediate threat of dying... But you do run down the clock the longer you wait. You simply give your best "Caw!" into the mic to beat the minigame and progress forward. The idea of someone playing the core game and having to belt out an unexpected "Caw!" for the first time brings me much joy :D!

Bugs/QoL Fixes

  • Adjust timers to be centered correctly. Had a rushed work around in place from the jam where I'd move its position manually when in single digits.
  • Minigame directions text flash prior to the minigame starting vs being a static part of the background.
  • Fall death sometimes didn't reset the game timer, causing the next play through to bug out.
  • 8bit font added for use in minigames and direction text vs being static to the background images.
  • Return to Title added to the pause menu.

Future

I can finally see the light at the end of the refactoring hell tunnel! I still have a small laundry list of things to visit for the core game and world map, but after that I plan to dive into developing world 2 and more minigames. 

If you have any ideas always open to input! I also post to a devlog on the Playdate Squad Discord more frequently. Thank you for your time and interest!

Get Suddenly Bird

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.