You're stopping by to say hi and see what's going on with development in depth and in game. Not only will you be able to see all of the Patreon NSFW posts, you'll also be given access to the most recent version of A Very Full House. This is the tier if you want to stay perfectly up to date on development!
186 subscribers Visitor
Unlock
$11
per month
Delivery Man
You're stopping by to say hi, but with a purpose: buying Mira (Me, the dev) lunch! This tier has exactly the same perks as the Visitor tier, but you're paying the price of a large pizza. With your membership Mira can justify having someone else make her food and spend more time writing, drawing, and coding! This limited edition tier is perfect if you want to know exactly where your money is going and help speed up development!
Limited (27 out of 30) subscriptions
Delivery Man
Unlock
$15
per month
Friend of the Family
We're glad you stopped by, come on in and see what's going on! At this tier you receive access to all of the patron exclusive posts, access to the most recent version of A Very Full House, and the ability to vote in development polls! Polls will be held at least once a month, but sometimes more often if Mira needs lots of input. These polls are your chance to directly influence development and help decide what characters will be added to the game first, what outfits will be added for different characters, and what special events should be added into the game. This is the perfect tier if you want to directly help with the development of A Very Full House!
45 subscribers Friend of the Family
Unlock
$40
per month
Housemate
You're not stopping by, you practically live here! This tier includes all of the benefits enjoyed by the other tiers, plus a place for your name on the in-game patron thank you page! This is the tier if you want to be way too generous and really help speed up development!
3 subscribers Housemate
Unlock
Features
Gain access to feedback polls for each game update!
See work-in-progress and practice artwork from Mira!
Unlock bonus in-game content as a special thank-you!
Whew, it's been a little longer than I planned since my last post! After the release of v0.30 I was getting consistent reports of issues with the Android build, including reports from people who have been able to play without any issues before. I decided to spend a day or two getting to the bottom of the issue, expecting it to be some sort of minor Android setting or permission that needed to get tweaked.
Before I dive into my story, here are the links to v0.30.4. The links on the pinned release post have also been updated.
PC Mac Android This update includes some major performance improvements, particularly for low memory systems. If you're playing on Android the game will automatically launch into "low performance" mode. The default textures will be downsized from 4096x4096 to 2048x2048, and expensive menu animations will be skipped. The texture downscaling can take a minute or two to complete, but it only needs to be done the very first time the game is started. PC players can swap to low performance mode from the preferences menu.
As a quick benchmark, here's the RAM usage on the main menu (a worst-case situation, with six characters shown at once):
v0.30.2: 3.5 Gigs
v0.30.4: 1.5 Gigs
Now that the practical stuff is all out of the way, let's talk about why this took a week to get sorted out. Buckle up, it's going to get nerdy!
First up, I needed to get an Android testing environment set up to try and recreate the issue. Until now I've trusted Ren'py to spit out an Android version that worked equivalently to the PC version, but that wasn't going to cut it any more. I dove into the world of Android emulation and, after some trial and error, got A Very Full House running on the emulator BlueStacks.
With my emulated Android machine running A Very Full House, I needed to figure out how to get the crashing issue to trigger. I had been assuming there was some Android specific problem that my script-searching code was running into. Unfortunately, it seemed like everything was working as expected. I experimented with different emulator settings, different Ren'py settings, different device profiles, CPU counts, and rendering options. None of them produced the crash I was looking for.
After a day or two of digging through all of those options I stumbled on the cause: A Very Full House would crash (silently, to the home screen) if the Android device didn't have enough video memory+RAM. Setting my emulated system to a minimal amount of RAM I was able to finally get a reproducible crash.
Running out of memory for textures is an obvious crash source, but I had ruled it out right at the start. I had players who had played previous versions of AVFH, but were suddenly crashing on the new version. There shouldn't have been any increase in memory use between versions - the new additions for the MCILF all fit onto existing texture sheets. Why was the new version using more memory now?
Well, it turns out a Ren'py update had tweaked how Live2D textures were represented. Rather than storing Live2D textures as an "Image", which I had set to oversample (using less RAM), they were now being stored as an "UnoptimziedTexture", which you might guess is... unoptimized. The UnoptimizedTexture class still took the "oversample" parameter - so my didn't crash - but that parameter was ignored and full, uncompressed image was loaded into memory.
Once I figured out what was happening - which had taken four days at this point - swapping back to the Image class was fairly easy. This got us back to pre v0.30 levels of performance.
But I wasn't satisfied. Now that I had a solid test environment I decided to go further and trim the Android version down as much as possible. Most of the memory use for AVFH are the large texture sheets for the Live2D images. Oversampling the textures could reduce the memory use for the "surface" that Ren'py showed on the screen, but it couldn't help with the memory needed to read the file in in the first place. To do that I would need to downsize the textures themselves.
Luckily, Ren'py had added some tools for rendering out displayables to files. With some coding (which took two more days, including testing) I had Ren'py automatically generating it's own 2048x2048 texture set from the master textures included in the game. I considered including a pre-rendered set of 2048 textures to avoid the startup delay, but I wanted to avoid complications with exporting Live2D models. Having the smaller textures dynamically generated ensures only the most up-to-date textures get shipped along with the game, and keeps the file size small as an extra benefit.
So, that's what's been keeping me busy! I hope the new performance modes make for a smoother experience for all of you, particularly on lower resource machines. Tomorrow I'll be back with a patron focus poll, and we can get to work on v0.31!
SubscribeStar and its trusted third parties collect browsing information as specified in the Privacy Policy and use cookies or similar technologies for analysis and technical purposes and, with your consent, for functionality, experience, and measurement as specified in the Cookies Policy.