Hi, I may be a bit late (only by around three months), but I've finally gotten this project into a decent state. For those who have somehow not forgotten, this is that project I mentioned in the DeepForest thread that effectively duplicates part of the editor.
So here's Furblorb. It's a command-line tool for turning furballs into projects and back, among a handful of other things. It's written in Java, so it can run wherever Java can (this includes toasters and apparently, debit cards). I originally created it back in December.
Here's a list of Furblorb's capabilities:
- packing and unpacking furballs
- upgrading/downgrading furballs to/from other format versions (note that it doesn't fill in new data for you)
- analyzing furballs -- that is, showing information about a particular furball
- changing the title, author, and dependencies of furballs
- inserting, extracting, and deleting assets of furballs
- theoretically, merging two furballs together (although it won't like, apply scene patches for you)
- shuffling the contents of furballs
That last one is pretty fun actually. It allows one to create a furball where the string tables, item names, etc. have been shuffled. It's reminiscent of Undertale corruptions, for anyone who knows what those are. A warning for the string tables one though: it renders the disposal toggle beyond useless, since disposal scenes can be shuffled such that they display for e.g. the intro text. Anyone who doesn't want to see the disposal stuff should probably stay away from furballs shuffled in this way. It's hard to filter disposal scenes out since the only identifying information is the key -- the only proper way to figure out which texts are for disposal scenes is via some kind of code analysis; anything else would be a heuristic (like checking if the key includes "disposal"). I'd attach a shuffled furball to this post, but it seems the core furball is just barely too big.
Anyway, Furblorb's main capability is basically just doing the editor's job for it. The program will very likely not be useful to those who are already using the editor. And since it only has a command-line interface, it's not terribly easy to use for someone unfamiliar with them. The only real reasons to use Furblorb are:
- If you're not running Windows and can't be bothered to run the editor via Wine (I'm in this group)
- If you want to pack/unpack furballs from the command-line, say for scripting or automation purposes (although theoretically Finmer will eventually be getting its own CLI for this)
- If you want to make use of Furblorb's more bespoke features
Furblorb has been tested extensively -- it can unpack and repack the Core module and get identical results (aside from asset ordering), and it's been used to create DeepForest's furball. It also has some format checks to ensure that e.g. scene patches don't have scene-level scripts.
Furblorb's repository can be found here, and its releases can be found here. It needs Java 17 or newer to run.
While I'm here, I'd like to point out a very funny furball deserialization edge-case. I'll just attach a furball to this post since I'd rather not immediately spoil it (see "Broken.furball"). Just load it up (if you have "DeepForest.furball" installed, make sure you move it outside of the modules folder first) and watch Finmer regret reading it in real time. When you're done, here's a description of what's going on: C# doesn't automatically safe-guard against "invalid" (i.e., unnamed) enum constants, so they can leak in if unaccounted for. I specially-crafted this furball to contain undefined compass directions, which Finmer really doesn't like. Basically, Finmer doesn't protect against invalid enum constants in its furball deserialization code (although it does in its json encoder).
Oh yeah, another thing: where did the name "furball" come from? I couldn't find any information on that (I might be blind though). I've speculated that it comes from "tarball", but perhaps there's a different reason (or no specific reason at all).