OpenFunscripter - a scripting tool - 3.2.0 release

Hi :wave:

It was about time to create another thread.

OpenFunscripter (OFS) is fully open source over at Github

Disclaimer: You can do whatever you want with scripts created with OFS. No strings attached.

How to get started with scripting and OFS?

  • Be aware of the fact that scripting takes a lot of time and is a very subjective process.
    Subjective as in if you like the script you made you did a good job.
  • The “Options”->“Keys” window is your friend it shows all possible key combinations and buttons you can press it also let’s you rebind them.
  • I can highly recommend these threads as a starting point.
    The video tutorial by Husky
    How to get started with scripting by sentinel

For more advanced users

Feature requests
I prefer feature request as Github issues .

Latest release: 3.2.0 Github

Beware for Windows there’s an AVX build and a non-AVX build.
Choose the non-AVX version if you don’t know what CPU you have.

Changes 3.2.0

What’s Changed

  • Clearing the selection is now a middle mouse button double click #66
  • Added shortcuts for creating bookmarks/chapters #62
  • Added a basic Chapters window View->Chapters #69
  • Random chapter colors are now a little darker (this only affects newly added chapters) #69
  • Fixed rendering in tempo overlay. Lines and points are rendering now on top
  • Addded CollapsingHeader to the Lua API #64
  • Add more missing events when editing chapters in relation to the Websocket API
Changes 3.1.0

What’s Changed

  • Rollback SDL2 library version #61
  • Added “random” colors when creating chapters
  • Improve the hitbox when hovering chapters
  • Added the ability to save a heatmap including the chapters as a png
  • Fixed a bug when loading a funscript that doesn’t include chapters/bookmarks
  • Generate funscript_change events when editing metadata/chapters/bookmarks for the websocket api
Changes 3.0.0

What’s Changed

  • Implement player.Width() and player.Height() in lua extension by @trassshhub in #44
  • Fixed Funscript:selectedIndices() offset by 1 #34
  • Add “Idle mode” after 3 seconds of inactivity OFS will throttle to 10 FPS
  • “Tempo mode” bpm is now floating point you can set something like 100.45498 bpm
  • Addded some fixes in the “Core” extension #41
  • Changed “unsaved changes” dialogs #42
  • Added a “FPS override” in the “Frame” overlay
  • Added a “Time spent” timer in the Project->Configure window #19
  • Added a new websocket api other applications can connect to OFS and receive events and send commands #59
  • Removed T-Code support. You’ll be able to use MFP for livetesting.
  • Removed Simulator 3D. This is the replacement OFS_Simulator3D
  • Increased detail in the heatmap #52
  • Fixed an issue with the waveform rendering
  • Overhauled the keybinding system
    • You can now bind mouse buttons #31
    • Gamepad analog directions can now be used #11
  • Replaced “Open project” & “Import video/script” with a generic “Open…”
    • When opening a video or a funscript it first checks for a .ofsp file.
      If a project exists it is opened instead otherwise a new project is created.

Changes to bookmarks and chapters

The old way of creating bookmarks and bookmarks ranges was removed.
And replaced with a new UI below the video timeline.
To create/edit bookmarks/chapters you just right click and use the context menu. Hopefully it’s intuitive enough.

  • These bookmarks & chapters are also imported and exported from and to the .funscript files #55
    This means they can be read by other applications.

New app directory

The app directory has changed again from %appdata%/OFS/OFS2_data%appdata%/OFS/OFS3_data.
I don’t want to make this a trend but migrating is too hard and I’d rather not be responsible for lost work.

Changes to projects

Project files are now stored in a different format. It’s stored as CBOR rather than just raw binary data.
This means project files created with older versions of OFS will not work in this version anymore.
On the bright side this new format is much more robust against change and won’t break in future versions :crossed_fingers:

  • Paths are now stored relative to the project #49
  • Waveform audio data is now cached in the project files


Thank you for improving our scripting experience even more. These big updates are always very exciting ^^

The new bookmark / chapter setting is amazing! It feels very good to use. Love I can choose colors for the chapters. Next step would be that the chapters gets also saved, when you save the heatmap and the chapters are visible there.

Maybe I am blind, but where can I find this and what does it do?

Is this one already usable or currently in development?

It should be in the “Mode” window when “Frame” is selected.
Basically when you have a low FPS video it allows you to override that giving you more granular stepping. The framerate of the video obviously doesn’t change.

There’s version 1 release. I think it’s very usable. It’s just a simulator for multi axis nothing more yet.
You just enable the Websocket API (in View->Websocket API) start the simulator and it should just work.

By default this always uses port 8080. If you need to use a different one you need to start the simulator from the command line and specify a different url like this FunscriptSimulator3D.exe ws://

