Clean Cut - a horror fap game (Game integration)

Links

Original game:
https://milovana.com/forum/viewtopic.php?t=25559&hilit=clean+cut

Modded game:

How to Set Up

In the main folder, you’ll find a my_images directory with two subfolders. Simply place any pictures you want to use into those folders.

If I didn’t mess anything up, all you need to do after that is enter your connection key in the main menu, and you’re ready to go.

EDIT: Initface support has been added.
-To connect your toys to Initface, select Initface as the device in-game and enter the server address (default: ws://localhost:12345 ).
-I’ve also added a folder containing funscripts and offsets, so you can tweak them if needed, especially since I only own a Handy, so I can’t test with other strokers or vibration toys.

One more thing: because Initface can’t send funscripts directly to strokers, the current implementation is a bit clunky. If anyone is able to create funscripts specifically optimized for Initface, that would solve the issue.

Warning

I think I’ve tested everything. I know some parts of the script aren’t perfectly synchronized, but I did the best I could. :slightly_smiling_face:

Credits

Huge thanks to QueDrmXXX , the original author of the game, for creating it and for sharing the source code!

Patreon

If you’re also looking for more funscripts for various types of adult videos, feel free to join: https://www.patreon.com/c/Frantic492

12 Likes

What is the premise of this game exactly? Would appreciate a description or some screenshots. Thanks

Kind of a “keep fapping and don’t cum or die” type of simulation game. Allows you to replace the assets with your own videos.

I couldn’t find the button to cum so I practically can’t lose

4 Likes

In the Esc menu

2 Likes

I can die properly in a blast now thank you very much

4 Likes

Would love to see this work with serial devices like SR6. Maybe it could be modified to work with Intiface? Ideally in-game serial support though

3 Likes

Initface support has been added.
-To connect your toys to Initface, select Initface as the device in-game and enter the server address (default: ws://localhost:12345 ).
-I’ve also added a folder containing funscripts and offsets, so you can tweak them if needed, especially since I only own a Handy, so I can’t test with other strokers or vibration toys.

One more thing: because Initface can’t send funscripts directly to strokers, the current implementation is a bit clunky. If anyone is able to create funscripts specifically optimized for Initface, that would solve the issue.

2 Likes

Did a quick test with SR6 via Intiface.

Is the twist motion supposed to be implemented? Because there is a twist with every stroke, but I don’t see any funscripts for the twist motion included…

Also, I am trying to figure out which funscripts play at which parts. When you first start the game, is the first script that plays the beat_phase_lv1.funscript ?

No, there aren’t any twist scripts. It’s probably because the API is now sending a command that, for the SR6, is interpreted as a twist for some reason. I’m not sure why, and it’ll be very difficult to test without the device.

As for the scripts, beat_phase_lv1, beat_phase_lv2, beat_phase_lv3, and so on, are played before the song starts. If you pause the playback at any point, it resets and starts again from beat_phase_lv1.

Hmm, then something weird is happening, because I looked at the script and it plays much more smoothly than how my device is interpreting it. My SR6 moves up and down much more suddenly and jerkily, and plus the twist movement.
I have played other games with Intiface and it hasn’t been this bad, so something in the API is to blame I think but idk what…
I guess adding direct TCode connection into the game itself would be too difficult? I could help test since I assume you don’t have a serial device to test with

Let me make sure I understand this correctly.

You played one of the CleanCut funscripts using another app with Initface, and it ran smoothly. However, when you play the same script in the game, it isn’t smooth? Or does it run smoothly in the other app even without Initface?

The reason I’m asking is that all of my funscripts are currently made for the Handy API. That means I can send the entire funscript directly to the Handy, and it follows the positions from the script. With Initface, though, I can’t send positions, I have to send intensity values instead. That’s why Handy funscripts don’t feel quite right when used through Initface.

I’ve never used Initface with any linear devices before. Could you tell me the name of an app that works well with an SR6 through Initface? Ideally, it would be one where I can also see the funscript while it’s playing.

I opened “beat_phase_lv1.funscript” in OpenFunScripter to see if the script was as jerky as my SR6 was moving, and saw it should be playing alot smoother. I can also play it directly in MFP for comparison.
Last games I played through Intiface using my SR6 were G-G-G Goon Goon Gooner! and Cycle of Corruption. Unfortunately I don’t think you can actually see the funscripts for either of those. I don’t know about G-G-G, but for Cycle of Corruption you would have to find the data in the plug2in plugin.
I had some issues with both, but without funscripts to get a sanity check it’s possible that my SR6 was not moving as smoothly as either of those games intend. However, neither of them made my twist servo move.

Ok, I see. Can you confirm one more thing? When you’re using SR6 in Cycle of Corruption, is the SR6’s movement perfectly synchronized with the game (stroke-for-stroke, matching the on-screen movement)? Or does it only react with intensity?
Because I found (or at least I think I found) how the game sends the oscillation through Intiface to the SR6, and it seems like it only changes the intensity and duration. And if it’s perfectly synchronized with the game, that’s a lot of work!

{ code: 356, indent: 1, parameters: [ PlugPlug async osci start now 1 0 0.75 ] },
{ code: 355, indent: 1, parameters: [ window.LinearDuration = 0.2; ] },
{ code: 0, indent: 1, parameters: },
{ code: 411, indent: 0, parameters: },
{ code: 111, indent: 1, parameters: [ 1, 37, 0, 40, 3 ] },
{ code: 122, indent: 2, parameters: [ 45, 45, 0, 0, 4 ] },
{ code: 356, indent: 2, parameters: [ PlugPlug async osci start now 1 0 0.5 ] },
{ code: 355, indent: 2, parameters: [ window.LinearDuration = 0.25; ] },
{ code: 0, indent: 2, parameters: },
{ code: 411, indent: 1, parameters: },
{ code: 122, indent: 2, parameters: [ 45, 45, 0, 0, 6 ] },
{ code: 356, indent: 2, parameters: [ PlugPlug async osci start now 1 0 0.25 ] },
{ code: 355, indent: 2, parameters: [ window.LinearDuration = 0.25; ] },

P.S. I think I know why it sent a script to twist too. That’s my fault, but I think I can make this one work.

As far as I could tell yes it was in sync with what was on screen. However, all the scenes used basically the same strokes as far as I could tell. Wondered if they just used the same logic for every scene. The issues were more with occasional jitteriness when starting/stopping scripts as well as issues with setting max/min stroke length in game settings.

Anyone else having the issue where loads to just a black screen?

OK, I will change some scripts to work with intensity rather than position, and we’ll see how that works.

Yes, that’s a bug from the original version. When I find some time, I’ll try to figure out what’s causing it.

Try now: 517.11 MB file on MEGA

It should only send the script to the oscillator now. The movement should be smooth, but it will probably be out of sync.

I added a button above the InitFace window, so you can choose a song to play immediately. Please select “2_Phut_Hon” and test it.

For now, I have only changed 2_Phut_Hon.funscript and beat_phase_lv1.funscript . Let me know how it goes.

Just did a quick test using the free play button and selecting “2_Phut_Hon”. The good news is that the twist action isn’t happening.
But the bad news is it’s worse than before. It’s barely moving and when it does it’s just small movements or adjustments. No real strokes.