Page 2 of 2

Re: Furblorb

Posted: 04 Nov 2025, 15:24
by Nuntis

Very nice. I admit, when I committed the change to the apply-buff command, I was quietly wondering how long it would take for this to show up in your codebase... I'm impressed you're still interested in keeping up. Out of curiosity, what's the reason you made the tool?

If there are particularly interesting features you're missing from the CLI tool, they could be ported over... though if it's more a case of scratching an itch, then by all means :)


Re: Furblorb

Posted: 05 Nov 2025, 02:27
by SyntacticKitsune
Nuntis wrote: Yesterday, 15:24

Out of curiosity, what's the reason you made the tool?

So the reason I originally made this tool was because running Finmer (and its editor) through WINE was kind of tedious (especially if I just wanted to Right-Click -> Unpack Furball other peoples' projects to see what's inside), and there wasn't a CLI back then. (I believe this might have also been before I joined this forum.)

I also saw making Furblorb as a kind of challenge — I had to understand and recreate the binary (de-)serialization code in Finmer's codebase, which is written in a different programming language (although not that dissimilar from Java), and which I had previously little experience with.

I also had a somewhat unique programming background in that I had previously done Minecraft modding, which has DFU and its Codecs that can (de-)serialize in any structured data format there's a DynamicOps for — inspiring Furblorb's Codecs and SequenceCodecs. I had also worked on projects involving some other games' binary data formats, one of which was turning a voxel game's worlds into Minecraft ones and back, and another being a save file disassembler for a text-based C# game with seven bit int serialization. Those had given me the knowledge for how to work with binary data in Java — which was mostly 'throw it in a ByteBuffer and pass that everywhere' because DataInputStream sucks — and how to work with C#'s binary data, in particular its seven bit ints and different endianness. I still got absolutely destroyed by those GUIDs though, and I don't think I will ever understand why they went for that set of data types (rather than two longs or a byte array).

Later I decided I wanted to see if I could get Furblorb to read and write Finmer's save files, as both an opportunity to learn Finmer's save format, and as a way to be able to edit them — although I don't remember if I ever did edit any. Regardless, this does now put me in the unique position of being (I think) the only other person who knows how both of Finmer's binary data formats work. (And gives me ideas for Lua tables in save data without obliterating the format version — but that'll be a future thing if I get around to it.)

Nuntis wrote: Yesterday, 15:24

If there are particularly interesting features you're missing from the CLI tool, they could be ported over...

I think currently the only features Furblorb offers that the CLI doesn't are:

  • Showing save information (name, place, format version, stats, progress)
  • Converting save files to json and back (which is clearly used for cheating but I guess could also be useful for debugging custom modules? Honestly there's very little reason to cheat since the game already lets you have an optional accessory that trivializes everything)
  • Module data shuffling
  • Reading and writing furballs in any released format version
  • Editing furball metadata without writing the furball as a project first
  • Sorting furball assets so furball asset order doesn't depend on the order the filesystem returns the files in (or maybe Finmer just does this now — I haven't checked in like a year)
  • Inserting/extracting/deleting single assets in furballs

Most of these are either fairly niche (editing furball metadata as an intermediate step) or an unmaintainable nightmare (writing furballs in any format version), however showing save information could be a good addition (probably without the progress listing). If Finmer doesn't sort assets then that could also be a good addition — it would mean that building the same project will result in the same furball across any computer and OS. (It should also be both backwards- and forwards-compatible.)

Although I think regardless of what the CLI becomes capable of I'll probably stick to using my tool as it doesn't require booting a VM or running through WINE. If Finmer ever got a cross-platform build on the other hand... (Ah yes, let us simply port Finmer to Avalonia and .NET 10 or whatever the latest is, this will definitely not be a colossal waste of time.) If I ever write another module though I'll probably just suck it up and use the editor, because currently I'm tired of hand-writing magic json files.