I haven’t thought about that. it’s a bit of challenge but not impossible :thinking:

1 Like

I was blind. Thank for the explanation. That is very useful. Will try it for some 24 fps videos.

Thank you for the information. Will test if I can get it to work. I never scripted anything multi axis, but I liked using the 3d simulator for PMVs. The pitching helped me to see, if I got the beat right.

First of all, thanks a lot @gagax123. Lots of good improvements in this one, including a few of my requests (#19, #49, and, indirectly, bookmark/chapters).

Concerning the chapter UI, I haven’t used it for long but what I noticed so far:

  • The height of “selection box” for the chapters is really small (1 or 2 pixels high), which makes it hard to select sometimes. Could the height of the box be increased?
  • It’s great that we can change the colors but, right now, we are kind of required to do it because, by default, the chapter is always the same color. Could OFS rotate between a list of different colors when adding chapters? (1st chapter added: blue, 2nd: green, etc)
  • I’m not sure if I’m using it correctly but, if I don’t want gaps in the timeline, I have to create a “tiny” chapter, move to the start of the next one, select the previous tiny chapter, choose “set size”, add a new “tiny” chapter, … If I “set size” and forget to add a new chapter right away, it’s a bit hard to reselect the exact point at the end of the previous chapter to create the new one without a gap.
    Personally, I would prefer if a new chapter would always fill the gap to the next chapter or the end of the video and that I could cut a chapter in two by selecting “create new chapter” inside an existing chapter (which doesn’t seem to be possible right now).
    If needed, “Set Size” could still be used to create a gap in the timeline.

The good thing is that information is also saved inside the funscript file. Besides OFS, all tools that create heatmaps could use the information in the future (, MFP, etc). I’m personally planning to add a feature to generate “advanced heatmaps” to FunscriptToolbox soon, probably during the Chrismas break.

1 Like
  1. Do you mean vertical or horizontal?
    The widget scales with the window size so the height can be adjusted.

  2. Yes. I wonder if there’s an algorithm for this. :thinking: I can definetly add some predefined rotating color palette.

  3. I know the whole “Set size” handling isn’t perfect but the size gets clamped no need to be perfectly on point.

The default size for creating a chapter is currently 1% of the total video duration this can be increased. I’ll experiment with your suggestions.

I already added a “Save heatmap with chapters” option it wasn’t trivial but I made it work :sweat_smile:

1 Like

Vertical. I haven’t thought about increasing the window size and, yes, it is a good workaround, but I feel that it should not be needed. It seems that the first 6 or 7 pixels on the top and bottom of the visual box don’t select the object. For example, if the height of the bars is about 15 pixels (which is large enough to read the text), we only have 1 or 2 vertical pixels for selection.
Look at this screenshot, my pointer is clearly on the bar but it’s not selected.

Ok, I see what you are doing in your video. I didn’t think that “set size” worked for the start of the chapter too. I’ll do that. I still think that splitting a chapter in two with a simple “create chapter” could be useful and, maybe, menu options “expand left” and “expand right” would be more fast & intuitive. But I’ll let you experiment. It’s a really good start, and really useful as is.

I see. Not sure why the round part on top is not included in the hitbox I’ll look into it.

Also note that “Set size” can also can shrink a chapter always pulling the closest edge to the current position.

It looks and feels much better to use. Really great job :clap:

One thing, I can’t seem to unselect a node by clicking empty space now, I’m forced to hit ctrl+D? Is there a way to enable the old shortcut?

This changed to allow double click seeking without clearing the selection.
Middle mouse button while hovering the timeline clears the selection.

1 Like

Ohhohoo after using it a bit I’m now seeing how useful this change is for navigating while staying selected. Thank you!

is it safe to assume alot of the LUAs on here wont work with this version since it just came out?

No everything that worked before should still work.
But since the app directory changed you’ll have to copy the extensions directory over into the new directory.

thats good to know, I guess the only thing that would need to update would be MFS.

Is there a way to migrate keybinds and simulator settings from 2.0 to 3.0 so I don’t have to reconfigure it manually?

No sorry. Best you can do is open the old version and the new one side by side and compare.
Writing migrations for this stuff is not super easy and before having a buggy migration I’d rather not have one at all.

That’s also the reason why this is 3.0.0 and not 2.1.0 because I had to break stuff.
The next version won’t be 4.0.0 :sweat_smile:

I added a couple small things + fixes.


Thanks for adding this so quickly! Works very well and it looks pretty cool. Very nice to have feature.

Would it be possible to make a hotkey for both setting a bookmark and a chapter?

Yes that’s also not a bad idea.

1 Like