Tool Others AVN Game Launcher [1.1.0]

p1n3@5573

Newbie
Feb 6, 2023
54
131
Screenshot from 2024-03-05 19-22-39.png

AVN Game Launcher
Simple app for managing your AVNs, tracking play time, automatically checking for updates


Features:
  • Start game directly from AVN Game Launcher (obviously, its in the name)
  • Automatically check for new versions of all your games
  • Fast update checks
  • Automatically track play time (if game is launched from AVN Game Launcher), desktop only
  • Automatically find games locally
  • Searching/Filtering/Sorting
  • SFW Mode (this is more a joke then real feature). Replaces images with random image, and replaces game name with random phrase
  • Game update notifications
How To Use:
  • Copy game f95 thread url or game id form the url, and paste it into the first field in the import popup.
  • Click edit game to add path to executable of the game.
    • Add path manually or use "Detect Game Executables"
    • For autodetect to work, you first need to add root directory where all your games are located in the setting
    • Autodetect only detects games if the name of directory directly in games root dir matches exactly to the name in the AVN Game Launcher
      For example:
      Game name: "Being a DIK"
      dir: C:\Users\user\Games\Being a DIK
      This can then contain as many subfolders with executables, exe files will be searched automatically, for example
      works:
      - C:\Users\user\Games\Being a DIK\BeingADIK.exe
      - C:\Users\user\Games\Being a DIK\BeingADIK-0.10.0-pc\BeingADIK.exe
      - C:\Users\user\Games\Being a DIK\BeingADIK-0.10.0-pc\BeingADIK.exe
      doesnt work:
      - C:\Users\user\Games\BeingADIK\.....
      - C:\Users\user\Games\being_a_dik\.....
      - C:\Users\user\Downloads\Games\Being a DIK
  • When new version is detected update icon will appear on that game (bottom right corner).
    • Available version will be shown in brackets next to the current version.
    • Clicking on that icon will set available version as current version
  • You can click anywhere on the game to launch it. Top bar will have message "Playing {game name}"
  • There are 3 available statuses for games, you can use them however you like, i use them like this:
    • "Playing" - games that i am actively playing
    • "Waiting for Update" - games for which i completed available content, but game is not completed yet
    • "Completed" - games that are completed (by dev) and i completed playing it
  • In Edit Game popup games can be archived. Archived games don't appear with any other filter except "Archived Games"
  • In sort dropdown, clicking selected option again will invert sort direction (ascending, descending), indicated by the arrow
  • Rating stars are personal rating. Rating in brackets is F95 rating
  • Search will be performed on title and tags. Matched title will be highlighted green, matched tags will be shown on each game. Tags dont show up otherwise

FAQ:
  • Will login be implemented, to import games that are are only accessible if logged in?
    No, unless f95 starts disabling public access to majority of games
  • Which file do i download?
    • avn-game-launcher-{platform}-release.zip - these are platform native packages, you don't need external dependencies (like jre) to run it, just extract and run
    • AVN.Game.Launcher-{platform}-x64-1.0.1.jar - platform specific, Java 17 needs to be installed on your system
    • androidApp-release.apk - Android APK
  • Which platforms are supported?
    Desktop (Linux, Mac, Windows), Android
  • Can i import non-f95 game?
    Not currently, but it is planed. If you really want to do it you can manually add entries to the database (sqlite)
  • Where is data stored?
    Windows
    : %AppData%\avnlauncher
    Linux: ~/.config/avnlauncher
    MacOS: ~/Library/Application Support/avnlauncher
  • Automatically finding games is not working
    You need to set you games dir in setting first. All your games need to be in the same dir
  • I set games dir in settings, but it still won't find games
    Games inside "games dir" have to be named exactly like game in the app
  • Still not finding games!!!!!!!
    Sorry, this feature is pretty basic, you can select game executable manually in "Edit Game" screen
  • Why should i use this app over F95Checker
    You shouldn't really, F95Checker is much more mature app, it has more feature. The only thing this app has that F95Checker doesn't is tracking play time (as far as i know)
  • Is the app open source?
    YES
  • Where is the rest of the game details (description, tags, changelog, etc)
    Click on the link in the bottom right corner of each game
  • Can periodic update check be adjusted (currently 1h)?
    Not right now, you can always trigger update check manually
  • How is average play time calculated?
    App tracks only total play time for each game, play sessions are not tracked.
    Average play time is calculated from total play time of all games, and total time since first game was played
  • Why does tracking play time not work on android?
    Android limitation
  • Which Java version is required
    If you use platform native package, then no java is required, minimale JRE is bundled
    If you want to use jar file, then minimum Java 17 is required
Known Bugs
  • Scaling issues on large dpi screens on desktop
  • Android probably has tons of bugs.
Known Limitations
  • Games that are not publicly available (without login) can't be imported. Not sure why f95 requires login for certain games
  • Android cant track play time (android limitation)
  • Periodic update check works only when app is open
  • due to f95 limitations, not all game details can be downloaded without login
Planed Features
  • manually add non-f95 game
  • custom filter/sort options
  • browser plugin to auto import game from f95 website
