TaleSpire Dev Log 485
Heya folks,
What a… week? Month? It’s been busy, that’s for sure. Every time something goes sideways in the content system, I end up disappearing for a while until I crack it. I find it just so fiddly to get right!
Case in point: the crazy memory leak bug we squashed today. It slipped right by me, even with our testing routines. With the number of miniatures I usually have installed, it just didn’t show up that clearly. That said, we’ve received excellent bug reports from folks, so there were definitely opportunities for me to have caught it sooner. One of the downsides to working on a larger feature, I guess.
Now, however, we are right back into small features and fixes. We’ve got one coming out tomorrow with a few bug fixes:
- One bug where the last dynamic tile or prop deleted from a zone (a 16x16x16 unit region of the board) left its colliders, making a weird invisible barricade that was very confusing during play
- Another where the players were allowed to change who the party-gm was. That definitely wasn’t meant to be allowed
- And lastly, a fix for an issue where unsubscribing from community content would fail to delete the files behind the scenes.
That final one was especially annoying. To memmap a file in C#, you do this:
using var mmf = MemoryMappedFile.CreateFromFile( filePath, FileMode.Open, null, 0L, MemoryMappedFileAccess.Read);
using var mma = mmf.CreateViewAccessor(0, 0, MemoryMappedFileAccess.Read);
using var smh = mma.SafeMemoryMappedViewHandle;
byte* ptr = default;
smh.AcquirePointer(ref ptr);
Now the three principal objects are all disposable, and the using statement ensures they will be disposed of at the end of the scope. However, once you’ve called AcquirePointer, you have to make a release call for it, even though you are already disposing smh. If you don’t, it leaks the file handle, and the file is essentially locked. Blech.
Simple enough fix, but damn.
On the feature side of things, I’m working on adding a setting to control where photos taken using the in-game camera are stored, as well as an easy way to browse them. I’m done with the UI and settings code, but I need a way to open the native system file dialog so you can pick the folder. Alas, Unity doesn’t have this, and the C# framework doesn’t have good cross-platform offerings either. Luckily, there seems to be one Unity package that has already done the hard work, so we’ll purchase it and see if it does what we need. I’m not sure how it’ll interact with Proton (on Linux), but we’ll see!
Another feature I have just about finished is the ability for GMs to pick a ghost miniature and have it take you to the pack in the community browser that contains it. Super handy in certain situations. It’ll start out working only for community content, but we’ll make it work for HeroForge and TitanCraft in time as well.
I think that’s all I want to ramble about today. We have the bi-monthly banter on Friday, I’m looking forward to that. Hope to see some of you there!

Guest
UserGuest
User