Giter Club home page Giter Club logo

sauceke / lovemachine Goto Github PK

View Code? Open in Web Editor NEW
156.0 7.0 11.0 6.41 MB

Support for interactive sex toys in over 20 different Hentai games, including Koikatsu, Honey Select 2, COM3D2, Insult Order, and more.

Home Page: https://sauceke.github.io/LoveMachine/

License: GNU General Public License v3.0

C# 88.87% Inno Setup 4.57% PowerShell 0.53% Python 5.05% RobotFramework 0.98%
koikatsu koikatsu-party buttplug sex-toys bepinex bepinex-plugins honeyselect2 koikatsu-sunshine teledildonics playhome

lovemachine's Introduction

English | 日本語

LoveMachine

QA Download Patreon

Download   Watch Demo (NSFW)

Adds support for some computer-controlled sex toys in the following games:

Title Developer 🥽 VR 🖥 Desktop
AI-deal-Rays Riez-ON
AI Shoujo Illusion with AISVR
Custom Order Maid 3D 2 Kiss
Datsui Janken Visionary
Emotion Creators Illusion with EC_VR
Holy Knight Ricca Mogurasoft
HoneyCome Illgames
Honey Select Illusion
Honey Select 2 Illusion
Houkago Rinkan Chuudoku Miconisomi with AGHVR
Incubus 2: Camlann Tanpakusitsu
Insult Order Miconisomi with IOVR
Koikatsu Illusion
Koikatsu Party Illusion
Koikatsu Sunshine Illusion
Koi-Koi VR: Love Blossoms Apricot Heart
Last Evil Flametorch
Oedo Trigger CQC Software sold separately
Our Apartment Momoiro Software
PlayHome Illusion
RoomGirl Illusion
Secrossphere Illusion
Sexaroid Girl Daminz
Solas City Heroes MrZGames
Succubus Cafe Migi Studio
VR Kanojo Illusion
Writhing Play Robi

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

  • Vorze A10 Cyclone

Oscillators

ℹ️ Every supported device works with every game. No exceptions.

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.

⚠ The IL2CPP plugins (RoomGirl, Holy Knight Ricca) are not compatible with other BepInEx plugins at the moment. To use LoveMachine in IL2CPP games, you'll have to remove the BepInEx folder if there is one (thus also removing all other mods from the game), before running the installer.

How to use

  1. Open Intiface Central.
  2. Click on the big Play button.
  3. Turn on the device you want to use.
  4. 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, please 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.

  • Connect: Connect or reconnect to the Intiface server.
  • Scan: Scan for devices.

General device settings (all devices):

  • 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 the device. Defaults to Auto (which means it will find the one closest to the player's balls). Can be used to re-enact TJ/FJ with alternating movement using two devices. In Koikatsu and KKS, it also tracks fondling/fingering movements.
  • 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 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.

Stroker settings:

  • Max Strokes (per minute): The maximum speed your stroker is capable of at 100% stroke length.
  • Stroke Zone / Slow: The range of the stroking motion when going slow. 0% is the bottom, 100% is the top.
  • Stroke Zone / Fast: The range of the stroking motion when going fast. 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.

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, and Custom.
  • 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.

You may also want to:

  • Save device assignments: If enabled, the Threesome Role and Body Part attributes will be saved for all devices. Disabled by default.

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).

Stroker Settings

  • Stroke Length Realism: How much the stroke length should match the animation. 0% means every stroke will use the full available length. 100% means every stroke will be scaled to its in-game length.
  • Hard Sex Intensity: How fast your stroker will fall during hard sex animations. 100% is twice as fast as 0%. I'm not responsible for any injuries that may occur due to the use of LoveMachine.
  • Orgasm Depth: The position of the stroker during orgasm.
  • Orgasm Shaking Frequency: How many strokes to do per second during orgasm.

Rotator Settings

  • Rotation Speed Ratio: The speed ratio for rotation. 0% is no rotation, 100% is full speed rotation. Default is 50%.
  • Rotation Direction Change Chance: The direction of rotation changes with the probability of this setting. Default is 30%.

Oscillation Settings

  • RPM limit: Maximum allowed rotations per minute for any device. Default is 300.

Pressure Settings

  • Enable Pressure Control: Whether to use the pressure feature of this device. On by default.
  • Pressure Mode: Determines how the pressure will be set.
    • Cycle: Gradually build up and release pressure over a fixed duration.
    • Stroke Length: Longer strokes = more pressure.
    • Stroke Speed: Faster strokes = more pressure.
  • Pressure Cycle Length (seconds): If the Pressure Mode is set to Cycle, determines the length of a buildup-release cycle in seconds.

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.

Developers

Sauceke   •   nhydock   •   hogefugamoga   •   RPKU   •   andama777 (JP translation)

Patrons

