Sure, I’ll start with the common devices and their functionality
OSR2 - 2 degrees of movement: Stroke and Roll
OSR2+ - 3 Degrees of movement: Stroke, Roll, Pitch
SR6 - 5 degrees of movement: Stroke, Roll, Pitch, Surge, Sway
Twist, T-Valve, Lube pump are also common add ons and can be added to any device
Here’s a reference picture to help visualize the 3D axes
Each axis has 2 forms of movement assigned and available to funscript. One rotation and One Translation. Translation is movement from point A to point B on the axis, Rotation is using the axis as an anchor and rotating the 3D object without letting the position on that axis change.
X Axis: Sway, Roll
Y Axis: Stroke, Pitch
Z Axis: Surge, Twist
There are also bolt on mods like T-Valve, pump, vibe, squeeze that operate on a sliding scale of fully active-inactive or fully open-closed.
Stroke
Translation on the Y Axis (Up/Down movement)
Reference

Surge
Translation on the Z Axis (Toward/Away movement)
Reference

Sway
Translation on the X Axis (Left/Right movement)
Reference

Twist
Rotation on the Z Axis (Think screwing in a fastener)
Reference

Roll
Rotation on the X Axis (Left/Right Rotation)
Reference

Pitch
Rotation on the Y Axis (Toward/Away Rotation)
Reference

Valve/SuckManual
Open / Close the T-Valve (There’s variation between devices but 0=Open 100=Closed is my go to)
.suck.funscript is a little different see This Post if you’re interested in valve
Reference

Funscript Files
script naming conventions are (for video.mp4):
video.{axis}.funscript
with the only exception being video.stroke.funscript, for which stroke can either be omitted or not.
video.stroke.funscript = video.funscript
video.surge.funscript
video.sway.funscript
video.roll.funscript
video.pitch.funscript
video.twist.funscript
video.valve.funscript = video.suckManual.funscript (XTP needs suckManual, MFP uses valve)
video.suck.funscript
video.pump.funscript or video.lube.funscript on some setups
video.vib.funscript
These are all considered 1.0 funscript files.
You can also use a merged funscript 1.1 or 2.0 to serve a single funscript that combines all the different axis funscript files into a json channels array. Currently these are usually named video.funscript so it might get confused with the stroke 1.0 file if you aren’t careful. This is why there’s a setting on eroscripts to add .max.funscript addition to merged 1.1/2.0 downloads.
