Devlog: Controller Support (and why Amir 7 is delayed)


Hello Itchy People!  This is a more indepth look at what's been going on with the game backend if you're interested in the meat and potatoes of game development when you're kind of learning by the seat of your pants.

So one of the reasons I’m delaying the next chapter is because of how much work adding controller support to the game has been.  I started work on it back around Amir: Chapter 6 and have been toiling with it behind the scenes since then.  

Ren’Py does offer built-in controller support, but it’s rudimentary and very difficult to configure on the back end without delivering a lot of customization options to the player.  Accessibility has always been a top consideration for me, and while sometimes making things fully accessible isn’t possible, I knew the controller situation could be improved upon.  Additionally, I’ve wanted TCM to grow past the Ren’Py form factor as much as it could, and I’ve been pushing the Ren’Py system hard in terms of what it is and isn’t meant to do- especially in the GUI/UX arena.

One of the bigger challenges I had with the menu system was button focus, and I ended up implementing something that worked but was overly complex and ran the risk of some instability.  Keeping focus order when toggling through the menu was quite challenging, especially when scrolling containers were present.  Another thing I wanted for a long time was the ability to include a virtual keyboard so that when the player makes a character, it can all be done from a controller if desired, instead of requiring a keyboard for text entry.  And of course, I really wanted players to be able to remap buttons if they wanted to.  I have really strong opinions on controller remapping in my normal life as someone who plays video games, and I want to be part of the push in gamedev that’s making this a standard feature these days.

So with that in mind, I spent a lot of time tackling these issues.  I added and styled a virtual keyboard, rewrote code for better viewport scrolling and focus not only on the credits page but also on the history screen as well.  I added button remapping and reorganized the options menu to intuitively fit a screen in for it.  With all this groundwork in, I also decided to deviate from Ren’Py’s default controls and set the initial controller map to mimic most mainstream titles to make the controller feel as natural as possible while still giving players full control to make adjustments.  

There were a lot of bugs and tweaks during this process that had to be wrangled (you can expect a full breakdown with the next update’s changelog), but I had issues with the remap screen reading duplicate inputs for the same buttons, some clashes with old code, and some redundancies that left the game vulnerable to bugs later down the line.

One of the things I learned in this is that Ren’Py sometimes needs to be forced to recompile its scripts.  After banging my head against my desk for several hours one day trying to understand why certain actions weren’t firing correctly, I recompiled the code and bam, everything worked.  Honestly, it’s one of the first steps I should have taken in troubleshooting, but I got ahead of myself trying to analyze the problem instead of checking my basics, and paid the price for it in deep frustration lol.

While the overarching structure for this is all finally in place, I have about four or five persistent issues that I’ve decided to hire on help to fix.  For those who don’t develop Ren’Py games, Feniks is probably one of the most prolific community pillars.  They’ve created a huge library of high-quality, commercial project-ready plugins for Ren’Py that I- and a ton of other games- use heavily.  Frankly, I can’t praise their work enough, and if you do any development dabbling, you should immediately check out their page: https://feniksdev.com/navigation.

They really have everything from basic tutorials, organization, and control flow to variable pronoun plugins, colorizing tools, achievement hookups, gallery structure, and more.  For those of you who have been following TCM for a while, you might also remember that Feniks built the game’s main menu system- including the achievements, gallery, and music player- and they’ve really helped a ton with fleshing out the full game experience.

All that being said, a big part of deciding to push back Amir 7- on top of just being insanely busy this time of year- is that I’d really like for the controller support to be fully operational before releasing and I need some time to make that happen.  This is a big upgrade to the game and a step closer to the most professional-grade, high-quality experience I can offer, so I’m very excited and anxious to see it implemented and stable.  Additionally, this will change TCM’s distinction on Steam to Full Controller Support and allow me to reapply for a Steam Deck Compatibility review in an effort to open up TCM to more algorithm success on that platform.  As of right now I haven’t chosen a specific date as a goal for Amir Chapter 7 (I had originally slated it to come out towards the end of November) but it shouldn’t be a tremendously long wait.  Most of you know that I’m pretty tight lipped unless I have objective facts- I’m paranoid about making promises I’m not able to keep or need to be adjusted a bunch, etc. 

Also another point of note: thank you to my supporters on patreon and on TCM's new etsy shop as these funds directly help with things like: hiring an expert to come and clean all the bugs that made me cry :D

That being said, I do appreciate how understanding everyone has been and ask for just a little more patience.  Also, there’s always silver linings to delay- this gives me more time to fully immerse myself in whole-script editing from the beginning, which is something I had scheduled closer to exiting early access on Steam.  

Leave it to Amir to edge y'all.  What a tease.

Get Tri City Monsters

Leave a comment

Log in with itch.io to leave a comment.