Fetish Master Legacy Edition - bugfixed 'classic' FM with dark mode support for Java 8+

As a whole, there hasn’t been a new release of the Fetish Master engine for ages - the in-progress 0.99 code was uploaded to GitGud back in 2017, and the last full release in version 0.985d was over six years ago. The git version has engine changes that break a number of mods, and some half-implemented features left some core functionality flat-out broken.

If you scroll through the Fetish Master subforum, you’ll see that I’ve already got my own version of 0.99 well underway, with a number of new features and bug fixes, but it also breaks mod support even further in some instances. It’s not a great base for people who want a stable install of every mod they can get their hands on.

Instead, I’ve put together this ‘Legacy Edition’ - a version of 0.99 that should support all the mods that worked on 0.98, while adding some of the bugfixes from newer releases, all tested to work with newer versions of Java than what the original game supported. As a bonus, this version includes a slight graphical overhaul and optional dark mode toggle by implementing FlatLaf theming. A rundown of major changes can be found below.

Proper event merging for multi-mod support By default the engine allows mod writers to append to events (like *event.walk*) by adding their own event such as *event_1.walk* and choosing to merge down. If two mods that extend the same event are installed, such as *event_a* and *event_b*, the 0.98 engine will show the same event twice instead of two different events; if three mods modify an event, one choice will show up three times, and so on. 0.99 fixes that, but none of the official releases ever did.

Support for OpenJDK and other Oracle alternatives Previously, running the game on certain versions of OpenJDK Java runtimes and other non-Oracle versions of Java would throw an error at startup due to an external library doing different things on different versions of Java. The game should now run properly on any Java distribution, as long as it's Java 8 or above.

Use standard .organ files instead of hard-coded organs One of the bigger changes in 0.99 was that all the organ files were written directly into the engine, rather than being loaded from the gamedata folder. While this is faster, it means that editing them would require editing and redistributing the game engine itself; this isn't a feasible solution for mods that heavily edit how body parts work, and breaks entirely if you want to use two such mods at once. This version still has the hard-coded organs, but will only use them if the necessary files can't be found in the gamedata folder.

Alternate themes and dark mode support Most of the game's interface is drawn based on the Java defaults for your system, which means a gray color scheme for Windows users and hopefully something matching your GTK theme for Linux users. By default, the game now uses a flat, light-colored theme from FlatLaf, with a toggle on the splash screen to use a similarly-flat dark mode. If you miss out on switching before starting your game, or if you want to switch back to the light theme later, you can freely switch between the two from the save screen. Note that your choice of light or dark theme isn't actually saved in your save file; you'll have to switch every time you start the game up. Sadly, Linux users will lose their fancy GTK-matching color schemes unless/until I add a button for system default skins.

Tweaks to panel layouts Some minor tweaks have been made to make certain editor windows a little more functional; namely, the character editor's DNA editor panel and the item editor's script/description editor boxes have some support for panel resizing, and the character editor layout as a whole now features more space for the gene list without altering the overall window size. The gene list in the character editor is also alphabetized on load, except in certain edge cases; pressing the Refresh button in the editor should fix this. Other minor edits have been made where necessary to fix alignment or improve readability.

Downloads
FM Legacy Core (v02a) - This zip contains only the dist folder, for people who want to drop it into an existing installation.

FM Legacy Full (v02a) - This zip contains a full version of the game based on 0.985e, with the updated engine installed. No other mods have been installed.

The password is fmaster for both zip files.

You can view the source code for this release here.

Caveats, warnings, etc.

  • This won’t work if you’re still using Java 6 or 7, because the theming library requires Java 8. Honestly you should probably be running Java 8 or newer just for security reasons anyways.

  • This should work with all existing 0.985e saves, but it’s always good to back them up first. I haven’t tested this extensively.

  • This is not compatible with my 0.99 engine, and will likely break saves if you’ve been using any other versions based on 0.99.

  • Do not use the dist folders from any other mods alongside this one, as it’ll overwrite the core game engine with an older version. This is probably only an issue with Maternal-Reads’ mod.

  • You may see warnings about illegal reflective access operations at startup on newer versions of Java. This is normal and (currently) won’t break anything.

As always, if something goes horribly wrong, just let me know and I’ll see what I screwed up this time.

13 Likes

@Loner29 This might be what you’re after, assuming you’re running a recent version of Java.

Also, dark mode players might want to delete empty_background.jpg from the gamedata/img folder, so that the game isn’t rendering a big, brightly-colored box whenever it can’t find an image.

Oh my god. Thank you for never forgetting about this weird and wonderful game

I’m really glad you made this! 0.99 has a lot of nice features and runs much faster but the amount of mods it broke made it a hard pill to swallow. It sounds like this will let us enjoy the best of both worlds, 0.99 features with support for 0.985 mods. I only wish the FM community was larger so more people could appreciate all the work you have been putting into all of your FM projects.

Now I just need to figure out what mods I want to install and give it another run.

AMAZING, MISSION COMPLETE

