Hello there.
This is a tool to create funscripts.
Disclaimer: I’ve been asked twice now regarding paid scripts.
You can do whatever you want with scripts created with OFS.
No strings attached.
[url]https://github.com/gagax1234/OpenFunscripter[/url]
I upload a windows releases on github releases.
Feature requests
I would really appreciate if people would make feature requests on github (by creating an issue).
This would be an immense help for me and heres why.
- It makes it easier for me to track and not forget.
- Some feature request require alot of further discussion. Which doesn’t belong in this thread since alot of people who read this thread probably don’t care.
- Naturally some feature request have to get turned down for various reasons and github is a good place to document why.
Features
- fully open-source
- theoretically fully cross compatible for Windows, Linux & OSX ( someone just needs to compile it for those platforms )
- an undo system
- rebindable key bindings
- displaying an audio waveform in the script timeline
Update
-
- fixed bug introduced in 1.1.8 where under certain circumstances only the actions array would get saved but nothing else
- thankfully no work should’ve ever been lost due to this…
- surge (L1) & sway (L2) axis are now correctly assigned
- removed “associatedScripts” when saving while using multiple scripts
- instead the new convention is that all scripts which start with the same name will get loaded automatically
- extended keybinding system with “modifiers”
- theres a new tab in the keybinding window for modifiers
- this will contain more usefull modifiers in the future
- Alternating mode now alternates every key press instead of looking at previous actions
- fixed bug introduced in 1.1.8 where under certain circumstances only the actions array would get saved but nothing else
-
- 3D Simulator
- added “Editing” tab to insert points #10
- added global pitch & yaw to rotate the simulator
- twist doesn’t spin continuously anymore
- Recording mode can now record pitch & roll at the same time. “Two axes” checkbox (only with a controller)
- “File”->“Share…” now handles saving of multiple scripts
- fixed possible stack overflow in spline rendering
- added the ability for Lua scripts to tag actions
- added filesystem paths for scripts/video & video directory to the Lua API
- added “select all left/right/top/middle/bottom” bindings
- the audio waveform is now rendered in a fragment shader ( 99.99% less triangles on screen. wow)
- added ability to change audio waveform color
- improved save performance by doing more work asynchronous
- 3D Simulator
Old releases
-
- Added the ability to bind Lua scripts to keys/button
- Go to “View”->“Special functions”->“Custom functions” select the script & click “Bind script”
- After that you’ll find it under “Options”->“Keys”->“Dynamic”
- You only have to do this once, there’s also a trashcan button to get rid of the binding again.
This is great because it allows custom functionality to integrate efficiently into your personal workflow.
- Added a lua/lib directory from where Lua scripts can require 3rd party libraries
- Multi script
- Changed visual highlighting of active script.
- You can now use the mouse to select which script is active
- Improved performance of spline rendering ( lost a little of smoothnes )
- Fix T-Code error print (“Failed to write to serial port.” was printing no matter what…)
- T-Code channel invert now gets saved
- Fix paths longer than MAX_PATH on windows #8
- Remove qutoes from the heatmap name #9
- Added move “Move actions +5/-5 up/down” binding
- Added the ability to bind Lua scripts to keys/button
-
- Added remaining T-Code channels
- When using T-Code the OSR will assume the position in the script even the player is paused.
(only works when the T-Code window is open) - Switched out library for serial communication #7
- Fix T-Code interpolation when not using spline mode
- When pasting the area in which you paste gets cleared first
- Fixed frame seeking issue which had potential to let the video player and OFS go out of sync in a bad way
- 3D simulator position now gets saved
- The Action editor UI doesn’t jump anymore when pausing/playing ( thanks to #6 )
- Insert offset now gets applied to recordings.
This can be used to correct for your personal reaction time.
-
-
T-Code support
- Find it under “View”->“T-Code”
- If you have a OSR2 you can play scripts directly in OFS
- Catmull–Rom spline interpolation for strokes is the new default.
- It can be turned of by right clicking script timeline “Rendering”->“Spline mode”
- Moving points in tempo mode snaps to the grid
- Binding to move closest point/selection +10 up or -10 down. Has to be bound to a key/button first.
- Twist is back on the 3D simulator
- By right clicking the video player you can lock the position/vr rotation & zoom
- Simulator can also be locked with a checkbox in the window
- Added “Bookmarks”->“Delete all bookmarks”
- Added shortcuts for adding multi-axis scripts “Open…”->“Add…”
- Added live video preview to the timeline.
- I may have missed something…
-
T-Code support
-
- The previous two builds had no controller support. It’s re-enabled now…
- Linux build was broken due to the addition of Lua. Is fixed now
- Changed the user Lua script directory to the same place where configurations are stored.
- Controller button repeat rate can now be controlled. In the main menu bar
“Controller”->“Repeat rate” it’s in milliseconds - Added multi-script Lua script support
- In “data/lua/examples/” is new example script multi_script_example.lua
- Added “random_noise.lua”
- Added support for Lua scripts to have variables that can be configured in the GUI.
- Bookmark intervals
- By setting two bookmarks “a” & “a_end” you’ll get an interval.
- The undo system handles multi-script modifications. This makes “Mirror mode” a lot safer to use.
- Fixed a bug in the heatmap generation that I introduced in 1.1.3
- Improved heatmap coloring
- The default font can now be changed at runtime. The font size can also be changed at runtime.
-
- On accident I completly broke linux… I’ll have to fix that some other time
- Added Lua scripting support “Special functions”->“Custom functions”
- Rolling backup doesn’t roll anymore. it never rolled anyway
- Selections in Spline mode are now also curved
- Improved heatmap generation.
- it now ignores all points which don’t change direction of the stroke
-
- Removed recordings They won’t be loaded anymore.
- “Mirror mode” can mirror recordings across loaded scripts.
- Added “Simplify” algorithm to “Special functions” window
- Added “Offset” in the “Mode” window the offset is applied when inserting actions while playing the video
- Added “Vsync” switch and framerate limiter to “Preferences”
- I recommend turning off vsync if you have a 60HZ ( or less ) monitor. If you have a 144hz monitor like me you can keep vsync on.
- Added visually really cool “Spline” mode in the “Mode” window. It turns lines into curves.
-
- Optional extra height lines for simulator
- When loading multiple scripts they get associated with the first loaded script.
- Added “Overlays” in the “Mode” window you can select between “Tempo”, “Frame” and “None” overlays
- QoL for metadata editor
- Added bindings “Next/Previous action (multi)” gets you to the next action when multiple scripts are loaded
- Deselecting of axis on the 3d simulator
- Added “Mirror mode” when multiple scripts are loaded
- Added “Move to current position” binding ( moves action to current position )
-
- Support for top/bottom vr videos 180° & 360°
- Save heatmap saves now as png
- Added video progress indicator
- Fixed screenshots on linux
- Added “Repeat stroke” binding
- Main menu bar starts flashing red if changes aren’t saved after 5 minutes
- Fixed “Statistics” not being consistent
- Added “Line” width to simulator
- Increased resolution of audio waveform
- Massive performance improvement for audio waveform rendering
- Added a “Simulator 3D” for multi-axis scripts
- Removed “ghost scripts” in favor of stacking multiple scripts on top of another
- Scripts can be selectively hidden via the right click menu
- Fixed some issues with paths and character encoding
-
- Fix windows file dialogs not returning a path for some files
-
- There’s now an “.exe” installer for windows and a snap package for linux (not just ubuntu)
- Added “File”->“Share…” this allows you to save a trimmed version of the script
- OFS settings don’t get saved
- Redundant actions get removed
- Ability to load multiple scripts at the same time
- Added “Open…”->“Add new” & “Add existing”
- With PageUp PageDown you can cycle through loaded scripts or use the right click menu on the script timeline
- When you use “Save as…” or “Share…” just the active script gets saved
- When you use the regular save all currently loaded scripts get saved
- You can unload scripts with “File”->“Unload”
- Fixed simulator position label
- Settings now get saved in “%appdata/OFS/OFS_data”
- Added version number to settings this allows for people to retain their configurations through updates 99% of the time as the version won’t change often (maybe not at all)
- You should now be able to load audio files even if they don’t have an image
- Added addional thick vertical lines to the script timeline 100ms appart, if the fps divide by 30 without remainder (at 24 fps it’s more like 83.33ms)
- Fixed bugs
-
- A rather large amount of work went into adding controller support
- Every “key” binding can be bound to a controller button
- There’s two modes “Scripting” mode & “Navigation” mode.
- The active mode is visible in the top menu bar
- In “Scripting” mode all the bound bindings are active and can be used.
- In “Navigation” mode you can navigate the UI using the controller but the bindings won’t work. This not something I had to program it was already built into ImGui.
- There’s a binding to toggle between the two modes. (default pressing left stick)
- Here’s a useful image I found showing how “Navigation” mode works. Image link
- Added more options for controller recordings. This
- “Keys” can now be filtered name to easily find them
- “Keys” has a “Controller only” checkbox which only shows bindings which are currently controller bound.
- You can now clear a binding by clicking the change button and then hitting escape
- Removed the undo state buffering to disk. ( because of the lag it was causing )
- Increased undo limit to 1000
- Improved rendering performance for large selections
- Updated the metadata editor
- Added a range extender which can be applied to selections.
- It’s in a new window “Special functions” which will probably have more functionality in the future
- A rather large amount of work went into adding controller support
-
- This is my first “fully automated” (it’s one click for me) release. The previous releases where all handmade.
- There’s no major things just a couple of fixes and things which annoyed me personally
- Added Japanese glyphs no more “???????”
- Added binding to deselect everything (default: CTRL + D)
- I wanted an indicator to see when something is selected
- The white border around the script positions becomes blue when something is selected
- I’m open for better ideas
- Changed the behaviour for the invert function when nothing is selected
- It now inverts the closest action. Previously it would try to pick 3 points which I thought was stupid.
- Also added the default binding “i”
- Fixed the go to bookmark which was broken
- Added bounds checking when moving actions which aren’t selected. ( can’t be moved below 0 or above 100 )
- Added new function “Isolate” (default binding: R)
- It picks the closest action and deletes the action before and after it
- Added a default layout. This was key to being able to fully automate the build.
- If you somehow mess up the layout you can delete the “imgui.ini” and it will restore to a default layout.
-
- You can now have multiple recordings
- Recordings can be turned into actual actions
- Saving & loading of recordings works
- Slightly altered heatmap generation
- You can now double click in the script timeline to seek
- Removed “Draw raw actions” or whatever it was called and replaced it with 3 render modes
- “None” renders no recordings in the timeline
- “Active” only shows the active recording
- “All” shows all recordings (default)
-
- Fixed a crash because I forgot to initialize something
- Fixed visual glitches. While trying to seek as the video is playing again
- Made simulator even smoother ( uses floating point position now )
- Save a bunch of video player settings with the script
- VR rotation & zoom
- Playback speed & volume
- Screen position of the video & zoom
- Video mode
- Grouped key bindings ( the window kept getting longer )
- Fixed an issue where the backup directory for the rolling backup would sometimes get created somewhere else…
-
v1.0.6
- Oh boy this is a big one probably will forget to list some things
- Added light antialiasing. I hope this works for everyone because it didn’t on linux
- I stopped fighting actions not being perfectly aligned with frame timings as it was a battle I couldn’t win
- You can now jump to any action even if it is misaligned
- There is a “sync time with player” key binding which will sync
- This is what it looks like when OFS is out of sync with the player. The red line shows the currently rendered frame.
- Added vertical frame lines to the script time line. See above
- Fixed visual glitches. While trying to seek as the video is playing
- Added recording mode with mouse and controller support as described here ( there isn’t a way to turn recordings into actual actions yet )
- You can shift click actions into the script timeline
- You can shift drag single actions with the mouse in the script timeline
- You can shift click actions via the simulator
- Noticeably faster frame seeking ( especially backwards )
- Added “Fast step” & “Fast backstep” bindings which are configurable in the amount of frames they seek ( default: 6 )
- Simulator
- Added lines
- Added “Show positions” checkbox
- Added “Simulate raw actions” ( for recordings )
- Added global opacity slider
- Added rolling backup ( enabled by default )
- Creates a directory “backup/video name/”
- Will backup your script every minute automatically
- Deletes the oldest backup after 5 backups
- Fixed some crippling bugs like this one
- Changed speed control to be more granular. ( 10% steps instead of 25% )
- Added “Select->Frame align” which tries to align selected actions with frames ( use it only on misaligned actions or not at all )
- That should be everything worth mentioning
-
v1.0.5
- Undo system will buffer states to disk after 500 states have accumulated
- Added an about window
- Fixed actions placed while playing with “Smooth” enabled not being aligned with frame times
- Added an icon ( graphic design is my passion ᶦᶠ ˢᵒᵐᵉᵇᵒᵈʸ ʷᵃⁿᵗˢ ᵗᵒ ᵖʳᵒᵛᶦᵈᵉ ᵃ ᵇᵉᵗᵗᵉʳ ᶦᶜᵒⁿ ᵇᵉ ᵐʸ ᵍᵘᵉˢᵗ )
- Fixed VR mode zoom
- Completely rewritten serialization ( C++ template black magic )
- Last position in the video gets saved in and loaded from scripts.
- OFS keeps track of the 5 most recent file pairs opened
- Audio waveform gets cleared when loading a new video
- Improved borderless fullscreen
- Fixed window at start-up being larger than the available screen space
- Cycling through subtitle tracks with key binding
- Fixed file dialog not opening if the last opened directory doesn’t exist anymore
- Removed system alerts ( maybe I’ll find a better alternative in the future )
-
v1.0.4a
- Smooth scrolling script timeline very noticeable at low playback speeds or high refreshrates
- A background for the new simulator
-
v1.0.4
- Loading videos and scripts from different directories
- ( hopefully ) fixed handling of unicode characters in file/directory names
- Added Metadata editor
- The format has been specified in a collaboration between multiple tool/player creators
- Script creators are able to attach metadata to their scripts.
- Added a brand new simulator
- This one can be rotated and fully customized
- Heatmap can be exported as an image
- Made application font size customizable under Preferences->Font size
-
v1.0.3
- Left/Right Shift/Ctrl can be used interchangebly
- Added “Move actions with snapping”
- Added equalize actions function
- Added invert actions function
- Added Select->Mid points only (It selects everything which isn’t selected by top or bottom)
- Added ability to save screenshots of the video
- Added ability to set a fixed range in “Alternating” mode
- Added “Select all left / right”
- Added ability to set start and end point for large selections
-
v1.0.2 Github
- Added ability to create Bookmarks
- Hardware decoding is not forced anymore
- Added option to force hardware decoding ( try this when playback lags )
- Added total duration next to time elapsed
- Fixed an issue with the simulator
- Fixed division by zero because the script contained duplicate actions
- Fixed rendering issue with the lines in the position window
- Ffmpeg is back in this release
-
v1.0.1
-
Important I have decided not to include ffmpeg.exe in the release which halves the size of the archive. Ffmpeg is only used to generate the audio waveform. You’ll have to get ffmpeg.exe separately and set the path under Options->Preferences.
Let me now if this is annoying to you. - Keybinding system now actually works
- Fixed any issue when pasting actions ( thanks to Husky538 )
- Minor UI change to the speed controls
- Generating the audio waveform is now asynchronous and doesn’t block the whole program anymore
- I’ve decreased the minium zoom level for script actions from a 5 second window to 1 second. ( this means you can zoom in further ) ( as requested by Sentinel )
- If no selection is made the “Move” bindings as well as the “Delete” binding will affect the closest point ( as requested by Sentinel )
- Added a label in the top menu bar showing how many minutes have passed since the last save. ( as requested by Sentinel )
-
Important I have decided not to include ffmpeg.exe in the release which halves the size of the archive. Ffmpeg is only used to generate the audio waveform. You’ll have to get ffmpeg.exe separately and set the path under Options->Preferences.