Not Planed Features
  • f95 login

  • view all game details directly in the app
About retrieving data from F95 and update checks
Update checks are really fast but not taxing on the F95 servers. This is achieved thanks to the F95 always having latest version in the game thread URL.
AVN Game Launcher will make a request to the base thread url https://f95zone.to/threads/{game_id}. The http response will be 301 (redirect), and the header will contain the latest url for example https://f95zone.to/threads/elite-garden-ep-3-a-k-studio.148994/. If the returned value is the same as the saved one, nothing further will happen, no updates. If returned value is different, then redirect will be followed, app will download and parse the html and check the new version. Since 301 response only contains header, no body, this request is really fast and doesn't put too much stress on f95 servers
Now using same API as F95Checker. It will only make max number_of_games / 100 requests to F95 servers

Feel free to report any bugs and/or feature requests (except in the "Not Planed Features" section)
Tested only on Linux, but other platform should work just fine


CHANGELOG
You don't have permission to view the spoiler content. Log in or register now.

You can check for development progress

features.png
 
Last edited:

r37r05p3C7

Newbie
Nov 8, 2023
85
53
Is the app open source?
No
Is there any specific reason for that? I personally wouldn't want to use something that might disappear without a trace at any moment.
Update checks are really fast but not taxing on the F95 servers. This is achieved thanks to the F95 always having latest version in the game thread URL. AVN Game Launcher will make a request to the base thread url https://f95zone.to/threads/{game_id}. The http response will be 301 (redirect), and the header will contain the latest url
You're still sending a lot of small requests every time user triggers a refresh, which isn't great. Dedicated API for that has been available for years:
Feel free to report any bugs
Windows 10 Pro Virtual Machine (19045.3996)
Java 8 Update 401
Failed to launch: Java exception has occured.
 

p1n3@5573

Newbie
Feb 6, 2023
54
131
Is there any specific reason for that? I personally wouldn't want to use something that might disappear without a trace at any moment.
No specific reason. I am not comfortable sharing the code right now, maybe at some point in the future, or if there is enough interest etc..

You're still sending a lot of small requests every time user triggers a refresh, which isn't great. Dedicated API for that has been available for years:
Only took a quick look, but that looks to me like it is just a client for f95 that does the same thing, making requests to F95 servers and parsing html, unless i am missing something
As far as i know F95 does not have an API. The only thing that would be better would be if f95 had an api where you could make a batch request to get all games with one request

Windows 10 Pro Virtual Machine (19045.3996)
Java 8 Update 401
Failed to launch: Java exception has occured.
Forgot to write this in FAQ, Java 17 is required, or use native package which comes with minimal JRE bundled
 

r37r05p3C7

Newbie
Nov 8, 2023
85
53
As far as i know F95 does not have an API
yes, there is no api, except for this one endpoint which was specifically created for f95checker. you provide thread ids and it returns versions as json. the only limitation is batch size, you can only request 100 games at a time, still better than fetching headers for each game, they are not free after all.
 
  • Like
Reactions: p1n3@5573

p1n3@5573

Newbie
Feb 6, 2023
54
131
yes, there is no api, except for this one endpoint which was specifically created for f95checker. you provide thread ids and it returns versions as json. the only limitation is batch size, you can only request 100 games at a time, still better than fetching headers for each game, they are not free after all.
Didn't know that, tnx for the info
 

r37r05p3C7

Newbie
Nov 8, 2023
85
53
Forgot to write this in FAQ, Java 17 is required
Uninstalled Java 8 and installed Java 17 JRE from here:
Error disappeared, but apps still fails to launch properly. I've tried universal and platform specific .jre archives and release .zip
You might want to setup some kind of logging, otherwise it will be really hard to get any feedback, especially since app is closed source.

The only thing I can add, app dir in AppData folder was created successfully as well as cache folder and database file.
 

p1n3@5573

Newbie
Feb 6, 2023
54
131
There should be a log file in the app dir (where the db file is), and also it should log to console. Try to launch it from terminal/command line maybe

Edit: Looks like there are some issues in the release build with the logging (log4j) .
 
Last edited:

p1n3@5573

Newbie
Feb 6, 2023
54
131
New version 1.1.0
Also decided to make the project open source


CHANGELOG

1.1.0
  • [desktop] preferences are now stored in data dir. Your preferences (Settings Screen) will be reset (sorry)
  • [dekstop] allow to pass data dir and cache dir as cli params
  • [all] Fixed logging not working
  • [all] use dedicated api for update checks (5-10x faster update checks)
  • [all] system notifications for game updates
  • [all] display current version in Settings
  • [all] Minor UI fixes and improvements
  • [all] Other minor fixes

BREAKING CHANGE
Even though sql migration is implemented, in older versions database was created with user_version 0, SQLDelight expect that initial version is 1. This causes SQLDelight to try to create a database and tables from scratch
Because of this app will crash if database file is present with user_version set to 0.
To fix this, tou can either delete the database file, or set user_version to 1
You can use tools like "DB Browser for SQlite" to change PRAGMA user_version to 1
ONLY CHANGE THIS IF IT IS SET TO 0
Sorry for the inconvenience