ManlyMarco   •   AbGz   •   Aftercurve   •   AkronusWings   •   Ambicatus   •   Andrew Hall   •   as a1031   •   AstralClock   •   asuka   •   Atlantic Dragon   •   Average MBT viewer   •   Benos Hentai   •   boaz   •   BOOK   •   Bri   •   butz   •   cat tail   •   CBN ヴい    •   Ceruleon   •   CJ   •   CookieMuncher   •   CROM   •   Daniel   •   DDJTK   •   dimo   •   EPTG   •   er er   •   Ergo   •   Flan   •   funnychicken   •   Gabbelgu   •   Gaku Kihara   •   gmolnmol   •   gold25   •   GOU YOSIHIRO   •   Greg   •   hiro   •   Ior1yagami   •   jason   •   Jayhawk   •   John Last   •   Junk   •   jwk   •   Kai Yami   •   KodFish   •   KTKT   •   kuni   •   Laneo   •   le d   •   mokochurin   •   Nemi   •   Nephilim Bacon   •   nppon   •   PhazR   •   Phil   •   pontatata   •   prepare55   •   purena   •   real name   •   rolandmitch   •   RP 君    •   SavagePastry   •   Sean McKagan   •   Shakes   •   Taibe   •   tanu   •   TO   •   Tom   •   TrashTaste   •   ttrs   •   tutinoko   •   uminekoZ   •   unitora   •   uruurian   •   Wel Adunno   •   Wu Lins   •   yamada tarou   •   Zesty Cucumber   •   Zijian Wang   •   Zomba Mann   •   シルバー    •   ふ    •   マラカス    •   もふさん    •   りょす け みのかわ    •   一太 川崎    •   優希 岩永    •   哲慶 宗    •   国崎往人    •   市民 藤沢    •   洋 冨岡    •   猛 羽場    •   终晓    •   郁弥 中村    •   闇《YAMI》   •   高島 渉

Acknowledgements

This mod would not have been possible without the BepInEx plugin framework and, of course, the Buttplug.io project.

lovemachine's People

Contributors

erodozer avatar github-actions[bot] avatar hogefugamoga avatar mvkvndv avatar rpku avatar sauceke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

lovemachine's Issues

Add support for aibu

  • Setting to map body parts to devices
  • Figure out a way to smooth out the choppy movement for strokers
  • Port to vibrators

[COM3D2] Emergency stop is not guaranteed to work in VR mode

I don't recall this being an issue in the VR modes of the Illusion games (I'll double check that to make sure later). But yeah, I got the crap instead of coom beaten out of me by my device. Luckily, pulling the power plug always works.

From what I've tested so far (not that much), in order for any keyboard input including the emergency stop (and restart) button to work, you need to use your VR controllers to drag that small ui menu to a place in front of you such that it is visible on your monitor. Then, you need to make sure you position the mouse such that it is not hovering over any ui buttons whilst being visible on the monitor, which will finally allow you to use keyboard input.
Since it's a keyboard and mouse issue, I don't have high hopes for a solution in the same realm. If I feel like it, I can explore some UI-based alternatives, if you don't consider it out of scope or not worth pursuing for the mod.

Adding support for OSR2/SR6 T-Codes

Hi,

sorry if its not allowed to use the issue feature for a feature request. If not wanted please delete or close.

I wanted to ask if its possible to add support for t-codes for OSR2/SR6 so it can do more than just "stroking" over intiface like it can do in Virt-A-Mate?

Thanks!

Device specific settings (attempt 2)

  • Change id to device index when buttplug-v6's static indexes come out. Stick with names, user can just rename them if uniqueness is important.
  • Move only a few settings:
    • latency
    • updates/s
    • max strokes/min
    • stroke zones
    • smooth stroking
    • vibration range
    • vibration waveform
    • the two rotator settings (maybe?) nah

Support motion blending

Motion blending is currently disabled by default, though theoretically we could calibrate for motion=0 and motion=1 and interpolate animation offset for values in-between. Needs more research.

Fix latency stutter

When latency set to positive, gradually slowing down the animation results in some jitter because the latency is converted to normalized time using speed and this is only reliable if the speed doesn't change all over the place.

The com3d2 mod seems not work with version 1.55-, maybe consider work out two version of the plugin?

When I play animation the game always show me the error:

[Error :LoveMachine] Coroutine failed with exception: System.NullReferenceException: Object reference not set to an instance of an object
at LoveMachine.COM3D2.Com3d2ButtplugController.GetFemaleBones (Int32 girlIndex) [0x00000] in :0
at LoveMachine.Core.AnimationAnalyzer+d__16.MoveNext () [0x00000] in :0
at LoveMachine.Core.CoroutineHandler.TryNext (IEnumerator coroutine, Boolean suppressExceptions) [0x00000] in :0

my game version is 1.551
Because COM3D2 works different with the version under 1.555 and above 2.0.0, maybe considered work out two version of the game?

Is OSR2 supported?

I'm uncertain if I'm doing something wrong or if Intiface Desktop isn't detecting things.

Drawing device list sometimes fails

