Hi everyone,
after the development of the BepinEx Plugins for Honey Select 2 and Koikatsu Sunshine (based on the previous development from hs2_robotics for Honey Select 2: GitHub - hs2robotics/HS2_SexRobotController: Honey Select 2 Sex Robot Controller Plugin · GitHub), next in line is Aicomi. Aicomi is developed by IllGames, which to me seems more like an updated version of Koikatsu, but with some Honey Select mechanics mixed into it. So down the rabbit hole I went…
I thought Koikatsu Sunshine was a nightmare to develop, but IllCpp was a quite different beast. Also, .NET6.0 was pretty gruesome, with the Serial Port Library now being external. Fun fact: It claimed to be running under Linux - even when ran in Windows - that was a fun run trying to figure out what went wrong there. The answer? You need to define that the Library being built is supposed to run in Windows and/or Linux.
Luckily, I could still re-use most of the original codebase, which saved some time (if needing to remove all the code and then put it back step by step to figure out which line broke again counts as saving time). Jokes aside, even if it was horrid, I do think I’ve learned something doing it.
Plugin Development status
The first stable version (v1.2.8) is now available! For details on what each options do, please see the GitHub README for more details.
Features
- Support for 191 animations (based on what is available when using the
Unlock all Free-Hoption in theAC_HF Patch)- This includes 3P and 5P
- Sliders for controlling the movement and speed for the in-game loop (LoopType)
- Option to increase the Climax, to really hit that Finish line
- Option to disable the Plugin (no game restart needed, see the README for more details)
- Option to write unknown animations to file, so that you can add them yourself
- The Plugin also has a built-in exclusion list, filtering out unsupported animations
- Option to read animations from file (since I cannot guarantee everything is included)
Recommendation
If you’ve tried the plugin before this version, I recommend deleting the old config file. This file is found in .\BepinEx\config and is named AC_SexRobotController.cfg.
Known issues
- Footjob: Only one of the six footjob animations is currently supported. The reason is, that these switches feet at the end, which causes the robot to move all the way down and stay there. Pending time required and complexity, this might not be fixed.
- Handjob: For most of the Handjobs, when hitting the last third (LoopType: Orgasm), the movement is more like a shake/vibration. Given that I don’t want to add sliders for every single part being tracked, this is something that will not be fixed. The reason being for the Boobjobs it’s not a problem, it is also not a problem for the Handjobs located under
Special.
A word of warning
All of the animations which the plugin currently includes have to a large degree been tested by me, to ensure that they are moving correctly and don’t have too much unexpected variations. However, it is impossible to account for all possible scenarios and combinations, especially for animations not yet included.
Please don’t forget, that while it may start slow (it does need 1-3 seconds for some animations before the device starts to move accordingly), once you increase the speed, what may have been slow at the beginning may be too much in the end.
My recommendation is therefore to try it out first, lock the gauge/pleasure meter, increase the speed to the max. Then make small adjustments to the multipliers, to see if that results in a more pleasurable movement/speed.
Secondly, regarding VR. VR is currently untested, as this is not supported by the AC_HF Patch.
I therefore cannot guarantee that it will work with VR, nor that it will move “correctly” in VR.
Until this part of the warning is removed, consider VR to be unsupported.
Disclosure
The baseline for the development was the code for the Sex Robot Controller from hs2robotics (GitHub - hs2robotics/HS2_SexRobotController: Honey Select 2 Sex Robot Controller Plugin · GitHub).
The Plugin contains AI-generated code.
Due to the issues with the animations and objects not properly colliding/collapsing on itself in Aicomi, AI assistance (ChatGTP, Proton Lumo) was used to update the original code from v1.0/v1.1. Only the code related to updating the robot position based on the character movement in regards to the active animation playing is AI-generated. The relevant code sections are maked with #region AI_GENERATED_VARIABLES and #region AI_GENERATED in the file RobotMovement.cs.
Link to the repository:
Release notes
v1.0: Release notes
- BepinEx Plugin with Configuration menu
- Serial connection for SR6 (will most likely work for OSR+ devices too).
- Works in Linux too
- Buttons in the Config menu
- Option to write unknown animations to file (no need to search the log for them hidden positions)
- Option to read animations from file (if you’ve unlocked animations currently not present in the plugin, and the position is supported, you don’t need to wait for Plugin implementation)
- Plugin works in Main game and Free-H
- Two multipliers for L0, enabling the possibility to switch between fast and slow mode
- Separate button in the Scene GUI to switch between the multiplier
- Keyboard shortcuts to (dis)connect serial device, increasing/decreasing multiplier (currently only the first one) and switching L0 limiter
- The positions I’ve currently unlocked is included in the Plugin (including some taken from the translation files)
v1.0: Known issues
Movement for most, if not all of the animations are currently really bad (for some, it doesn’t move at all). The reason for this, at least as far as I can observe visually, is that for some animations, the penis doesn’t penetrate properly (the tip remains outside the mouth/vagina in some poses).
This in turn results in erroneous calculations, as the Penis base, the tip and balls are used to calculate the distance of the movement.
What I’m planning for later versions is to potentially implement a check which checks the three Axis’s and potentially takes a set value to “correct” the wrong/missing values. As an example, for those animations where the SR6 moves somewhat decently, the X/Y has a diff of 0.11 - 0.20 from base to tip. Compared to those where it doesn’t move at all, where the difference is 0.01 - 0.04.
Increasing the L0 multiplier might work for some animations, but I definitely do not recommend it. The speed at the end makes it move too fast, which is why I advice against it.
v1.1: Release notes
Added a check comparing the known penis length against the the currently measured length (distance between Penis base and tip). If the difference between the two is so large that the difference is higher than the current length, the X-Axis value is replaced.
v1.1: Known issues
- Not all animations uses the X-Axis, for some, the Y-Axis is being used ((currently only checked and verified it’s the case for the “Sideways position”).
- For some animations, the movement is really jerky or “hammering” (fast up, fast down).
Improving and fixing these will be the focus for the coming versions.
v1.2.1: Release notes
- Stable movement across all states (Idle, Active, Orgasm) (AI-Generated code for movement updates)
- When Idle, the movement is slow, barely noticeable. Same is true for orgasm, but it shakes more (due to check:
IsNowOrgasm). - New L0 Stroker adjustment sliders (movement range and speed)
- New buttons in the Settings menu for the new L0 multipliers
- When switching to an unsupported animation, instead of getting locked, the SR6 “returns home”.
- When enabling the Limiter and using the Keyboard shortcuts, the Limiter and not the default L0 gets updated.
- Updated the BepinEx Config for the Plugin and the order in which the options are displayed.
- Added disclosure to README in regards to code base and use of AI to fix the movement issues
Remarks/Known Issues:
- The Speed on FINISH is noticeably slower/softer than the max speed on MEDIUM.
- FINISH only goes from 0 → 1 (compared to SLOW: 0 → 1, MEDIUM: 1 → 2)
- The
Read animations from fileoption has been temporarily deactivated.- For safety reasons, this will stay deactivated until I’ve tested a larger base of the animations, to ensure none of them leads to unexpected movement.
- Animations using unsupported body parts leads to no movement (e.g. “Glans Play”, “Standing Handjob” and “Lick*” animations).
- Animations switching between body parts (e.g. Left hand, both hands, then ending with right hand) only has partial movement.
Planned:
- Option for disabling the Plugin.
- Option to exclude the L0 Multipliers in the Settings menu.
- Adding support for more 2P animations
v1.2.2-v1.2.7: Release notes
Version 1.2.2 only included the option to disable the plugin and remove the multipliers from the settings menu (these were removed in later versions). v1.2.3-v1.2.7 was never published, as these were only internal development versions. However, the code for each version is committed and available on GitHub.
Screenshots
Configuration Settings for Plugin
Settings menu buttons
Additional notes
What is not supported?
- The following animations are not included nor are they planned to be implemented:
- Fondling
- Lesbian
- Female solo (Special)
- Tentacles (Special, Scene: Ruins)
- Bluetooth/Wi-Fi connection is not supported, will also not be implemented (serial only).
- Studio is not supported nor have I planned to implement this.
- VR is currently not supported, but it is planned.
- The last time I checked, the current
AC_HF Patchwas incompatible with the latest IllGames patch.
- The last time I checked, the current
How do I add the Plugin to Aicomi?
The Plugin comes with two libraries (AC_SexRobotController.dll and System.IO.Ports.dll), both of these are required to use the Plugin.
Please note that you only need to replace the main Plugin for each new Plugin update, the System.IO.Ports.dll you only need to download once.
However, to ensure everyone has access to both libraries, I’ll always include both in each Release.
NOTE: The library System.IO.Ports.dll is not developed by me, it is a Library developed by Microsoft, which since .NET6.0 is required for serial communication.
Once you’ve downloaded the plugin, you need to create a folder in your Aicomi BepinEx Plugins (.\BepinEx\Plugins) directory called AC_SexRobotController.
Example: If your game installation is located in C:\IllGames\Aicomi, then this is the path in which the folder needs to be created: C:\IllGames\Aicomi\BepinEx\Plugins.
Then add both libraries (AC_SexRobotController.dll and System.IO.Ports.dll) into this folder.
Can I use this in Linux?
Short answer: Yes, using Steam + Proton.
To ensure the translations are loaded, add the following to Launch options:
WINEDLLOVERRIDES="winhttp=n,b" %command%
Steam menu → Games → Add Non-steam Game to my library → <addYourGame>.
After adding: Properties → Compatibility → Steam Proton (I recommend 10 or 11).
The COM Port can be a tad more tricky, as per default it usually sets my SR6 to be mapped to COM33. Further complicating things is that sometimes it switches between /dev/ttyUSB0 and /dev/ttyUSB1 if the cable is temporarily removed. I have therefore added a udev rule to map my SR6, which in turn I’ve used to map the COM Port in Steam.
Create UDEV RULE
Get the device info:
lsusb | grep -i uart
Bus 003 Device 005: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
udevadm info --attribute-walk /dev/bus/usb/003/005 > /tmp/sr6.txt
cat /tmp/sr6.txt |less
KERNEL=="3-1"
SUBSYSTEM=="usb"
DRIVER=="usb"
...
ATTR{idProduct}=="ea60"
ATTR{idVendor}=="10c4"
ATTR{ltm_capable}=="no"
ATTR{manufacturer}=="Silicon Labs"
ATTR{product}=="CP2102 USB to UART Bridge Controller"
ATTR{serial}=="0001"
...
Create a rule:
sudo vim /usr/lib/udev/rules.d/60-sr6.rules && sudo udevadm control --reload-rules
Content of /usr/lib/udev/rules.d/60-sr6.rules:
# deviceID 10c4:ea60
# SYMLINK: /dev/sr6USB
# Kernel adjusted, see:
# https://askubuntu.com/questions/1021547/writing-udev-rule-for-usb-device
KERNEL=="ttyUSB*" SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="sr6USB", ATTRS{serial}=="0001", ATTRS{product}=="CP2102 USB to UART Bridge Controller"
Trigger rule (optional, will cause a slight lag for the next 5-10 seconds):
sudo udevadm trigger
Verify rule was executed successfully:
ll /dev/sr6USB
lrwxrwxrwx 1 root root 7 20. Dez 09:35 /dev/sr6USB -> ttyUSB0
Then, you need to find the identifier for the game you previously added.
cd $HOME/.local/share/Steam/steamapps/compatdata/
Find the folder containing the game (mine is without spaces)
grep -ri 'aicomi' -m1
As an example, let’s say my ID for Aicomi is ‘123’:
steamID=123
vim $HOME/.local/share/Steam/steamapps/compatdata/$steamID/pfx/system.reg
Search for the following line:
[Software\\Wine\\Ports]
Below this line (or below the content, if any), add the following:
[Software\\Wine\\Ports]
"com1"="/dev/sr6USB"
"com33"="/dev/sr6USB"
AI-Generated code for UpdateRobotPosition()
Attempting to figure out what caused the invalid movement in the v1.0 was hard. After generating log entries with 20k+ lines of log (for 68 animations), it was too hard to go through it manually. I ended up feeding the numbers to an AI, to see if a pattern was recognizable. Although for some animations, there was a clear number (X: 0.187f, Y: 0.15f), for others there were evened out. Adding into the mix comes the whole “Inserted” or “Idle”?
After several “improvements”, the AI also stated, that something seemed off, that the tip of the Penis seemed to “collapse” on itself (which for some animations is visible). Long story short, the amount of iterations with adjustments, improvements and fixes lead to something which actually works. I’ve added this to the GitHub README, the AI-Generated code is marked with #region AI_GENERATED.
Plugin (both are required, rename the files by removing the *.txtfrom the filename):
AC_SexRobotController.dll.txt (69.5 KB)
System.IO.Ports.dll.txt (85.8 KB)

