Fap Hero: JOURNEY v.0.4.2

Fap Hero Journey — v0.3.2

This one’s about progression and upkeep: your runs now get scored and kept,
pausing costs you, and the app can update itself.

Existing journeys, saves, and settings carry over untouched.


:sparkles: Highlights

  • Local scoreboard — a high-score history for each journey.
  • Pause penalty — your score drains while you’re paused.
  • In-app updater — check, download, and stage a new build from inside the app.

:trophy: Local Scoreboard

Every run you finish — or abandon — is recorded per journey, ranked by score.

  • A HIGH SCORES panel appears beside a journey’s details in the selector,
    listing your top runs with the outcome (✓ complete or ✗ round 4/9) and
    the date.
  • Both completed and abandoned runs are tracked (quitting to the menu
    mid-journey counts as an attempt — Save & Quit at a checkpoint does not).
  • Clear a journey’s history anytime from the panel. It’s also cleared
    automatically when you rebuild/re-import or delete the journey.

:pause_button: Pause Penalty

Stepping away now has a cost.

  • While the game is actively paused — the pause button or the Options menu —
    your score ticks down each second.
  • System pauses are free: boss intros, checkpoint banners, shops, forks, and
    storyboards never penalize you.
  • The penalty only eats into the current round’s score and never drops below
    zero — points you’ve already banked are safe.

:down_arrow: In-App Updater

No more manually checking the forum for new builds.

  • The main menu checks for a newer release on launch and shows an
    “Update available” banner.
  • Click it to download the new build, verify it, and extract it into a fresh
    folder next to your current install
    — the folder opens automatically. Close
    the app, run the new version, and delete the old folder.
  • The updater never overwrites the running app, so there’s nothing to corrupt.
  • Don’t want it pinging for updates? Turn it off: Options → “Check for updates
    on launch.”

:wrench: Under the hood

  • Added an automated test suite (51 tests) and CI that runs on every change —
    fewer regressions reaching you.
  • Internal cleanups to the fork-resolution, sensory-effect, and save code (no
    behaviour change).

:bug: Fixes

  • The score could quietly tick up in the background behind a boss intro or
    checkpoint banner — playback is now properly frozen until the round begins.

Not as exciting as the prior updates but this one is pretty important for the future. The most exciting part of this update is the Auto-Update feature. It does automatically check the internet for updates but you are able to opt-out if you’d like. This way you can be notified of an update outside of this forum. Pretty nifty and not as hard to implement as I had thought.

1 Like

For whatever reason I can’t get the game to connect to intiface. When set to auto connect it will say connected until I actually try to scan for a device, then it disconnects. Afterwards if I try to connect it just endlessly tries and never does. All the while of this happening intiface never actually detects that it’s been connected to like it does for anything else. Kinda stumped on what to do.

A few questions for you:

When attempting to connect does it ever show Fap Hero Journey connected? Or does it never get to that point?


image

Is it giving any kind of error in the logs?

Is your server address the default ws://localhost:12345?
Is the port the default 12345?

Is there an error message in game?

Currently my recommendations:

  • Completely close out of intiface via task manager and re-open.
  • Make sure the address matches up to what I have here.
    – Reset your Intiface settings if necessary.

I reset all my settings on intiface, and everything is as you wrote.

My logs look like this so it’s clearly doing something.

In order of the log, first entry was the first press of the connect button. Which then lead to the game giving up ig, and from there I try to connect again ingame and it stays on “connecting…” and that’s what the log spit out.

1 Like

It seems like something else is eating the Websocket

Some more questions:

  1. Any VPN, proxy, or antivirus / “internet security” suite running? If so, completely exit those and retry.
  2. Exact Intiface version so I can test against it myself.
  3. Does the game window go unresponsive around the 20s mark when it drops?

Try ws://127.0.0.1:12345 instead of localhost (probably won’t work but doesn’t hurt to try)

Very interesting project! I made a fork to get familiar with the codebase a bit. Most of what I’ve done so far has been refactoring the title screen to work more in line with Godot design principles (compose scenes in the editor rather than hard-coding layout values and such; got Main.gd from 500 lines down to under 200).
I also changed two lines in FunscriptPlayer to lerp instead of hard-clamping the min and max range values, though it looks like you’ve already done this on the main branch as well.

If I were to note features I wanted the most, it’d probably be setting range limits on the other axes (I use an OSR2+).