[Error :Configuration Manager] Failed to draw setting Connected - System.ArgumentException: Getting control 3's position in a group with only 3 controls when doing repaint
Aborting
at UnityEngine.GUILayoutGroup.GetNext () [0x0009b] in :0
at UnityEngine.GUILayoutUtility.DoGetRect (System.Single minWidth, System.Single maxWidth, System.Single minHeight, System.Single maxHeight, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) [0x00046] in :0
at UnityEngine.GUILayoutUtility.GetRect (System.Single width, System.Single height, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) [0x00001] in :0
at UnityEngine.GUILayout.FlexibleSpace () [0x00049] in :0
at LoveMachine.Core.PluginInitializer.DeviceListDrawer (BepInEx.Configuration.ConfigEntryBase entry) [0x0009b] in :0
at ConfigurationManager.SettingFieldDrawer.DrawSettingValue (ConfigurationManager.SettingEntryBase setting) [0x00021] in <6617cd01f9db4f3c9563e5f888fad2ed>:0
at ConfigurationManager.ConfigurationManager.DrawSingleSetting (ConfigurationManager.SettingEntryBase setting) [0x00012] in <6617cd01f9db4f3c9563e5f888fad2ed>:0

Device specific settings

Move down to device level:

  • all stroker settings
  • all vibrator settings
  • all rotator settings

Also:

  • show disconnected devices too

Lovense Max 2 : Support air pump

Lovense max 2 have air pump that makes toy more tight or loose on the fly. I was wondering if is possible to add this support, make it tighter the deeper are.....characters inside each other...Theoretically you could reuse information used for strokers, just instead of stroking it would get tighter

Extract Animation Phase timings to external file

Currently Animation phases for strokers are hard coded in the ButtplugController.cs file. Extracting this into an external file such as an XML or JSON to be included with the plugin would allow for tweaking without having to compile, as well as lower the barrier for entry of having people contribute and test timings. This can be particularly helpful for expanding the list of supported animations to include ones that are added by extensions such as KPlug.

Confirm vibration functional for release

The most important change since 1.1.0 is the addition of vibration support, because there are only 11 automatic strokers supported by Buttplug and over 150 vibrators. This makes the mod accessible to a lot more players, hopefully.

It is also the only part of the codebase I can't test. So I want to make sure I haven't fubar'ed anything important in there. I have tested the stroking functionality on the latest build and everything, including the menu options, seems to be in working order.

@nhydock, there has been no code change since your last commit. Did vibration work OK back then? If you don't know, could you please check when you have time?

Warning messages

Warn if

  • ws connection failed
  • no device connected
  • device not linear

Make minimum stroke range player definable

As the device approaches MaxStrokesPerMinute, the stroke length decreases steadily to 70% as per the current impl.

Player should be able to change this percentage and decide where the lowest point should be.

Add dick vector (optional)

  • Helps guess leading bone more accurately
  • Lays the groundwork for detecting lateral movement (OSR2 etc.)

Fix test buttons

  • add vibrator test button
  • one test button per device
  • fix test buttons messing with other devices in same group

Can you support devices rotate ?

[Warning:ButtPlugin] Websocket error: You must send data by websocket after websocket is opened!
[Message:ButtPlugin] Warning: No devices connected to Buttplug.
[Warning:ButtPlugin] Buttplug error: {"Error":{"Id":1622452820,"ErrorCode":4,"ErrorMessage":"{"ButtplugDeviceError":"DeviceScanningAlreadyStarted"}"}}
[Message:ButtPlugin] Warning: device "Vorze A10 Cyclone SA" not supported.

I hope you can support device rotate :v

v1.2.0 checklist

  • Acceptably accurate syncing for every Receive and Masturbation animation
  • Feature freeze
  • Update readme
    • new features and settings
    • installation
    • full list of supported devices
  • Bump plugin version in code (forgot this last time)
  • QA testing
    • have fun
    • have fun with 2 devices
    • check vibration
  • Find a script to auto generate changelog gave up
  • Run release job
  • Check release job output

Koikatsu Darkness

Oddly I can't get Darkness to function with this setup, I've tried adjusting settings with no luck. Sadly I've tried to research the issue but Google isn't turning anything up.

Low frame rates cause sporadic stroker movement

Low frame rates (below ~30, around 20 10) where the animation is visibly skipping causes the stroker to move dangerously fast. Combining this with the performance hit and current lack of reliable emergency stop button in VR can cause some unpleasant surprises.

Again, I don't recall this being an issue in the Illusion games.

v2.0.0 checklist

The scope of the project has changed and the name has to change too, so this will be a major release.

  • #46
  • #48
  • Feature freeze
  • Bump assembly version
  • Update release job
    • Put output for each game into its own zip
  • QA Testing
    • KK (stroker, vibe)
    • HS2 (stroker, vibe)
  • Update readme
    • HS2 support
    • new syncing method and its quirks
    • finalize JP version
  • Run release job
  • Check release job output

Is there support for these games?

Koikatsu Sunshine (can't test VR patch as it's not released yet) ------ something has changed ?
Koikatsu Party (illusion) -----is there any support?
PlayHome (illusion) ----- is there any support?

thx.

Coroutine starvation while Settings is open

KKS, HS2: coroutines are completely ignored after the first yield, only get resumed after Settings is closed
KK: coroutines continue running but delays are ~1s longer than specified in WaitForSeconds

LoveMachine does not work

hi
I have made settings referring to the instructions, but it doesn't work.
The log shows several warnings.
Is there anything I should review in the settings?

thanks.

LogOutput.log

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.