THAT RIGHT THERE IS WHY YOU’RE THE BEST BOSS

I’m so glad this game keeps getting fan support, many thanks and blessings for bestowing this upon us

This version has 0.99’s bugfixes, not 0.99’s features (aside from what’s listed in the OP like if you consider proper mergedown a feature and not a bug fix). I believe the content is still based on 0.985e

It’s a bit of both, really. All of the engine code h.coder added to 0.99 is still there, so you get the neat management stuff like being able to see when proxies are away, setting nicknames, and the option for a proxy to use items directly from the house storage. Even the hardcoded organs are still there, it’s just that the game will only use them if there aren’t matching organs in the gamedata folder.

Actual game content hasn’t been updated from 0.98’s last patch; the stuff committed for 0.99 was largely unfinished, broken, or inconsequential enough that I didn’t worry about it; mostly, that amounts to setting up a matron at the house, plus a new job in the red light district that needed some tweaking to go past the intro and didn’t really have much content.

1 Like

So what would i have to do to make my new mod (which edits some organs extensively) work with the hardcoded organs?

Depends on what you want to do.

If you just want your stuff to work, thow your organs in the organs folder as usual and the game should use them instead of the hardcoded stuff (and if it doesn’t, I screwed something up).

If you want the speed boost from having your organs hardcoded, you could send them to me and I could do a compiled build with them, but that gets back to the standard 0.99 problem - people have to be using that JAR for the hardcoded organs to work, and either it’s usual 0.99 behavior where no one can overwrite those organs, or the behavior of this build where a stray overwrite from another mod will take priority over the hardcoded organs here. Since a lot of mods aren’t going to be compatible out-of-the-box with your overhaul I suppose it’s less of an issue than usual, though.

If you want to try hardcoding the organs yourself, it’s not that difficult; if people want one I can put together a quick how-to on compiling from scratch, which is rarely more difficult than unzipping the source → installing netbeans → having netbeans open the source folder as a project → pressing F11 to build, although there are some quirks that might pop up along the way. Editing the hardcoded organs is more or less the same as editing the organ files, just without the benefit of the engine’s built-in tags, and an extra layer of formally defining your code so that the Java compiler doesn’t throw a fit.

Yeah i only want it to work haha

I think i requested a few quality of life changes so I’m wondering if you added them in at some point?

  1. Alphabetical the gene list when you look at a specific character.
    2.in that same place, make the skinny window able to be resized so i can see the full name of long stats

Both those things would make modding easier

1 Like

My only criticism of this fantastic edition: The code window for items is too narrow on my low res monitor. I tend to do quick edits to item script in the game so I appreciate having a good view

Alphabetizing the gene list probably wouldn’t be too much work. Resizable windows, slightly more complicated, but probably not too difficult.

I’m kind of at the mercy of Netbeans’ UI builder for interface stuff, which doesn’t always work the way I expect it to, so proper panel and button proportions are also a pain in the ass. I’m gonna keep on tinkering with it, at least. Some of the UI problems are less about resolution and more about how the form builder thinks I want the layout to work (I just realized while I was trying to work last night that the item windows were screwed up, and I haven’t even touched those specific forms), but I’ll try testing thing out in 720p, etc. as well.

1 Like

A new release (v02) has been uploaded - check the first post for download links.

Changelog

  • Gene panel in Character Editor now alphabetizes on load. In edge cases where this doesn’t happen automatically, the refresh button should do the trick.
  • The Character Editor has been slightly rearranged, in order to give the gene panel more room.
  • The gene panel in the Character Editor and consume script/text panels in the Item Editor feature limited resizing support, in that one side can be horizontally shrunk or expanded with the other side growing or shrinking proportionately. This should make it easier to see what you’re doing, especially on lower-resolution screens.

There’s still (at least) on UI quirk I didn’t notice before uploading, in that the ‘return force’ textbox in the Gene Constructor clips down into the force multiplier box, but this shouldn’t really affect functionality and it wasn’t worth scrapping what I’d already uploaded.

EDIT: Fixed the Gene Constructor issue, made a couple other tweaks so that the time/priority boxes in the event and template editors are a bit more legible, plus a couple realignments of buttons or text strings. Download links have been updated.

2 Likes

“The one and only.” :relieved:

so is this completely incompatible with maternal reads mod?

It should be almost completely compatible - just don’t use the dist folder from that mod, as it overwrites the game’s main file. The dist folder shouldn’t have been included anyways as it’s identical to the vanilla release. If you already have a modded game with maternal-reads’ mod installed, just overwrite the dist folder with the one from the fm-legacy-core.zip from the first post, preferably after making a backup of your game folder just in case.

Are you accepting contributions?


ive tried running this on multiple different java versions, all the things are blank and most of the buttons don’t do anything. there are no errors being thrown.

I’m not sure how much I want this build to differ from the vanilla game, but I’m not going to turn anything down without consideration. If you’ve got something thought out or already coded, feel free to share here or send a pull request through git.

To do just about anything in the character management menu, you’ll need to actually select a character first. Click on Brody and see which options start working.