NokiMo
werecat
werecat

patreon


Progress Report

Man, what a month it's been... and we're only five days into it!

I'd hoped to spend today working on Day 15, but instead I've spent all this time in the engine trying to fix the latest batch of issues relating to the Model-Based Renderer. One of these issues was indeed a Ren'Py issue, however was fixed in a Ren'Py nightly which we shipped with this months 'a' update. The other however was a little more complicated... you may have seen my post about overwriting the game files. The crash on start up was caused by a file "./Renpy/Common/00shaders.rpy(/c)" which was removed from the Ren'Py engine back when 7.4 went live in January. This file was not only completely redundant in Ren'Py 7.4, but completely incompatible with the Model-Based Renderer. People who had been overwriting their Sileo folder since before the 4K update released would have still had this file, and thus, also experienced the crash. 

This led to another interesting discovery. First and foremost, Android was not affected by this crash because APK installs remove the existing data before installing the new data. The entire game is packaged within the APK with no separate or additional data held, so there was never an issue on that platform (which, ngl, makes a welcome change!). Over on desktop platforms, it was dead simple what was happening - people were simply overwriting old folders, meaning that redundant data never got removed. Except... what about those on the Itch client? You see, our public release through Itch can be installed and kept up to date through their client. Alas, the tools they offer are insufficient to host Patreon builds with, we have investigated, but I digress... the question was raised today 'what about those of us using the Itch client? what do we have to do?'. I hadn't had any specific reports of the crash where the game was installed via the client, but one would assume that the itch client removes old redundant data, after all, it even says that it does on the documentation! 

...yeah, I bet you can see where this is going. It doesn't. Not with manual uploads, not with their Butler command line tools, nada. Butler doesn't even have the capability to remove files not present in the latest master! Believe me, I spent hours testing, poring over documentation and scratching my head to figure that out for myself. So basically, the way the Itch client works will invariably have caused this problem for some, and likely has game folders full of old garbage files that break certain things, take up space and just generally become a nuisance. 

And with Sileo and Ren'Py being multiplatform software, it isn't as simple as running a batch script or anything like that. Ren'Py also lacks any sort of file management functionality out of the box. In fact, this is the extent of the built in file handling features Ren'Py makes available to developers. How dire is that? So then, what was the solution...?

We built new functionality into Sileo in Python. Yep. We damn well added the feature ourselves. 

So what we've got now is a simple compatibility system designed specifically to work around these issues and limitations. This system loads before Ren'Py even displays a window and checks for specific files and directories that are known to be problematic or redundant. If none are found, the game boots as normal. But any offending files found will be removed and the game then rebooted. And what does process look like? Nothing. All you will see is Sileo booting like it should. It may take a fraction of a second longer to load on account of the reboot taking place, but it shouldn't otherwise be noticeable whatsoever. 

As mentioned, it also effects redundant files we've specified for removal. We've asked a few different people to let us know what weird and wonderful files they have in their directories as we haven't kept a record of the things we've taken out over the past year, but hopefully once this system goes live in the next update, it will address a lot of weird behaviors and a lot of irritating bugs. (If you want to help us take inventory, hop over to our Discord and check the public 'report-a-bug' channel - I've dropped a comment in there about it which I'll pin.

All of this stuff will be going live in a 'b' update scheduled for release sometime soon. I'm informed Ren'Py 7.4.6 Stable will be going live sometime this weekend and we'd like to ship that along with our improvements. Hopefully it'll all happen on schedule and we can get this much nicer, more stable release in your hands as soon as possible!

Another change this update will incorporate is the option in-game to roll back to the old renderer. We know a small amount of people play on very limited devices who have experienced greater stability on the older renderer, so this addition is mostly intended for them, although it is a utility available to anybody experiencing technical issues with the new renderer. The old renderer will be removed from Ren'Py in a future update and thus, this option will not be available forever! If you need the old renderer now, you should endeavor to upgrade your device soon if you want to continue playing games built in Ren'Py. 

So, all in all, it has been a productive day, even if Day 15 didn't get any time spent on it. The day isn't over, perhaps it isn't too late to start? Either way, this stuff is all stuff that needed doing with urgency, and I'm proud of what we've achieved. Perhaps lady luck will have our backs and the 'b' update won't have any issues so we can focus on content? Fingers crossed!


Related Creators