Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(+1)

Great game, love the writing, love the art!

### Memory leak

There is a memory leak when running on Ubuntu. Memory usage climbs until the process is killed or the system crashes - I have seen ToA use 6GB+. Could be loaded resources are not being released?

### Borked Linux packaging

When attempting to run the Linux version, the following error occurs. Note that running the jar directly using the system-installed Java works just fine.
```

$ ./TalesOfAndrogyny  

jre/lib/amd64/server/libjvm.so: cannot open shared object file: No such file or directory
Error: failed to load VM runtime library!

```

### System info

Ubuntu 21.04, OpenJDK 1.8.0_292, with OpenJFX installed.
Note that the game will not run using OpenJDK 11 due to JavaFX not being bundled with the JDK anymore.

### Suggestions

I am a software engineer, so I have a couple of suggestions if you are interested:

1) Bump the Java version to latest LTS release. Java 11 is supported through 2026, Java 17 (the next LTS version) will be released in a few days.
  - This may or may not fix the memory issue, but newer versions of Java do bring other nice things - language features, packaging, etc.

2) Pull in JavaFX dependencies via gradle. There is a gradle plugin for doing this that you may be interested in: https://openjfx.io/openjfx-docs/#gradle
  - Newer versions of JavaFX have many new features and bug fixes, potentially improving memory usage.

3) The `jpackage` tool was introduced in Java 14. This tool can create installers for any platform and bundles the JRE with the application. This is very nice from a user perspective since ToA would behave like any other app - no need to download Java first, able launch from spotlight/start menu, etc.
  - I have used a gradle plugin to package JavaFX applications and it went very smoothly: https://badass-jlink-plugin.beryx.org/releases/latest/

4) Place save/config data in the expected platform-specifc directories instead of dropping data in the current directory. There's even a library to fetch these directories:: https://github.com/harawata/appdirs

(+1)

I recently bumped up the versions of various dependencies, including the packaging tool (packr), and the Java version is next. We've been debating putting the user specific files in a user-specific folder, but there isn't actually an industry standard place to do that on Windows - different games drop their save files in Documents, My Games, and AppData, and Steam games typically drop their save files in the Steam userdata folder! Given that this is also a porn game, I would rather people not be surprised to find their save files give them away even if, for instance, they delete or hide the folder or directory containing the game files. So it's not as straightforward a decision as it seems.

(+1)

Yeah the location of application data on Windows is a mess, and you make a good point about users potentially wanting to hide the game.
To be pedantic, there is documentation from Microsoft as to where files should be placed, and there are standard locations for macOS and Linux as well.
Not a my hill to die on, just pointing it out :smile:

Fingers crossed that updated dependencies and Java will fix the memory leak without any extra effort - memory leaks can be really *fun* to track down :laughing:

(+1)

Yeah, I've just seen people get mad at save files being in %appdata% before. Like I said, I was debating it, but I do want to give some time for the dust to settle re: the recent other changes.

I'm actually working through updating to Java 11, and trying to fix the Mac and Linux builds as well.

(+1)

Alright, confirmed the Linux build is working on Ubuntu. Might also start distributing it as a tar.gz.