Excited to see further development!

2 Likes

Appreciate it! When you’re finished with the fork create a PR and I’ll review it. I did briefly review it yesterday (which is why you see the lerp + hard clamping in the current branch, oversight on my part!).

While I do have a developer background this is my first godot project of this size and I’m not well-read on godot design principles. Any advice is appreciated!

Noted. This should be a pretty easy add!

2 Likes

Hmm, I think something is off with “Test from here” button in bigger journeys. It skips some forks and goes to the step directly after fork join. For example if I have a fork with 3 or 4 paths, and want to test from some point inside one of the fork’s paths it ignores it and goes directly into the first step after fork paths joined. But it doesn’t happen each time. If I modify the fork end in any way I can start in the given fork’s path point. But after just opening the journey, it doesn’t work. A really bizarre bug…

1 Like

Also, I have one suggestion to improve journeys generation. Instead of having paths like a tree that all forked path HAVE to join afterwards, having paths definitions as graph would be so much better. This would allow for way more flexibility in joining paths and remove unnecessary story/shop steps just to join different levels of forks. It would also simplify “skip” logic in long journeys.

Is there easy way to get it to start? i found the two links in the readme folder but im not very good programmer

Hey. I’m having this exact same issue with similar/identical logs. Tried the alternative to localhost, no changes.

No VPNs, proxies or antivirus like that running either.
Running Intiface v.3.1.0

1 Like

Thanks, I’ll do some testing on that version and see if I can reproduce.

I’m making assumptions but I assume you’re on windows.

Get the latest version of the app here: Release Release v0.3.2 · SaekoM/Fap-Hero-Journey · GitHub

If you aren’t using a serial device (OSR2+, SR6, etc) download intiface central: https://github.com/intiface/intiface-central/releases/download/v3.1.0+42/intiface-central-v3.1.0-win-x64.exe

Unzip the app and run the .exe file. Navigate to settings and configure your devices from there. There are video tutorials in the post above.

For adding journeys you can either make your own or download the ones above or in the Software > Journeys category.

Let me know if you have any more questions or are having trouble with something specific.

1 Like

