Another month, another few steps forward in the development of Dehoarder 2.

After getting my open bugcount down to 6 and implementing a few more features, the last couple of weeks I have felt more in a content creation kind of mood. So that’s what I have been doing. I’ve finished the last of the 3D models, and Arvex will soon be finishing the last of the models that he is assigned as well, so at that point all 3D geometry for the game will be complete. At least, until I get really excited about some gag or joke and need a new model to support it, but that’s to be expected. At any rate, this represents the second major area of the game content that I would consider complete. The first was music, which was completed last summer.

Much of the remaining content work falls into 4 areas – the first is creating variant textures for many of the models. For instance, I have a model for a DVD case, but I need several texture variants for that which represent different movies. Next is finalizing furnishing placement throughout the house. This is already about 50% complete. After that, I need to finalize junk spawns – both for the initial junk generation within each room, and for the “junk fountains” throughout the house (drawers, cabinets, closets, storage boxes, etc.). Finally, there is story and event scripting, some of which is still dependent on some code features to be complete.

Speaking of code features, I currently have 16 of those left to implement. Many of those are incomplete or stubbed-out implementations of features, or existing features that still need a bit of an overhaul like gardening. I’ll be looking to work through these soon, since some of the content work is dependent on those features.

Once all except for the story scripting are complete, Dehoarder 2 will be ready for alpha. The full story will not be in the alpha version, mainly because I want a reason for people to come back for later releases! Other than that, though, the game will be gameplay complete.

One particularly frustrating bug I addressed this month was with the physics engine in Unity3D. I mentioned this very same bug in my last blog post. Sometimes, the engine would start barfing hundreds of errors with messages like “Invalid AABB”, crashing my framerate. I know that AABB means “Abstract Area Bounding Box”, but what I didn’t know was why one was suddenly invalid. This issue plagued my demo boxes during GDEX 2017 and was definitely my “#1 Most Wanted” bug to squash after the Eastman Party Event bug. I finally managed to catch the error in the act, and found that when the error deluge occurs, it is because some objects with Rigidbody components attached had their positions mysteriously set to (NaN, NaN, NaN). For those unfamiliar with NaN, it means “Not a Number” in floating-point terms. It’s the result of doing something like taking the square root of a negative number or trying to combine infinities. After trying to figure out what in MY code might be setting an invalid position like that, I realized that the engine WON’T let MY code set the position to NaN. I finally found an existing Unity bug report for the issue.

But here’s the most frustrating thing, more frustrating than the hours spent tracking this issue down: Even though this issue is a regression from a prior version of Unity, it has been added to the backlog instead of being addressed immediately. Now I won’t spend a lot of time on a soapbox here, but let’s just say that I’m someone who strongly believes that fixes should come before features, and it makes me mental when I see writers of software I use (be it Unity or a simple game) prioritize shipping new features over fixing old bugs, especially when those bugs directly affect me. I really hope this gets fixed soon, though I’m not holding my breath because this regression is almost a year old. I have a workaround in place now, but it’s a really ugly hack that doesn’t belong in a production-quality game.

One last note: Today is the day that support for iOS ends. I hope everyone was able to download and archive what was needed. If not, my best advice would be to get a cheap prior-generation Android tablet to continue enjoying my excellent library of 3 mobile games, as none of them are particularly performance intensive by today’s standards.