LoveMachine
Support for interactive sex toys in over 30 different Hentai games, including Koikatsu, Honey Select 2, COM3D2, Insult Order, and more.
Project maintained by Sauceke
Hosted on GitHub Pages — Theme by mattgraham
English | æĨæŦčĒ
LoveMachine

 -pink?style=for-the-badge)
Adds support for some computer-controlled sex toys in the following games:
The following early access games are also supported, but compatibility with later versions of them
is not guaranteed.
Supported devices
LoveMachine connects to adult toys through the Buttplug protocol, which supports over 200 devices.
Among those, LoveMachine can recognize linear (moving back-and-forth), vibrating,
rotating and tightening sex toys.
Some of the devices that have been confirmed to work well with the mod:
Strokers
Vibrators
Rotators
Oscillatorsâ
âšī¸ Every supported device works with every supported game.
â The Solace Pro requires some extra steps to work smoothly. In the Plugin Settings, turn on
Separate Tracking Settings for the device, then set the Tracking Setting for the Oscillate feature
to Disabled.
â Oscillators have no positional feedback. They can't move in perfect sync with the game. Devices
that can are listed under Strokers.
The LoveMachine.Experiments plugin also adds experimental support for two depth sensing devices
(Lovense Calor and the Hotdog) to Koikatsu and Koikatsu Sunshine.
Installation
Download and run the installer. If you encounter the "Windows protected your PC" message, click
More info > Run anyway.
Intiface Central must also be installed.
How to use
- Open Intiface Central.
- Click on the big Play button.
- Turn on the device you want to use.
- Start the game.
The Space key acts as a kill switch for all devices while in-game. To reactivate your devices, press
F8. Both of these key bindings can be modified under Plugin Settings > LoveMachine > Kill Switch
Settings.
â In certain games, the kill switch may not work if the BepInEx console is open while playing in VR,
because it can steal focus from the game window. It is recommended to disable the console.
If you need further help in using the plugin, check the Troubleshooting page
or open an issue.
If you found this project useful, please give it a â.
How it works, limitations
Whenever a new animation loop starts, LoveMachine records the relative positions of certain bones
for one cycle, then it tries to guess which bones are the most likely to be involved in the action
(e.g. a penis and a mouth). More often than not, it guesses correctly; when it doesn't, you can
manually select which bone of which character to track in the Plugin Settings. You can even select a
different bone for each device to reenact more complex scenes.
After one cycle of learning, the plugin translates the relative movement of the guessed/selected
bones into something that the device can perform (e.g. axial movement for strokers, or rotating
back-and-forth for rotators).
As the whole thing is based on bone positions, this will only work for reasonably sized and
proportioned characters.
Configuration
â IL2CPP games (RoomGirl, Holy Knight Ricca) are not compatible with ConfigurationManager at the
moment. If you want to change the settings in those games, you can edit the configuration file
(BepInEx\config\Sauceke.LoveMachine.IL2CPP.cfg
) in Notepad.
In Plugin Settings > LoveMachine, you can set the following parameters:
Animation Settings (KK/KKS only)
- Track Animation Blending: H-Scene animations in Koikatsu and KKS shift slowly back and forth
between two variants of the same animation. The two variants sometimes have different stroke
patterns. This setting allows you to track both variants, which makes animation tracking more
precise, but may also result in some abrupt changes mid-stroke. Turned on by default.
Core Settings
- POV: Which character's point of view should be simulated. Possible values:
- Balanced: Replicates relative movement. Should work for most players, most of the time.
- Male: Male bottom POV. Only replicates the female character's movements.
- Female: Female bottom POV. Only replicates the male character's movements.
Device List
This is where all your devices connected to Intiface are listed.
- Save Group Role & Body Part: If enabled, the Group Role and Body Part settings will be saved
between sessions for all devices. Disabled by default.
- Show Offline Devices: Lets you access some of the settings for devices that are not connected.
Settings for offline devices are shown with a red background instead of green.
- Connect: Connect or reconnect to the Intiface server.
- Scan: Scan for devices.
General device settings (all devices):
- Latency (milliseconds): Latency of sex toys is usually negligible, but if you're experiencing
any noticeable delay between your display and your device, use this setting to correct it. There's
no way to automatically calibrate this, so you'll have to experiment.
- Updates per second: How often to send commands to this device. BLE devices can usually handle
about 10-20 commands per second.
- Separate Tracking Settings: For devices with multiple features (e.g. multi-axis strokers,
vibrators that also rotate, etc.), this setting gives you fine-tuned control over each separate
feature by adding a Tracking Settings section for each one. Turned off by default to keep things
simple for the average user.
Tracking settings:
- Enabled: Whether this feature should be enabled at all. Turned on by default.
- Group Role: Which girl the device is assigned to in a group scene. This also affects scenes
that are not group scenes, e.g. if a device is assigned to second girl, and there is only one girl
in the scene, it will not be activated at all.
- Body Part: Selects the body part that will be tracked by this feature. Defaults to Auto (which
means it will find the one closest to the player character's genitals). Can be used to re-enact
complex TJ or FJ scenes where two body parts are rubbed against one. In Koikatsu and KKS, it also
tracks fondling/fingering movements.
- Phase Shift: Gives this feature a delay that is measured in stroke cycles. For example,
0.5
means the feature will always lag half a stroke behind the animation, resulting in an inverted
motion.
- Axis: This feature will track the component of movement that corresponds to the selected axis,
relative to the tracked penis object. What X, Y and Z means can vary for each game, so some
experimenting might be necessary. "Longest" always means the axis along which the most movement
occurs.
- Movement Type: Whether this feature should re-enact linear (back-and-forth) movement or
rotation. If "Rotation" is selected, the feature will match the rotation around the selected
Axis, while "Linear" means it will match the movement along it.
Stroker settings:
- Stroke Zone: The range of the stroking motion. 0% is the bottom, 100% is the top.
- Orgasm Shake Zone: The stroker will shake during orgasm animations. This setting controls what
two positions the shaking should occur between. 0% is the bottom, 100% is the top.
- Smooth Stroking: Makes the stroking movement less robotic, but not all strokers can handle
this. Known to work well on Handy and OSR2 devices. Turned off by default.
- Stroking Pattern: If Smooth Stroking is turned on, this setting lets you select the exact type
of curve the stroker should move according to. Available values are Sine, Cups, Arches, Animation
and Custom. "Animation" matches the exact in-game motion.
- Custom Pattern: Available if Smooth Stroking is turned on and the Stroking Pattern is set to
Custom. You can set the stroking curve using the sliders; it should go up then down, starting and
ending at the bottom. I'm not responsible for any injuries that may occur due to the use of
LoveMachine.
Vibrator settings:
- Intensity Range: Minimum and maximum vibration intensity allowed for this device. 0% = no
vibration, 100% = full strength.
- Vibration Pattern: The waveform of the vibration intensity. Available values are Sine,
Triangle, Saw, Pulse, Constant, Animation, and Custom. "Animation" matches the intensity to the
exact in-game motion.
- Custom Pattern: Available if Vibration Pattern is set to Custom. You can set the vibration
intensity curve using the sliders.
Oscillator settings:
- RPM Range: The minimum and maximum rotations per minute this device is capable of.
Pressure settings:
- Pressure Range: Minimum and maximum pressure allowed on this device, in percentages.
- Pressure Update Interval (seconds) How much time it takes for this device to change pressure,
in seconds. Defaults to 5.
Intiface Settings
- WebSocket host: The URL of the host Intiface is running on. Should be
ws://127.0.0.1
unless
it's running on a remote machine.
- WebSocket port: The port Intiface is listening on. Usually
12345
.
- Reconnect Backoff Time (seconds): Waiting time between attempts to connect if the connection
was lost or not made.
Kill Switch Settings
Safety measure to avoid hurting yourself if the sex gets too rough or something goes wrong. By
default, pressing Spacebar will immediately stop all connected devices.
- Emergency Stop Key Binding: Sets the keystroke for activating the kill switch (Space by
default).
- Resume Key Binding: Sets the keystroke for deactivating the kill switch (F8 by default).
Oscillation Settings
- RPM limit: Maximum allowed rotations per minute for any device. Default is 300.
Pressure Settings
- Intensity Mode: What to decide the pressure based on.
- Cycle: Gradually increase and decrease over a fixed duration (determined by the Intensity
Cycle Length).
- Stroke Length: Match to the in-game stroking length (longer strokes in game = more pressure
IRL).
- Stroke Speed: Match to the in-game stroking speed (faster in game = more pressure IRL).
- Intensity Scale: How much the pressure should be affected by the Intensity Mode.
- Intensity Cycle Length (seconds): The duration of a cycle if the Intensity Mode is set to
Cycle.
Rotator Settings
- Intensity Mode: What to decide the rotation speed based on.
- Cycle: Gradually increase and decrease over a fixed duration (determined by the Intensity
Cycle Length).
- Stroke Length: Match to the in-game stroking length (longer strokes in game = faster IRL).
- Stroke Speed: Match to the in-game stroking speed (faster in game = faster IRL).
- Intensity Scale: How much the rotation speed should be affected by the Intensity Mode.
- Intensity Cycle Length (seconds): The duration of a cycle if the Intensity Mode is set to
Cycle.
- Rotation Direction Change Chance: The direction of rotation changes with the probability of
this setting. Default is 30%.
Stroker Settings
- Intensity Mode: What to decide the stroking length based on.
- Cycle: Gradually increase and decrease over a fixed duration (determined by the Intensity
Cycle Length).
- Stroke Length: Match to the in-game stroking length (longer strokes in game = longer strokes
IRL).
- Stroke Speed: Match to the in-game stroking speed (faster in game = longer strokes IRL).
- Intensity Scale: How much the stroking length should be affected by the Intensity Mode.
- Intensity Cycle Length (seconds): The duration of a cycle if the Intensity Mode is set to
Cycle.
- Hard Sex Intensity: How fast your stroker will fall during hard sex animations. 100% is twice
as fast as 0%.
Vibrator Settings
- Intensity Mode: What to decide the top vibration strength based on.
- Cycle: Gradually increase and decrease over a fixed duration (determined by the Intensity
Cycle Length).
- Stroke Length: Match to the in-game stroking length (longer strokes in game = more vibration
IRL).
- Stroke Speed: Match to the in-game stroking speed (faster in game = more vibration IRL).
- Intensity Scale: How much the top vibration strength should be affected by the Intensity Mode.
- Intensity Cycle Length (seconds): The duration of a cycle if the Intensity Mode is set to
Cycle.
Contributing
PRs for onboarding new games are welcome. The process is relatively simple and requires barely any
coding. See the PlayHome implementation for reference. PRs for supporting new device types are also
welcome.
This mod is provided free of charge, but I do accept donations. If you'd like to boost my morale,
please check me out on Patreon.
Acknowledgements
Thanks to nhydock, hogefugamoga, RPKU, and andama777 for contributing to the project, and to my
Patreon members for their generous support.
This mod would not have been possible without the BepInEx plugin framework and, of course, the
Buttplug.io project.