Hey everyone, I’m primarily a JavaScript and Python developer, and this is my first time developing an Android app (with Kotlin). As a result, the project files might be a bit disorganized, and there might be some optimization issues. However, I’ve confirmed that it runs without any problems on the Android Studio AVD (with 2GB RAM).
I’m releasing this entire project on Git as open source, and I’m giving everyone permission to freely modify and update the code. It’s an open-source project, so feel free to use, fork, clone, modify, update, and share it! If you do use this project and upload something based on it, I’d appreciate it if you could credit the original project (the Git repo and my ES nickname).
Important: Unless there’s a critical, app-breaking bug, I likely won’t be touching this project again, probably ever.
APK download link is below.
Introduction to “Simple Funscripter”
“Simple Funscripter” is an Android application designed to let you quickly create “basic guidelines for Funscripts” when you don’t have access to a desktop or laptop. Think of it less as a full-fledged Funscript creation and editing app, and more as a tool for drafting your scripts.
This app allows you to create the basic guide for your scripts anytime, anywhere, which can help increase your overall script output. It should help you upload more frequently and provide more content.
However, as the name “Simple” implies, this app really only offers basic functionality. It lets you set the frame timing to 33.33ms ~ 33.34ms (effectively 30fps) and add action points for each frame. It’s designed for a workflow where you later refine and improve your drafts on a desktop.
Don’t set your expectations too high! It’ll only be useful for people like me who want to keep making progress on their scripts even when they can’t use a PC or laptop.
Implemented Features:
- Video Loading:
- You can select a video file from your device using the
Select Video
button. - The selected video will play in the
PlayerView
. - The video uses the exoplayer2 module.
- You can select a video file from your device using the
.funscript
File Loading:- You can select and load a
.funscript
file using theLoad Script
button. - The action points from the loaded
.funscript
file are displayed on the heatmap.
- You can select and load a
- 30fps Adjustment (Frame-by-Frame Movement):
- The
Prev
andNext
buttons allow precise movement in 33.33ms or 33.34ms increments.
- The
- Adding Action Points:
- You can add action points to the current frame by pressing the number buttons (0-100, +5, -5, +1, -1).
- If an action point already exists at that time, it will be modified.
- Selecting Action Points:
- You can select action points within a specific time range by dragging on the heatmap.
- Moving Action Points:
(Directly moving action points on the heatmap is not implemented. OFS’s Shift + Arrow functionality.)
- Deleting Action Points:
- The
Delete
button deletes the selected action points.
- The
- Copying/Pasting Action Points:
- The
Copy
button copies the selected action points. - The
Paste
button pastes the copied action points to the current frame. - Repeated pasting is supported.
- The
.funscript
File Saving:- The
Save
button saves the current action points to a.funscript
file. - A file explorer opens when saving, allowing you to specify the file name.
- The
- Heatmap Display:
- Lines connecting action points now display different colors based on speed (units/s).
- The heatmap shows a 2-second time range (1 second before and 1 second after the current time).
- The heatmap updates in real-time (60fps).
- Moving to Previous/Next Action:
- The
PrevA
andNextA
buttons move the time to the previous/next action point.
- The
- Hiding/Showing the Controller:
- Tapping the
PlayerView
hides or shows the controller (play/pause button, etc.).
- Tapping the
- Menu:
- Pressing the
☰
button brings up a pop-up menu withSelect Video
andLoad Script
options.
- Pressing the
- UI Scaling for Different Device Resolutions
- If the UI is still cut off, you can scroll through the menu (right-side funscript editing UI).
Features Not Implemented:
- Waveform (Audio Waveform) Display:
Excluded because it could make the app heavy.
- Position Indicator Bar (Blue Bar):
Excluded due to lack of UI space.
- Heatmap/Player Zooming:
- Directly Moving Action Points on the Heatmap:
- Statistics viewer: There is already data for Statistics while writing code for Speed-Based Line Colors. But Excluded due to lack of UI space.
Short Demo Video
Actual funscript file content saved from the above demo video:
{"actions":[{"at":422,"pos":40},{"at":521,"pos":60},{"at":620,"pos":20},{"at":719,"pos":0},{"at":818,"pos":100}]}
Note: metadata is excluded when saving. However, you can save the metadata later if you re-edit it with OFS.
Screenshot of the actual funscript file saved from the above demo video loaded in OFS:
UI Screenshots
BlueStacks [1920*1080]
Samsung Galaxy S9 [5.8 Inch Display]
Simple Funscripter APK Version 0.1.0
VIRUSTOTAL: [LINK]
APK Download: [LINK]
Simple Funscripter APK Version 0.2.0
VIRUSTOTAL: [LINK]
APK Download: [LINK]
2025-02-18 Update 0.2.0 List
Here’s a summary of the changes in this update:
-
Renamed Action Panels: The action panels on the right side have been renamed to accurately reflect their actual values (e.g., 1 → 10, 10 → 100, 0.5 → 5, etc.).
-
New Increment/Decrement Buttons: Added -5, +1, and -5 buttons for finer control.
-
Speed-Based Line Colors: Lines connecting action points now display different colors based on speed (units/s). The color scheme is slightly different from OFS:
- 0 = White
- 400-599 = Red
- 600+ = Blue
- 0-400 = White-Red Gradient (Smooth transition from white to red)
-
Video Control Panel Visibility: The video control panel is no longer displayed when pressing the Prev, Next, PrevA, or NextA buttons.