hi ty for help! i unzipped the file however when i try to run the two exe files none of them work :( theyre called “ffprobe.exe” and “ffmpeg.exe”, maybe i did something wrong?

1 Like

It sounds like your downloading the source files and not the published game files.

If you’re on windows make sure you’re downloading the windows files:

Here’s a video that you might find helpful:

Video Tutorial

1 Like

Hey @saekoM,
I had the same problem as @ohhaidere87 today, so I decided to try to figure out what was causing the error, and I actually found the bug that was causing the issue.
Is there any way I can contact you on Discord or somewhere else to explain the problem and the solution to you?

1 Like

Yep, you can join my personal discord here: SaekoM's Psychosis Corner

Or you can DM me at: saeko_m

Fap Hero Journey — v0.4.0


:globe_with_meridians: New: graph-based Journey Builder

The builder has been rebuilt around a free-form node graph. Instead of a tree where
every fork is forced to rejoin, you place nodes (rounds, shops, storyboards, forks)
and draw edges between them however you like.

What that unlocks:

  • Branches no longer have to rejoin. Forked paths can stay split all the way to the
    end, converge back together wherever you choose, skip ahead, or end early
    no more filler rounds just to satisfy the structure.
  • “Islands” — sections reachable only through a specific choice — are now possible.
  • Your layout is saved. Node positions persist on disk, so a journey opens looking
    exactly the way you left it.

Day-to-day editing got a full set of conveniences, too:

  • Draw connections by dragging from a node’s output handle to a target — or use
    click-to-connect. Invalid targets (anything that would create a loop) highlight in red.
  • Multi-select with marquee drag and Ctrl/Shift-click, and move groups of nodes
    together.
  • Undo / redo (Ctrl+Z / Ctrl+Y) across structural edits.
  • Copy / cut / paste / duplicate nodes (Ctrl+C / X / V / D), even across journeys.
  • Bulk import — drop a folder or a batch of videos onto the canvas and get a chained
    column of rounds, each paired with its funscript and auto-filled from disk.
  • ⊞ Arrange — one click tidily auto-lays-out the whole graph in layers (and Ctrl+Z
    puts your manual layout back if you preferred it).
  • Live :warning: validation badges — a node flags a problem as you work (a round missing its
    funscript, a moved/missing source file, an unreachable island, an under-filled fork);
    hover the node to see what’s wrong. Soft — it never blocks editing.
  • Cleaner connection routing — edges now attach to whichever side of a node faces the
    one they connect to (top, bottom, or a side), so the graph reads naturally however you
    arrange it.
  • Quick-add with Ctrl+1–4 (round / shop / storyboard / fork), Delete to remove, an
    in-app keyboard-shortcut overlay (:keyboard:), fit-to-view, and a wider zoom range.
  • :play_button: Test From Here still launches gameplay straight into any node.

Existing journeys keep working: they load fine and are upgraded to the new format
automatically the next time you save them.


:world_map: Journey Map (for players)

A new read-only map of the journey you’re playing, showing its path structure and a
“you are here” marker.

  • Open it from the ◇ MAP button on the HUD, the M key, or a ◇ MAP button on
    shop / storyboard / interactive-fork screens.
  • It accurately shows skips, convergences, and islands — the real flow of the journey.
  • Authors control it per journey: an “Allow Journey Map” toggle (on by default)
    lets you hide the map if you’d rather keep the layout a surprise.

:floppy_disk: Smaller, faster saves (shared media)

Journeys now store each piece of media once. Reuse the same clip across multiple
rounds — say, a normal round on the main path and a cursed version down a fork — and it’s
stored a single time on disk and in the shared zip. A reused video also skips
re-transcoding
, so saves are faster and journey files are smaller. It’s fully automatic:
just reuse the clip.


:camera: Share your journey layout

A new :camera: IMAGE button in the builder renders your entire journey graph to a shareable
image (PNG, or a high-quality JPEG for very large journeys) — handy for showing off a
build or asking for feedback.


:sparkles: Look & feel

  • Neon glow. An app-wide bloom pass so the bright palette actually glows.
  • Animated score & coins. The HUD now counts your score and coins up and down with a
    green-gain / red-loss pulse, so changes (like the active-pause penalty draining) are
    easy to see.
  • UI sounds. Clicks and key moments — advancing a storyboard, using an item, starting
    or finishing a journey — now have sound, with an Options → Audio → UI Sounds toggle
    and volume control.

:electric_plug: Devices

  • Stroke Range now rescales instead of clamping. A narrower range keeps the shape of
    each stroke (mapped into your range) instead of flattening the peaks, so strokes feel
    right at any range. (The setting is now labelled “Stroke Range.”)
  • Multi-axis / vibration scripts are preserved correctly through saves (pitch / surge /
    vibe channels keep their suffixes), so multi-axis devices (OSR2 / SR6) play as authored.
  • More reliable Intiface connection. Reworked the connect/handshake to avoid a hang
    some users hit where Intiface logged “Got connection” but the device never finished
    connecting, plus a clear 10-second timeout instead of a silent stall.

:bug: Fixes

  • Journey previews show their branching again. The journey detail panel had started
    showing a flat list of rounds for journeys saved in the new builder; it now reconstructs
    and displays the real fork → path structure, with correct, gap-free round numbering.
  • High-scores panel no longer occasionally stretches off-screen on the journey detail
    screen.

For journey authors — upgrade notes

  • Your existing journeys load unchanged. The first time you save one in the new
    builder, it’s upgraded to the new graph format.
  • After upgrading, the builder is graph-only — the old tree view is retired. Everything you
    could do before you still can (plus the new free-form connections); check the
    keyboard-shortcut overlay (:keyboard:) for the quick keys.

To update you can either head out to the github releases or you can open up your old version of the app and update it from the title screen. Check it out!

Also, @ohhaidere87 and @sexmat, this update should fix your issues with Intiface. It looks like certain Websocket DLLs were getting trimmed from the release export which prevented your app from connecting without crashing. Thanks to @Undertaker86 for pointing that out.

3 Likes

Oh thanks! I did end up just reinstalling everything eventually and it worked for me and I forgot to mention it but glad there’s a real fix for it now!

1 Like

Just gave this a shot and really enjoying it so far!

I did have one feature request however if possible? Stroke length clamp adjustment while in-game without needing to pause and go in to the menu.

I know there are powerups for this, but some scripts need a bit of manual tweaking on length to feel just right and using the physical buttons on the handy or having to pause is less ideal.

2 Likes