Funscript
Funscripts are time-stamped position files stored as JSON. They describe how a device should move over time.
Origins of the word
Section titled “Origins of the word”- The term
funscriptoriginated from a user named FunJack, one of the first code publications of this file format is this Go module. - The funscript format has, over the years, become the defacto standard that many users are familiar with, with good adoption by the scripting communities (EroScripts) and commercial distributors (RealSync, SexLikeReal, CzechVR).
File Layout
Section titled “File Layout”A minimal funscript contains:
{ "version": "1.0", "inverted": false, "range": 90, "actions": [ { "at": 1000, "pos": 0 }, { "at": 2000, "pos": 99 }, { "at": 3000, "pos": 0 } ]}at– Milliseconds from script start.pos– Device position 0–99.- Optional metadata may include other details such as scene performers and production company.
Good Practice
Section titled “Good Practice”It’s good practice to keep scripts beside their matching video and share the same base name:
MyMovie.mp4MyMovie.funscriptMulti-axis naming conventions (e.g. .surge.funscript, .vib.funscript) have become the norm in script player applications. At the time of writing this, FunPlayer only focuses on the linear axis, for now.
Taking a look yourself
Section titled “Taking a look yourself”A funscript file is a file format that is JSON-compliant, it’s just denoted with .funscript as the file format but is a fully compliant .json file.
It is human readable, open a file in any text editing application and take a look.
- Generally speaking, position values should be between 0–100.